$ docker-machine version
docker-machine version 0.16.1, build cce350d7
docker desktop(mac/windows)はdocker-machineが同時にインストールされています。
kubernetes同様、manager node-worker nodeという構成が可能ですが、
今回はmanagerノードだけ(シングルノード)の最小構成とします。
$ docker swarm init --listen-addr 127.0.0.1
(以下、node参加用のトークンが表示される)
version: '3'
services:
# DB
jcbl_db:
#container_name: jcbl_db
image: mysql:5.7.24
ports:
- 3310:3306
environment:
- MYSQL_ROOT_PASSWORD=********
- TZ=Asia/Tokyo
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
volumes:
- ./sql:/docker-entrypoint-initdb.d
- ./mysql/data:/var/lib/mysql
jcbl_node:
image: node:10.15
command: [sh, -c, npm install && npm start]
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
volumes:
- ../:/src
working_dir: /src
tty: true
ports:
- "3000:3000"
links
は使用できません。
- Compose file version3のリファレンス#deploy
$ docker stack deploy --compose-file docker-compose.yml [STACK名]
--compose-file
オプションでcomposeファイルを指定。STACK名
はデプロイするまとまりの名称。削除する際や一覧を呼び出す際に使う。試しに上記ymlのnodeバージョンを10.15
から10.16
に変えてdocker stack deploy
コマンドを実行する。
1. node10.16コンテナが新規作成され起動と同時に10.15コンテナが1つ終了する
2. 10s(delay
で指定した時間)後に1と同様に2つめのコンテナも更新される。
docker service rollback [サービス名]
を実行。
rolling update同様、新しいコンテナ作成→起動→旧コンテナ終了。
やはり残骸が残るので定期的にpruneする必要がありそう。
$ docker service rollback stackdemo_jcbl_node
stackdemo_jcbl_node
rollback: manually requested rollback
overall progress: rolling back update: 2 out of 2 tasks
1/2: running
2/2: running
verify: Service converged
$ docker stack rm [STACK名]
GUIでdockerを管理できるツール。CLIに慣れたら使ってみてもよいかも。
- portainer.io
- 自宅での技術検証がより楽しくなる? portainer で Docker コンテナ管理
- Docker を管理する Webアプリ Portainer を Docker Compose で起動する
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント