記事ディレクトリ
基本的なコマンド
Docker は、開発者が分離された環境でアプリケーションを構築、パッケージ化、公開、実行できるようにする人気のコンテナ化プラットフォームです。基本的な Docker コマンドをいくつか示します。
docker version
:Dockerのバージョン情報を確認します。docker info
: 実行中のコンテナやイメージの数などの Docker システム情報を表示します。docker search <image>
: Docker Hub でイメージを検索します。docker pull <image>
: Docker Hub からイメージをダウンロードします。docker images
: ローカルにダウンロードされたイメージを一覧表示します。docker run <image>
: コンテナー内でイメージを実行しますdocker run hello-world
。docker ps
: 実行中のコンテナをリストします。docker stop <container>
: 実行中のコンテナを停止します。ここで、<container>
コンテナの ID または名前を指定できます。docker rm <container>
: 停止したコンテナを削除します。docker rmi <image>
: ローカルミラーを削除します。docker build -t <tag> <directory>
: ミラーを構築します。このオプションは、 Dockerfile を含むディレクトリである-t
ラベル (タグ) を指定するために使用されます。<directory>
docker run -p <host-port>:<container-port> <image>
: コンテナを実行し、コンテナのポートをホストのポートにマップします。docker exec -it <container> <command>
: 実行中のコンテナでコマンドを実行します。-it
オプションは対話モードに入るために使用されます。docker logs <container>
: コンテナのログ出力を表示します。docker cp <container>:<path> <host-path>
: コンテナ内のファイルをホストにコピーします。docker network ls
: Docker ネットワークをリストします。docker network create <network>
: Docker ネットワークを作成します。docker volume ls
: Docker データ ボリュームをリストします。docker volume create <volume>
: Docker データ ボリュームを作成します。
組み合わせコマンド
Docker にはいくつかの組み合わせコマンドが用意されており、複数の単一コマンドを組み合わせることで、より複雑な操作を完了できます。一般的な Docker 組み合わせコマンドとその動作をいくつか示します。
- コンテナを作成して実行します。
docker run -d --name mycontainer <image> <command>
このコマンドは、新しいコンテナーを作成し、コンテナー内で指定されたコマンドを実行します。-d
このオプションは、コンテナーがバックグラウンド モードで実行されることを示し、--name
コンテナーの名前を指定します。
2. イメージをビルドし、コンテナーを実行します。
docker build -t myimage <directory> && docker run -d --name mycontainer myimage
このコマンドは、まずイメージを構築し、次に新しく構築されたイメージ上でコンテナーを実行します。&&
演算子を使用して 2 つのコマンドを連結し、イメージのビルドが成功した後にのみコンテナーが実行されるようにします。
3. コンテナを実行し、対話モードに入ります。
docker run -it <image> <command>
このコマンドは、コンテナー内で指定されたコマンドを対話モードで実行し、ターミナルをコンテナーの標準入出力に接続します。
4. コンテナを実行し、ローカル ディレクトリをマウントします。
docker run -v <host-path>:<container-path> <image>
このコマンドはコンテナを実行し、ホスト上の指定されたディレクトリをコンテナの指定されたパスにマウントして、ホストとコンテナの間でファイル共有を実現します。
5. すべてのコンテナを停止して削除します。
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
このコマンドは、実行中のすべてのコンテナを停止し、削除します。docker ps -aq
すべてのコンテナの ID をリストし、それらを引数としてdocker stop
およびdocker rm
コマンドに渡すために使用されます。
6. すべてのミラーを削除します。
docker rmi $(docker images -q)
このコマンドはすべてのローカル ミラーを削除します。docker images -q
すべてのミラーをリストするために使用される ID は、docker rmi
コマンドに引数として渡されます。
7. イメージをビルドし、Docker Hub にプッシュします。
docker build -t <image> <directory> && docker push <image>
このコマンドはイメージを構築し、そのイメージを Docker Hub にプッシュして、他のユーザーがアクセスして使用できるようにします。
8. すべてのコンテナを停止して削除し、すべてのイメージを削除します。
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)
このコマンドは、実行中のすべてのコンテナを停止して削除し、すべてのローカル イメージを削除します。
9. コンテナを実行し、ネットワーク名前空間をホストと共有します。
docker run -it --net=host <image> <command>
このコマンドは、コンテナー内で指定されたコマンドを実行し、ネットワーク名前空間をホストと共有するため、コンテナーはホスト上のネットワーク インターフェイスに直接アクセスできます。
10. コンテナを実行し、環境変数を設定します。
docker run -e <key>=<value> <image>
このコマンドはコンテナ内で実行され、アプリケーションがコンテナ内で使用する 1 つ以上の環境変数を設定します。
11. コンテナ内でコマンドを実行し、結果をホストにコピーします。
docker exec <container> <command> > <host-path>
このコマンドは、実行中のコンテナー内で指定されたコマンドを実行し、コマンドの出力をホスト上の指定されたパスにコピーします。
12. イメージ名のない (つまり、タグのない) イメージを削除する場合は、次のコマンドを使用できます。
docker image prune -a
このコマンドは、関連付けられたコンテナーのないタグなしイメージを含む、すべてのタグなしイメージを削除します。これにより、ディスク領域が解放され、不要になったイメージがクリーンアップされます。このコマンドを実行する前に、これらのタグなしイメージが不要であることを確認してください。
13. 未解決のイメージ (つまり、コンテナが関連付けられていないイメージ) を削除するには、次のコマンドを使用します。
docker image prune
このコマンドは、未使用のイメージをすべて削除して、ディスク領域を解放します。これにより、使用されなくなった古いイメージを含む、コンテナーが関連付けられていないすべてのイメージが削除されることに注意してください。必要なイメージを誤って削除しないように、このコマンドを実行する前に、これらのイメージが必要ないことを確認してください。
Docker には、コンテナー、イメージ、その他のリソースをより効率的に管理するのに役立つ、一般的に使用される組み合わせコマンドがいくつかあります。一般的な Docker 構成コマンドをいくつか示します。
-
クリーンアップコマンド:
- すべてのコンテナを停止して削除し、すべてのイメージを削除します。
docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)
- ぶら下がっているコンテナをすべて削除します (関連するイメージは含まれません)。
docker container prune
- すべてのコンテナを停止して削除し、すべてのイメージを削除します。
-
コマンドをビルドして実行します。
- イメージをビルドしてコンテナを実行します。
docker build -t <image> <directory> && docker run -d --name <container> <image>
- イメージをビルドしてコンテナーを実行し、ポートをマップします。
docker build -t <image> <directory> && docker run -d --name <container> -p <host-port>:<container-port> <image>
- イメージをビルドしてコンテナを実行します。
-
データボリュームコマンド:
- コンテナーを作成し、データ ボリュームをマウントします。
docker run -v <host-path>:<container-path> <image>
- コンテナーを実行し、匿名データ ボリュームをマウントします。
docker run -v <container-path> <image>
- データ ボリュームの作成と管理:
docker volume create <volume> # 创建数据卷 docker volume ls # 列出数据卷 docker volume inspect <volume> # 查看数据卷详细信息 docker volume rm <volume> # 删除数据卷
- コンテナーを作成し、データ ボリュームをマウントします。
-
ネットワークコマンド:
- カスタム ネットワークを作成します。
docker network create <network>
- コンテナを実行し、指定されたネットワークに接続します。
docker run --network=<network> <image>
- ネットワークをリストします:
docker network ls
- カスタム ネットワークを作成します。
docker inspect
コマンドを他のコマンドと組み合わせて、より豊富なコンテナ情報を取得したり、より複雑な操作を実行したりできます。docker inspect
コマンドと組み合わせて使用される一般的なコマンドをいくつか示します。
-
docker inspect
+jq
:jq
は、JSON データのフィルタリングと抽出に使用できるコマンドライン JSON 処理ツールです。- 例:
docker inspect <container> | jq .[0].NetworkSettings.IPAddress
- この例では、
jq
フィルターを使用してコンテナーの IP アドレスを抽出します。
-
docker inspect
+grep
:grep
は、出力内の特定のパターンを照合するためのテキスト検索ツールです。- 例:
docker inspect <container> | grep IPAddress
- この例では、
grep
フィルターを使用してコンテナーの IP アドレスを検索します。
-
docker inspect
+awk
:awk
は、出力をセグメント化し、特定のフィールドを抽出するために使用できるテキスト処理ツールです。- 例:
docker inspect <container> | awk -F'"' '/IPAddress/ {print $4}'
- この例では、
awk
コンテナの IP アドレスを抽出するために使用します。
-
docker inspect
+ シェル変数:docker inspect
の出力をシェル変数に割り当てて、さらに処理して使用します。- 例:
CONTAINER_INFO=$(docker inspect <container>) echo $CONTAINER_INFO
コンテナの実行中
コンテナーを実行する場合、コンテナーの動作と環境をカスタマイズするためにいくつかの基本的な構成オプションを使用できます。ここでは、いくつかの一般的な基本構成オプションとその説明を示します。
-
コンテナ名:
--name <name>
: コンテナの識別と操作に使用されるコンテナの名前を指定します。例えば:--name mycontainer
-
バックグラウンドプロセス:
-d
または--detach
: コンテナーをバックグラウンド モードで実行して、ターミナルをブロックせずにバックグラウンドで実行できるようにします。例えば:-d
-
ポートマッピング:
-p <host-port>:<container-port>
: 外部からコンテナ内のサービスにアクセスできるように、コンテナのポートをホストのポートにマッピングします。例えば:-p 8080:80
-P
または--publish-all
: コンテナ内のすべてのポートをホスト上のランダムなポートに自動的にマッピングします。
-
環境変数:
-e <key>=<value>
: コンテナに環境変数を設定します。例えば:-e ENV_VAR=example
-
データボリュームマウント:
-v <host-path>:<container-path>
: ホストのディレクトリまたはファイルをコンテナの指定されたパスにマウントし、ホストとコンテナの間でファイル共有を実現します。例えば:-v /path/on/host:/path/on/container
-
作品リスト:
-w <path>
: コンテナの作業ディレクトリを設定します。例えば:-w /app
-
ユーザーと権限:
-u <user>[:<group>]
: コンテナ内のユーザーまたはユーザー グループを指定します。例えば:-u 1000:1000
-
インターネット接続:
--network <network>
: コンテナを指定された Docker ネットワークに接続します。例えば:--network mynetwork
-
インタラクティブモード:
-i
または--interactive
: 標準入力 (stdin) を開いたままにして、コンテナーとの対話を許可します。-t
または--tty
: 擬似端末 (TTY) を割り当てます。
これらは、一般的なコンテナー実行構成オプションの一部です。<name>
、、、、、、、、、、および は、実際の状況に応じて特定の値に置き換える必要があるパラメータであること<host-port>
に注意してください。<container-port>
<key>
<value>
<host-path>
<container-path>
<path>
<user>
<group>
<network>
Docker のトラブルシューティング
Docker の実行中に発生する可能性のある一般的な問題がいくつかあります。一般的なトラブルシューティングの方法とコマンドをいくつか示します。
-
コンテナのステータスを表示します。
docker ps
このコマンドを使用して、実行中のコンテナーを表示します。- コンテナーが適切に実行されていない場合は、
docker ps -a
コマンドを使用して、停止したコンテナーを含むすべてのコンテナーのステータスを表示できます。
-
コンテナーのログを表示します。
- このコマンドを使用して
docker logs <container>
、コンテナーのログ出力を表示します。<container>
コンテナーの ID または名前を指定できます。 -f
コンテナのログ出力をリアルタイムで追跡するオプションを追加します。
- このコマンドを使用して
-
デバッグ用のコンテナを入力します。
- このコマンドを使用して
docker exec -it <container> <command>
、実行中のコンテナに入り、コンテナ内で特定のコマンドを実行します。これにより、デバッグやトラブルシューティングのためにコンテナにアクセスできるようになります。 - 例:
docker exec -it <container> bash
またはdocker exec -it <container> sh
コンテナの対話型ターミナルに入ります。
- このコマンドを使用して
-
コンテナーの構成を確認します。
- このコマンドを使用して、
docker inspect <container>
ネットワーク設定、環境変数、マウントされたボリュームなど、コンテナーの詳細な構成情報を表示します。
- このコマンドを使用して、
-
コンテナーのリソース使用量を確認します。
- このコマンドを使用して、
docker stats
CPU、メモリ、ネットワーク、ディスクの使用量など、実行中のコンテナーのリソース使用量を表示します。
- このコマンドを使用して、
-
コンテナーまたは Docker サービスを再起動します。
- コンテナーに問題がある場合は、コンテナーまたは Docker サービスを再起動してみてください。これにより、いくつかの一般的な問題が解決される可能性があります。
docker restart <container>
コマンドでコンテナを再起動します。sudo systemctl restart docker
コマンドを使用してDocker サービスを再起動するか (Linux)、Docker デスクトップを再起動します (Windows または macOS)。
-
Docker サービスのステータスを表示します。
- コマンドを使用するか(Linux)、Docker デスクトップのステータスを表示して (Windows または macOS)
sudo systemctl status docker
、Docker サービスが適切に実行されていることを確認します。
- コマンドを使用するか(Linux)、Docker デスクトップのステータスを表示して (Windows または macOS)
-
無駄なリソースをクリーンアップします。
- このコマンドを使用して
docker system prune
、不要なコンテナー、イメージ、データ ボリュームなどをクリーンアップし、ディスク領域を解放します。
- このコマンドを使用して