0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Docker】docker composeを使ってコンテナ構築、管理をしてみる

Last updated at Posted at 2024-01-05

最近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系を利用した際は、基本的に上記のコマンドを利用することが多かったです。
良かったら参考にしてみてください。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?