最近docker composeを利用してコンテナ構築をしたり、コンテナ操作をしたりするので、まとめます。
Docker composeとは
Docker composeとは簡単に複数のコンテナ操作を行うことができるツールです。
Docker composeを用いてコンテナ操作を行うには、docker-compose.yamlを作成します。
コンテナ自体の定義はDockerfileに記載しますが、そのコンテナをどういった設定で起動するかなどはdocker-compose.yamlファイルに記載します。
※本記事の趣旨とはズレるため、ファイルの例は割愛
コンテナのビルド
コンテナのビルドとはコンテナイメージを作成するという意味です。
イメージは必ず一意に作成され、そのイメージからコンテナを作成すれば、必ず同じ状態のコンテナであることが保証できます。
以下のコマンドにてコンテナのビルドが可能です。
cd [docker-compose.yamlが存在するパス]
docker compose build
コンテナイメージを確認は以下のコマンドで可能です。
docker images
コンテナの起動
ビルドによって作成されたイメージを利用してコンテナ起動ができます。
docker compose run [コンテナ名]
ビルドと起動を一発でやるコマンド
上記のbuildとrunを利用するケースは以下を想定しています。
・dockerイメージを作成し、dockerリポジトリにpush
・コンテナを起動したい環境にてリポジトリからイメージをpull
・runコマンド実行
一方で、リポジトリを経由せず直接docker-compose.yamlから起動を行いたい場合があると思います。
この場合はイメージ作成、コンテナ起動を一発で行うコマンドを利用できます。
docker compose up --build
※--buildはオプションであり、キャッシュを利用せずにイメージの作成からやってくれるものです。
コンテナの状態を確認
コンテナの状態を確認するコマンドは以下です。
docker ps -a
起動しているコンテナが一覧となって表示されます。
コンテナにログイン
コンテナの中身を確認したい場合、コンテナにログインする必要があると思います。
その場合は、以下のコマンドを利用します。
docker exec -it [コンテナID] /bin/bash
コンテナにログインし、操作ができます。
コンテナからホストにファイルをコピー
コンテナにあるログファイルなどをホストにコピーしたい場合があると思います。
その場合は以下のコマンドが利用できます。
docker cp [コンテナID]:[コピー元のファイルパス] [コピー先のファイルパス]
上記のようにすると簡単にコピーができます。
ホストからコンテナにファイルをコピー
上記の逆です。
docker cp [コピー元のファイルパス] [コンテナID]:[コピー先のファイルパス]
コンテナの停止、削除
コンテナを停止する場合は以下のコマンドを利用します。
docker stop [コンテナID]
コンテナ自体の削除をしたい場合は以下のコマンドを利用します。
ちなみに、起動しているコンテナは削除できないので、コンテナ停止→コンテナ削除の順に実行する必要があります。
docker rm [コンテナID]
最後にコンテナイメージの削除をします。
コンテナイメージはコンテナのビルドを行うたびに生成されるので、放置しておくとストレージの圧迫の原因になります。
私の場合、開発時やテスト時に定期的にイメージを確認し、不要なものは削除するような運用が必要でした。
以下のコマンドが利用できます。
docker images // コンテナイメージ確認
docker rmi [コンテナイメージID]
docker rmi [コンテナイメージID] [コンテナイメージID] [コンテナイメージID]
// 同時に複数の削除も可能
sudo docker image prune
// 古いimageを一回で消すことも可能
※rmと似てますが、remove imageということでrmi(と思ってる)
私が開発でdocker系を利用した際は、基本的に上記のコマンドを利用することが多かったです。
良かったら参考にしてみてください。
以上。