Dockerの基本的なコマンドを以下に分類して紹介します。これらのコマンドを使えば、イメージやコンテナの操作、ネットワーク設定、ボリューム管理などが可能です。
Docker公式ドキュメント(英語)
https://docs.docker.com/
Docker公式ドキュメント(日本語)*最新版は英語版を参照
https://docs.docker.jp/
1. イメージの操作
1-1. イメージの検索
Docker Hubからイメージを検索します。
docker search <イメージ名>
例:
docker search nginx
1-2. イメージのダウンロード
Docker Hubからイメージをダウンロードします。
docker pull <イメージ名>
例:
docker pull nginx
1-3. イメージの一覧表示
ローカルにあるDockerイメージを表示します。
docker images
1-4. イメージの削除
指定したイメージを削除します。
docker rmi <イメージIDまたはイメージ名>
2. コンテナの操作
2-1. コンテナの起動と作成
新しいコンテナを作成して起動します。
docker run [OPTIONS] <イメージ名> [コマンド]
例:
docker run -d --name my-nginx -p 8080:80 nginx
2-2. コンテナの一覧表示
稼働中のコンテナのみ表示:
docker ps
すべてのコンテナ(停止中含む)を表示:
docker ps -a
2-3. コンテナの再起動
停止中のコンテナを再起動します。
docker start <コンテナIDまたは名前>
2-4. コンテナの停止
稼働中のコンテナを停止します。
docker stop <コンテナIDまたは名前>
2-5. コンテナへの接続
既存のコンテナ内で対話的にコマンドを実行します。
docker exec -it <コンテナIDまたは名前> <コマンド>
例:
docker exec -it my-nginx /bin/bash
2-6. コンテナの削除
停止中のコンテナを削除します。
docker rm <コンテナIDまたは名前>
3. コンテナの情報確認
3-1. コンテナの詳細情報を確認
docker inspect <コンテナIDまたは名前>
3-2. コンテナのログ確認
docker logs <コンテナIDまたは名前>
3-3. コンテナのリソース使用状況を確認
docker stats
4. ネットワークの操作
4-1. ネットワーク一覧を表示
docker network ls
docker network ls
コマンドは、Dockerで作成されたネットワークを一覧表示するためのコマンドです。Dockerネットワークは、コンテナ間の通信を管理するための仮想ネットワークを提供します。
出力例:
NETWORK ID NAME DRIVER SCOPE
e4d3e4e33b7c bridge bridge local
56bfc88b8f12 host host local
f4a5b9e1c1d8 none null local
a7c8e4e3c1b0 my_project_default bridge local
出力項目の説明
項目 | 説明 |
---|---|
NETWORK ID | ネットワークの一意なID。Dockerが内部的に管理します。 |
NAME | ネットワークの名前。ユーザーが指定したものや自動生成された名前が表示されます。 |
DRIVER | ネットワークのドライバの種類(通信の方式)。例: bridge , host , overlay , null など。 |
SCOPE | ネットワークのスコープ。local (ローカル)、global (スウォーム用)、swarm (スウォーム専用)。 |
4-2. ネットワークの詳細情報の確認
ネットワークの詳細情報を確認するには docker network inspect
を使用します。
コマンド例
docker network inspect my_project_default
出力例
[
{
"Name": "my_project_default",
"Id": "a7c8e4e3c1b0",
"Created": "2024-11-26T12:45:38.841Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "192.168.1.0/24"
}
]
},
"Containers": {
"c4b8c8f5d1e9": {
"Name": "my-container",
"EndpointID": "c9b2f13a8978a00",
"MacAddress": "01:11:c0:a8:01:02",
"IPv4Address": "192.168.1.2/24",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
項目の説明
項目 | 説明 |
---|---|
Name | ネットワークの名前。 |
Driver | ネットワークドライバの種類。 |
Containers | ネットワークに接続されているコンテナ情報。 |
Subnet | サブネット情報(IPアドレス範囲)。 |
IPv4Address | 各コンテナに割り当てられたIPv4アドレス。 |
4-2. ネットワークを作成
docker network create <ネットワーク名>
4-3. コンテナを特定のネットワークに接続
docker network connect <ネットワーク名> <コンテナIDまたは名前>
4-4. ネットワークを削除
docker network rm <ネットワーク名>
5. ボリュームの操作
5-1. ボリューム一覧を表示
docker volume ls
5-2. ボリュームを作成
docker volume create <ボリューム名>
5-3. ボリュームを削除
docker volume rm <ボリューム名>
6. その他の便利なコマンド
6-1. Dockerのバージョンを確認
docker version
6-2. Dockerのステータスを確認
docker info
6-3. すべての停止中のコンテナを一括削除
docker rm $(docker ps -aq --filter "status=exited")
6-4. 未使用イメージやリソースを一括削除
docker system prune
6-5. ホストとコンテナ間でのファイルやディレクトリのコピー
docker cp
コマンドは、Dockerコンテナとホストマシンの間でファイルやディレクトリをコピーするために使用されます。コンテナ内で生成されたデータを取得したり、ホストのファイルをコンテナ内に移動する際に便利です。
コンテナからホストへのファイルのコピー
docker cp [OPTIONS] <コンテナ名またはID>:<コンテナ内のパス> <ホストのパス>
ホストからコンテナへのファイルのコピー
docker cp [OPTIONS] <ホストのパス> <コンテナ名またはID>:<コンテナ内のパス>
- コピー元とコピー先を指定することで、ホストとコンテナ間でファイルを移動できます。
- オプションはほとんどなく、シンプルに動作します。
使用例
例)コンテナ内のファイルをホストにコピーします
docker cp webserver:/var/log/nginx/access.log ./access.log
webserver
: コンテナ名(またはID)。/var/log/nginx/access.log
: コンテナ内のコピー元パス。./access.log
: ホストのカレントディレクトリに保存するコピー先。
例)ホスト上のファイルをコンテナ内にコピーします。
docker cp ./index.html webserver:/usr/share/nginx/html/index.html
./index.html
: ホストのコピー元ファイル。webserver:/usr/share/nginx/html/index.html
: コンテナ内のコピー先パス。
例)コンテナ内のディレクトリをホストにコピー:
docker cp webserver:/var/log/nginx ./nginx_logs
コンテナ内の /var/log/nginx
ディレクトリがホストの ./nginx_logs
にコピーされます。
例)ホストのディレクトリをコンテナ内にコピー:
docker cp ./my_app webserver:/usr/share/nginx/html/my_app
ホストの ./my_app
ディレクトリがコンテナ内の /usr/share/nginx/html/my_app
にコピーされます。
利用シーン
デバッグ:
docker cp webserver:/var/log/nginx/error.log ./error.log
設定ファイルの変更:
docker cp ./nginx.conf webserver:/etc/nginx/nginx.conf
データバックアップ:
docker cp myapp:/data ./backup_data
注意事項
- 稼働中のコンテナでも使用可能:
docker cp
は、コンテナが停止中でも稼働中でも使用できます。
- 権限の問題:
- コピーされたファイルの所有者やパーミッションはホストのファイルシステムに依存します。
- 必要に応じて
chmod
やchown
で権限を調整してください。
- シンボリックリンク:
- シンボリックリンクが含まれる場合、リンク先のファイルがコピーされます。
- 大きなファイルのコピー:
- サイズの大きいファイルをコピーする際、処理に時間がかかることがあります。
よく使うフローの例
Webサーバーのデプロイ
イメージをダウンロード:
docker pull nginx
コンテナを起動:
”web-server” はコンテナ名の例
docker run -d -p 8080:80 --name web-server nginx
動作確認:
curl http://localhost:8080
ログ確認:
”web-server” はコンテナ名の例
docker logs web-server
まとめ
これらのコマンドを覚えておけば、Dockerの基本操作を効率的に行うことができます。初めて使う場合は、イメージのダウンロードやコンテナの起動から始めて、徐々にネットワークやボリュームの設定に慣れていくと良いでしょう。
コメント