- コンテナの基本操作
- Docker Container コマンド
- Docker Run コマンドの活用
- イメージの操作
- ボリュームの活用
- Docker Compose コマンド
- Dockerfile の例
- Log Management
docker-compose.yml
が存在するディレクトリで以下のコマンドを実行して、コンテナをバックグラウンドで起動します。
docker-compose up -d
起動中のコンテナを停止するには、以下のコマンドを使用します。
docker-compose down
不要になった停止中のコンテナを削除するには、以下のコマンドを使用します。
docker rm $(docker ps -a -f status=exited -q)
使われていない Docker ネットワークをクリーンアップするには、以下のコマンドを実行します。
docker network prune
以下に docker container
コマンドに関するチートシートを作成しました。
起動中のコンテナの一覧を表示するには、以下のコマンドを使用します。
docker container ls
すべてのコンテナ(停止中のコンテナも含む)の一覧を表示するには、-a
オプションを追加します。
docker container ls -a
停止中のコンテナを再起動するには、以下のコマンドを使用します。
docker container start <コンテナ名またはID>
複数のコンテナを同時に起動する場合は、コンテナ名または ID をスペースで区切って指定します。
docker container start <コンテナ名またはID1> <コンテナ名またはID2>
起動中のコンテナを停止するには、以下のコマンドを使用します。
docker container stop <コンテナ名またはID>
複数のコンテナを同時に停止する場合も、コンテナ名または ID をスペースで区切って指定します。
docker container stop <コンテナ名またはID1> <コンテナ名またはID2>
通常の停止ができない場合、SIGKILL
シグナルを送って強制的に停止するには、kill
コマンドを使用します。
docker container kill <コンテナ名またはID>
新しいコンテナを作成するには、create
コマンドを使用します。
docker container create --name <コンテナ名> <イメージ名>
停止中のコンテナを削除するには、以下のコマンドを使用します。
docker container rm <コンテナ名またはID>
すべての停止中のコンテナを一括で削除するには、以下のコマンドを使用します。
docker container prune
コンテナのログを表示するには、以下のコマンドを使用します。
docker container logs <コンテナ名またはID>
特定のコンテナに関する詳細情報を表示するには、以下のコマンドを使用します。
docker container inspect <コンテナ名またはID>
コンテナ内でシェルを開くには、exec
コマンドを使用します。-it
オプションを使うことで、インタラクティブモードでシェルを実行できます。
docker container exec -it <コンテナ名またはID> <シェルコマンド>
例: Bash シェルを起動する場合
docker container exec -it <コンテナ名またはID> bash
コンテナのリソース使用量(CPU、メモリなど)をリアルタイムで監視するには、以下のコマンドを使用します。
docker container stats <コンテナ名またはID>
すべてのコンテナのリソース使用量を表示するには、コンテナ名を省略します。
docker container stats
特定の名前やパターンにマッチするコンテナを検索するには、以下のコマンドを使用します。
docker container ls --filter "name=<名前またはパターン>"
以下のコマンドは、httpd:2.4
イメージを使用して Apache サーバーをバックグラウンドで起動します。
docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
オプションの説明:
-d
: バックグラウンドでコンテナを実行-t
: 疑似端末を有効化-i
: 標準入出力とエラー出力をインタラクティブに受け付ける$PWD
: Docker コマンド実行時のホスト側のカレントディレクトリ
Alpine Linux コンテナを起動し、その中に入るには以下のコマンドを使用します。
docker run --rm -it alpine ash
-
Dockerfile が存在するディレクトリでイメージを作成:
docker build -t selenium-app .
-
作成したイメージからコンテナを生成:
docker create --name selenium-app-container selenium-app
-
コンテナ内でイメージを実行し、中に入る:
docker run -it selenium-app
または、Docker Compose のコンテナでシェルに入るには:
dc exec -it graphanalisiscrawler-db bash
以下に、イメージの操作に関するセクションを追加しました。
現在ローカルにある Docker イメージを一覧表示するには、以下のコマンドを使用します。
docker images
不要な Docker イメージを削除するには、以下のコマンドを使用します。
docker rmi <イメージIDまたはイメージ名>
複数のイメージを一度に削除するには、以下のようにコマンドを使用します。
docker rmi $(docker images -q)
Docker Hub などのリポジトリからイメージを取得するには、以下のコマンドを使用します。
docker pull <イメージ名>
例として、nginx
イメージをプルする場合は次のようにします。
docker pull nginx
Dockerfile
を使用してイメージをビルドするには、以下のコマンドを使用します。
docker build -t <イメージ名> <Dockerfileのディレクトリ>
例:
docker build -t my-app .
既存のイメージに新しいタグを付けるには、以下のコマンドを使用します。
docker tag <イメージIDまたはイメージ名> <リポジトリ名>:<タグ名>
例:
docker tag my-app:latest my-app:v1.0
タグ付けされたイメージを Docker Hub にプッシュするには、以下のコマンドを使用します。
docker push <リポジトリ名>:<タグ名>
例:
docker push my-app:v1.0
特定のイメージに関する詳細情報を確認するには、以下のコマンドを使用します。
docker inspect <イメージIDまたはイメージ名>
不要なイメージを一括でクリーンアップするには、以下のコマンドを使用します。
docker image prune
オプション -a
を追加すると、すべての未使用イメージが削除されます。
docker image prune -a
以上のセクションをチートシートに追加することで、Docker イメージの操作に関する基本的なコマンドが網羅されます。
-v mysqlvolum:/var/lib/mysql
は--mount type=volume,src=mysqlvolum,dst=/var/lib/mysql
と同等です。-v "$PWD":/usr/local/apache2/htdocs
は--mount type=bind,src="$PWD",dst=/usr/local/apache2/htdocs
と同等です。
Git-Bash 上でのディレクトリパス問題を回避するための例です。
docker run -it -v "/$PWD/build":/app-selenium-quick-start-java/build selenium-app bash
-
ボリュームを作成する:
docker volume create --name mysqlvolum
-
ボリュームの一覧を表示する:
docker volume ls
-
ボリュームの詳細を確認する:
docker volume inspect mysqlvolum
-
コンテナを停止する:
docker-compose stop
-
強制的にコンテナを削除する:
docker-compose rm -f
-
キャッシュを使わずにイメージをビルドする:
docker-compose build --no-cache
-
コンテナをバックグラウンドで起動する:
docker-compose up -d
-
停止したコンテナを削除する:
docker rm $(docker ps -a -f status=exited -q)
以下は、Go 言語を使用したシンプルな Dockerfile
です。
# ベースイメージとしてGolangを使用
FROM golang:1.9
# /echo ディレクトリを作成
RUN mkdir /echo
# ホストからコンテナにファイルをコピー
COPY maingo /echo
# コンテナ実行時にgo runを実行
CMD ["go","run", "/echo/main.go"]
以下は、Java を使用した Dockerfile
の例です。
FROM adoptopenjdk/openjdk11:alpine-slim
-
コンテナのログを表示する:
docker logs <コンテナ名またはID>
特定のコンテナの標準出力(stdout)と標準エラー出力(stderr)のログを表示します。
-
ログをリアルタイムでフォローする:
docker logs -f <コンテナ名またはID>
-f
オプションを使用すると、リアルタイムでログをフォローできます。 -
特定の行数分のログを表示する:
docker logs --tail <行数> <コンテナ名またはID>
直近の指定行数分のログを表示します。
-
特定の時点からログを表示する:
docker logs --since <タイムスタンプ> <コンテナ名またはID>
指定したタイムスタンプからのログを表示します。タイムスタンプのフォーマットは、
2013-01-02T13:23:37
のように指定します。 -
タイムスタンプ付きでログを表示する:
docker logs -t <コンテナ名またはID>
各ログエントリーにタイムスタンプを付けて表示します。
-
標準出力または標準エラーのみを表示する:
- 標準出力(stdout)のみ表示:
docker logs --stdout <コンテナ名またはID>
- 標準エラー(stderr)のみ表示:
docker logs --stderr <コンテナ名またはID>
- 標準出力(stdout)のみ表示:
Docker では、ログの出力方法を制御するためにログドライバーを指定できます。
-
コンテナ作成時にログドライバーを指定:
docker run --log-driver=<ドライバー名> <イメージ名>
例:
docker run --log-driver=json-file <イメージ名>
-
使用可能なログドライバー:
json-file
(デフォルト)syslog
journald
gelf
fluentd
awslogs
splunk
etwlogs
gcplogs
logentries
-
コンテナ起動後にログドライバーを確認する:
docker inspect --format='{{.HostConfig.LogConfig.Type}}' <コンテナ名またはID>