- コンテナの基本操作
- 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 nginxDockerfile を使用してイメージをビルドするには、以下のコマンドを使用します。
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(デフォルト)syslogjournaldgelffluentdawslogssplunketwlogsgcplogslogentries
-
コンテナ起動後にログドライバーを確認する:
docker inspect --format='{{.HostConfig.LogConfig.Type}}' <コンテナ名またはID>