はじめに
- ConohaのVPSを借りたのでDockerを入れようと思い、公式のチュートリアルをやってみようと思ったのでございます
環境
- VirtualBox 5.1.22 r115126
- ポートフォワーディング設定でアクセスできるようにしています
- Ubuntu16.04.2 LTS
- Docker version 17.03.1-ce, build c6d412e
- Dockerのインストールについては公式手順に沿って実施しております
チュートリアル
- Part 1: Orientation and Setup
- Part 2: Containers
- Part 3: Services
- Part 4: Swarms
- Part 5: Stacks
- Part 6: Deploy your app
Part 3: Services
docker-compose.ymlの作成
docker-compose.yml
version: "3"
services:
web:
# Part2で作成したdocker cloudのイメージを使用
image: tocyuki/repository:tag
deploy:
# 5台作成する
replicas: 5
resources:
limits:
# 最大10%までのCPU利用
cpus: "0.1"
# 最大50MBまでのメモリ利用
memory: 50M
restart_policy:
condition: on-failure
ports:
# ホストの80番ポートをコンテナの80番ポートへマッピング
- "80:80"
networks:
- webnet
networks:
webnet:
docker swarm initの実施
- このコマンドを実行することで、実行したホストをdocker swarmのマネージャーホストとすることができる
tocyuki@vm01:~/docker_tutorial/part3$ docker swarm init
Swarm initialized: current node (mfb7mslrjr6qbkkzi42x9525p) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-3562frmookuker51re8lelyaewh1c37g690yodforc13gxhby6-3gntbpftwe8br3h225i5ew7ul \
10.0.2.15:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
アプリの実行
- getstartedlabという名前でアプリをswarmモードで実行
tocyuki@vm01:~/docker_tutorial/part3$ docker stack deploy -c docker-compose.yml getstartedlab
Creating network getstartedlab_webnet
Creating service getstartedlab_web
コンテナの起動を確認
コマンドラインでの確認
tocyuki@vm01:~/docker_tutorial/part3$ docker stack ps getstartedlab
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
msazmhxdrs9z getstartedlab_web.1 tocyuki/repository:tag vm01 Running Running 4 seconds ago
4bz3usxe0fpa getstartedlab_web.2 tocyuki/repository:tag vm01 Running Running 4 seconds ago
js4j0zhxaydu getstartedlab_web.3 tocyuki/repository:tag vm01 Running Running 5 seconds ago
5rdhkuc5xkns getstartedlab_web.4 tocyuki/repository:tag vm01 Running Running 4 seconds ago
p3tqe5lhu9zg getstartedlab_web.5 tocyuki/repository:tag vm01 Running Running 4 seconds ago
tocyuki@vm01:~/docker_tutorial/part3$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49ffec8732f5 tocyuki/repository@sha256:1ae82dcb5528f752c9c1fc57a55ec0dde097ee2b119011ed2d99b3b9e81228d8 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.4.5rdhkuc5xknsyeru01160pang
7f105ebe27ed tocyuki/repository@sha256:1ae82dcb5528f752c9c1fc57a55ec0dde097ee2b119011ed2d99b3b9e81228d8 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.5.p3tqe5lhu9zgh1atrwe7svk59
485d12957ac6 tocyuki/repository@sha256:1ae82dcb5528f752c9c1fc57a55ec0dde097ee2b119011ed2d99b3b9e81228d8 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.1.msazmhxdrs9z75379ojwkgmgj
a55408bffb42 tocyuki/repository@sha256:1ae82dcb5528f752c9c1fc57a55ec0dde097ee2b119011ed2d99b3b9e81228d8 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.3.js4j0zhxaydun9wwv9xqtew5c
c2d0e23af466 tocyuki/repository@sha256:1ae82dcb5528f752c9c1fc57a55ec0dde097ee2b119011ed2d99b3b9e81228d8 "python app.py" 3 minutes ago Up 3 minutes 80/tcp getstartedlab_web.2.4bz3usxe0fpaxsy0q9qi3ai53
WEBブラウザからの確認
- 更新していくと、各コンテナに負荷分散されているのがわかる
アプリの終了
tocyuki@vm01:~/docker_tutorial/part3$ docker stack rm getstartedlab
Removing service getstartedlab_web
Removing network getstartedlab_webnet
Part3で学習したコマンドのチートシート
# List all running applications on this Docker host
docker stack ls
# Run the specified Compose file
docker stack deploy -c <composefile> <appname>
# List the services associated with an app
docker stack services <appname>
# List the running containers associated with an app
docker stack ps <appname>
# Tear down an application
docker stack rm <appname>