【15】【Docker】docker-composeを使う。 コマンドの一覧表
docker_composeを使う
この記事にでおいて2つのコンテナを使ってwordpress環境を構築しました。
主な問題点
主な問題点を列挙します。
どちらかを起動し忘れると動作しない。
起動する順番を間違えると動作しない。wordpressの場合はまずMySQLを構築する必要がある。
コンテナ起動の際のオプションが多く、煩雑である。
DockerCompose
これらの問題をDockerComposeが解決してくれます。
DockerComposeとは、あらかじめ、コンテナの起動方法、ボリューム、ネットワーク構成などを書いた定義ファイルを使って、まとめて実行する方法です。
docker-compose.ymlという定義ファイルを使って行います。
DockerComposeが解決するもの
長い引数からの解放
複数コンテナの連動
まとめての停止・破棄
コンテナ起動時の初期化やコピー
Docker Composeはpython製
Dockerの9割はgo言語ですがDockerComposeは違います。
Docker ComposeはDocker操作の補佐をするPython製のツールなんです。
よって、DockerEngineとは別にインストールが必要です。
また、PythonがなければPythonもインストールする必要があります。
Pythonをインストール
sudo apt install -y python3 python3-pip
Docker Composeをインストール
sudo pip3 install docker-compose
docker-composeを実行する
作業用のディレクトリを作り、docker-compose.ymlファイルを作ります。
この記事で行ったWordpressコンテナを構築しましょう。
下記のようなに編集します。
version: "3"
services:
wordpress-db:
image: mysql:5.7
networks:
- wordpressnet
volumes:
- wordpress_db_volume:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpassword
MYSQL_DATABASE: wordpressdb
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: wordpresspass
wordpress-app:
depends_on:
- wordpress-db
image: wordpress
networks:
- wordpressnet
ports:
- 8080:80
restart: always
environment:
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_NAME: wordpressdb
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: wordpresspass
networks:
wordpressnet:
volumes:
wordpress_db_volume:
次にdocker-composeコマンドを実行します。
docker-compose up -d
これでWordpressコンテナが構築できました。
docker_compose_ymlで行った内容は、この記事の内容と同じです。
この記事の構築手順を理解していれば、今回のdocker_compose_ymlの内容も大まかに理解できると思います。
docker_compose_ymlの詳細な内容、Composeファイルの構造と例はこの記事を見て下さい。(執筆中)
最後に、docker-composeコマンドのオプションです。
docker-composeオプション
up
コンテナを作成し起動する
down
コンテナなど(ボリューム、イメージ)をまとめて停止する
ps
コンテナの一覧表示
config Compose
ファイルの確認と表示
logs
ポートの割り当てを表示する
start
サービスの開始
stop
サービスの停止
kill
コンテナを強制停止
exec
コマンドの実行
run
コンテナを実行
create
コンテナを作成する
restart
サービスを再起動する
pause
サービスを停止する
unpause
サービスを再開する
rm
停止中のコンテナを削除する
build
サービス用のイメージを構築する
pull
サービス用のイメージをダウンロードする
scale
サービス用のコンテナの数を指定する
events
コンテナからリアルタイムイベントを受信する
help
へルプ表示
upオプションにはさらにサブオプションがあります。
-d
デタッチモード(バックグラウンド)で実行する
--no-deps
リンクしたサービスを表示しない
--force-recreate
コンテナを再生成する
--no-create
イメージが見つからなくてもビルドしない
--no-build
コンテナを開始前にイメージをビルドしない
--build
コンテナを開始前にイメージをビルドする
--abort-on-container-exit
コンテナが1つでも停止したら、全てを停止する
-t
タイムアウト設定
--remove-orphans Compose
ファイルで定義されていないサービス用コンテナを排除
downオプションも同様ににサブオプションがあります。
-d
デタッチモード(バックグラウンド)で実行する
--no-deps
リンクしたサービスを表示しない
--force-recreate
コンテナを再生成する
--no-create
イメージが見つからなくてもビルドしない
--no-build
コンテナを開始前にイメージをビルドしない
--build
コンテナを開始前にイメージをビルドする
--abort-on-container-exit
コンテナが1つでも停止したら、全てを停止する
-t
タイムアウト設定
--remove-orphans Compose
ファイルで定義されていないサービス用コンテナを排除
--rmi all
破棄後にイメージも削除する。
--rmi local
カスタムタグがないイメージのみ削除する
-v
volumesに記載されているvolumeを削除する。eternalで設定されている場合は異なる。
--remove-orphans
docker-compse.yml で定義していないサービスのコンテナも削除する
参考文献
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
最後に
私がブログを書く目的は、素晴らしい本や、素晴らしい方々の技術記事を知って頂きたいからです。ぜひ、上記の参考文献を見て下さい。(noteなので広告とかは一切ありません。)
現在、株式会社grabssに行くために最後の悪あがきをしています!!
現在の進行状況
この記事は15件目の投稿。目標まで後35件。
よろしければ、スキボタン及びサポートお願いします。勉強の励みになります。