MENU
Language

Dockerの基本コマンド

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

注意事項

  1. 稼働中のコンテナでも使用可能:
    • docker cp は、コンテナが停止中でも稼働中でも使用できます。
  2. 権限の問題:
    • コピーされたファイルの所有者やパーミッションはホストのファイルシステムに依存します。
    • 必要に応じてchmodchownで権限を調整してください。
  3. シンボリックリンク:
    • シンボリックリンクが含まれる場合、リンク先のファイルがコピーされます。
  4. 大きなファイルのコピー:
    • サイズの大きいファイルをコピーする際、処理に時間がかかることがあります。

よく使うフローの例

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の基本操作を効率的に行うことができます。初めて使う場合は、イメージのダウンロードやコンテナの起動から始めて、徐々にネットワークやボリュームの設定に慣れていくと良いでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次