Docker 共通コマンド (学習メモ)
- この記事は、私が Docker について学習したことをまとめたものです。
1. Dockerの基本コマンド
- ドッカーの起動
systemctl start docker
- ドッカーを閉じる
systemctl stop docker
- ドッカーを再起動します
systemctl restart docker
- ドッカーのステータスを表示する
systemctl status docker
- 起動時に Docker が自動的に起動できるようにする
systemctl enable docker
- 起動時に自動的に起動する Docker をオフにする
systemctl disable docker
- Docker のバージョン番号情報を表示する
docker version
- カーネルのバージョン、コンテナーおよびイメージの数などの Docker システム情報を表示します。
docker info
2.Dockerイメージコマンド
- すべてのローカル ミラー リソース情報の表示 -q オプションを使用すると、すべてのローカル ミラーの
イメージ IDが表示されます。
docker images
docker images -q
- イメージ名に redis が含まれるイメージを検索するなど、指定した条件で Docker Hub でイメージを検索します。
docker search redis
docker search 指定条件
- Docker ハブ上のイメージをローカルにプルします
docker pull 镜像名称
docker pull 镜像名称:tag
指定した名前でイメージをプルします イメージ名:タグ(バージョン番号) 指定した名前でイメージをプルします version バージョン番号が付加されていない場合は、最新バージョンのイメージがプルされます
- 指定したローカルイメージを削除します。複数のイメージを一度に削除できます。
docker rmi 镜像名称/镜像id
docker rmi -f 镜像名称/镜像id
デフォルトでは、実行中のコンテナのイメージは削除できません。対応するイメージを削除するには、関連するコンテナを停止して削除する必要があります。ただし、-f を追加して強制的に削除することもできます。
docker コマンドを併用できることは注目に値します。たとえば、すべてのイメージを削除する場合、次の組み合わせを使用できます: docker image -q によって照会されたイメージ ID を削除された値として使用します。
docker rmi $(docker image -q)
- 画像を保存
docker save 镜像名称/镜像id -o 保存的位置与名字
docker save コマンドは、イメージを tar ファイルとしてエクスポートし、そのイメージを docker がインストールされている他のサーバーに転送してロードして使用することができます。
- 画像の読み込み
docker load -i 镜像保存的位置与名字
docker load は tar ファイルをイメージにインポートでき、通常は docker save と組み合わせて使用されます。
3. Dockerコンテナコマンド
3.1. コンテナーの実行
-
コンテナーは docker run コマンドを通じて起動および実行できます。このコマンドを実行すると、まず指定された画像をローカルで検索し、見つかった場合は直接起動し、見つからない場合は画像センターで検索します。ミラーセンターにイメージが存在する場合はローカルにダウンロードして起動されますが、ミラーセンターが存在しない場合は直接エラーが報告されます。
-
このコマンドの --help を使用して、docker run コマンドの構文を表示できます。多くのオプションがあることがわかりますが、最も一般的に使用されるもののいくつかを次に示します。
オプション | 効果 |
---|---|
-名前 | コンテナに名前を付けます |
-私 | コンテナーを対話モードで実行します。通常は -t と一緒に使用します。 |
-t | コンテナに擬似端末を割り当てる |
-d | コンテナをデーモンとして実行する |
-h | コンテナのホストを指定する |
-e | 接続パスワードなどコンテナ起動に必要な環境を指定する |
-p | ポートマッピングのホストポート:コンテナポートを指定します |
- コンテナーに --name という名前を付けます
docker run --name 容器名 镜像名称:tag
たとえば、コンテナ redis:7.0 を実行し、redis という名前を付けます。
docker run --name redis reids:7.0
上の図に示すように、これは Redis コンテナーが正常に実行されることを意味しますが、コンソールで他のコマンドを入力することはできないため、コンテナーをデーモンとして実行します。
- コンテナをデーモンとして実行します (バックグラウンドで実行) -d
docker run -d --name 容器名 镜像名称:tag
たとえば、コンテナ redis:7.0 をデーモンとして実行し、redis7 という名前を付け、docker ps コマンドを使用して表示します。
docker run -d --name redis7 redis7.0
- ポートマッピングを指定 -p
docker run -d -p 主机端口:容器端口 --name 容器名 镜像名称:tag
例: redis:7.0 をデーモン プロセスとして実行し、redis7 という名前を付け、ポート マッピングのホスト ポート: コンテナ ポートを指定します。
docker run -d -p 6380:6379 --name redis7 redis7.0
上記のコマンドは、コンテナーのポート 6379 をホストのポート 6380 にマップします。
注: Docker コンテナーの開始時に、ポート マッピング パラメーターが指定されていない場合、コンテナー内のネットワーク アプリケーションとサービスに外部からネットワーク経由でアクセスできません。ポートマッピングにより、外部からホストの指定ポートにアクセスし、コンテナアプリケーションにアクセスできます。
- コンテナーを対話モードで実行し、コンテナーに疑似端末を割り当てます -it
docker run -it 镜像名称:tag /bin/bash
例: centos:7.6.1810 コンテナを対話モードで実行し、疑似端末をコンテナに割り当て、コンテナに名前を付けます。
docker run -it --name centos7 centos:7.6.1810 /bin/bash
ターミナルを終了し、「exit」と入力します。ターミナルでは、一部の Linux コマンドも適用できます。
注: exit を使用してコンテナを終了すると、コンテナは直接停止します。Ctrl+P+Q コマンドを使用して終了すると、コンテナは止まらない(よく使われる)。
-i : コンテナーを対話モードで実行します
-t : 疑似ターミナルをコンテナーに割り当てます (通常、この 2 つを組み合わせて使用します)
/bin/bash: イメージ名の後に配置されるコマンドがコマンドです。対話型シェルなので、is/bin/bash を使用します
-itd を同時に使用することもできます。たとえば、
docker run -itd --name centos7 centos:7.6.1810
-d コマンドを実行するとコンテナ ID が返されるため、このコマンドを実行するとコンテナ ID が返されます。
質問: -itd を使用する理由は何ですか?
docker run -d を実行すると、一部のイメージがコンテナーを作成しますが、docker ps を介してコンテナーが正常に作成されていないことがわかります。たとえば、centos7 コンテナーを作成するとき、docker ps の後にコンテナーが正常に作成されていないことがわかります。 Docker コンテナはバックグラウンドで実行されるため、フォアグラウンド プロセスが存在する必要があります
。コンテナーによって実行されるコマンドが一時停止されているコマンド (top、tail の実行など) でない場合、それらのコマンドは自動的に終了します。
これは、nginx を例に挙げると、Web コンテナなどの Docker メカニズムの問題であり、通常の状況では、スタートアップ サービスを設定するには、service nginx start などの対応するサービスを開始するだけで済みます。しかし、この方法では、nginx はバックグラウンド プロセス モードで実行されるため、Docker フォアグラウンドで実行中のアプリケーションはなくなり、そのようなコンテナーがバックグラウンドで起動されると、何もすることがないと判断して自動的に自殺します。
解決策は、実行したいプログラムをフォアグラウンド プロセスとして実行し、 -it を使用して疑似ターミナルを提供し、対話型操作がまだ残っていることを示すことです。
3.2. コンテナを終了する
コンテナの終了とは、対話モードで実行されているコンテナを終了することを指します。終了方法は 2 つあります:
コンテナを終了して停止します。 :
コンテナを停止せずに終了します。 Ctrl+P+Q
3.3. コンテナのプロセスとログの表示
- 現在実行中のコンテナと停止したコンテナを含むすべてのコンテナをリストします。
docker ps -a
- 実行中かどうかに関係なく、最後に作成されたコンテナを一覧表示します。
docker ps -l
- 指定された数の新しく作成されたコンテナを一覧表示します
docker ps -n
- コンテナ ID のみが表示されます。これは、-a など、前のオプションと一緒に使用する必要があります。
docker ps -aq //查询出所有容器的ID
- コンテナ内で実行中のプロセスを表示する
docker top 容器名称/容器ID
- コンテナログの表示
docker logs 容器名称/容器ID
- コンテナの詳細を表示する
docker inspect 容器名称/容器ID
3.4. 再びコンテナに入る
コンテナをデーモンとして実行する場合、または対話モードでコンテナを実行するが、コンテナ内で実行されるログ コマンドが対話コマンド ラインを占有する場合 (対話モードで Tomcat を実行する場合と同様)、この時点で Go to を入力したい場合コンテナー内で何らかの操作を実行するには、コンテナーを使用します。このとき、exec/attach コマンドを使用する必要があります (exec を推奨)。
- コンテナプロセスを使用してコンテナに入る
docker attach [OPTIONS] 容器名称/容器ID
例: use dockerattach centos7 を使用してコンテナーに入ります。
このコマンドは新しいプロセスを作成しませんが、コンテナープロセスを使用 (アタッチ) します。現在のプロセスを終了してコンテナーを停止するには、exit コマンドを使用します。上の図に示すように、exit コマンドを使用して終了した後、再度クエリを実行すると、centos コンテナが実行されていないことがわかります。
- 新しいプロセスを作成してコンテナに入ります
docker exec [OPTIONS] 容器名称/容器ID COMMAND
例: docker exec -it centos7 /bin/bash を使用してコンテナーに入り、新しい bash ターミナルを開きます。
このコマンドはコンテナーから独立して新しいプロセスを作成し、exit コマンドの使用は新しいプロセスを終了するためにのみ使用されます。上の図に示すように、exit コマンドを使用して終了した後、再度クエリを実行すると、centos コンテナがまだ実行中であることがわかります。
3.5. コンテナの起動と停止
- コンテナの起動
docker start 容器名/容器ID
- コンテナを再起動します
docker restart 容器名/容器ID
- コンテナを停止する
docker stop 容器名/容器ID
このコマンドはコンテナを停止します。コンテナが他のプロセスによってアクセスされている場合、アクセスが完了した後にコンテナが停止されます。
- コンテナを強制停止する
docker kill 容器名/容器ID
このコマンドは、コンテナーが他のプロセスによってアクセスされているかどうかに関係なく、コンテナーを停止します。
3.6. コンテナの削除
- デフォルトでは、このコマンドは削除するコンテナが停止したコンテナである必要がありますが、複数のコンテナを同時に削除できます。
docker rm 容器名/容器ID
- このコマンドに -f を追加すると、コンテナーが停止しているかどうかに関係なく、コンテナーを強制的に削除できます。
docker rm -f 容器名/容器ID
3.7. コンテナとホストのファイル転送
docker cp コマンドは、コンテナーが実行されているかどうかに関係なく、コンテナーとホストの間でファイル/ディレクトリをコピーできます。
- コンテナからホストにファイルをコピーする
docker cp 容器名称/容器ID:容器路径 目的主机路径
docker cp centos7:/opt/hello.txt /opt/
例: コンテナが停止していない間に、centos7 コンテナの /opt ディレクトリにある hello.txt ファイルをホストの /opt ディレクトリにコピーします。
たとえば、コンテナが停止したら、centos7 コンテナの /opt ディレクトリにある docker.txt ファイルをホスト マシンの /opt ディレクトリにコピーします。
- ホストからコンテナにファイルをコピーする
docker cp 主机路径 目的容器名称/容器ID:容器路径
docker cp /opt/aaa.txt centos7:/opt/
例: host/opt/aaa.txt ファイルをコンテナの /opt/ にコピーします。
3.8. コンテナのエクスポートとインポート
- コンテナを圧縮ファイルとしてエクスポートする
docker export 容器名称/容器ID > 目的路径/[文件名.tar|文件名.tar.gz]
例: centos7 コンテナを test.tar.gz 圧縮ファイルとして /opt/ にエクスポートします。
- 圧縮ファイルをコンテナとしてインポートする
docker import 文件路径/[文件名.tar|文件名.tar.gz] 镜像名:tag
小規模なケース:
1. まず centos イメージを削除します
2. コマンド docker import test.tar.gz centos:7.6.1810 を実行します
3. イメージを確認し、イメージが生成されていることを確認します
4. docker run を実行して、次のことを確認しますそれは成功です。
3.9. イメージを新しいイメージコピーに送信する
- イメージを新しいイメージ コピーに送信する
docker commit -m "描述信息" -a "作者" 容器名称/容器ID 镜像名:tag
小規模なケース:
1. 元の centos コンテナに vim を yum インストールします。
2. 元のイメージを新しいイメージ コピーに送信します。