サーチ…


構文

  • docker rm [オプション]コンテナ[コンテナ...]
  • ドッカー添付[オプション]コンテナ
  • ドッカーexec [オプション]コンテナコマンド[ARG ...]
  • ドッカーps [オプション]
  • ドッカーログ[オプション]コンテナ
  • docker inspect [オプション] CONTAINER | IMAGE [CONTAINER | IMAGE ...]

備考

  • 上記の例では、containerがdockerコマンドのパラメータである場合、 <container>またはcontainer idまたは<CONTAINER_NAME>として記述されています。これらのすべての場所で、コンテナ名またはコンテナIDを渡してコンテナを指定することができます。

コンテナのリスト表示

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours          0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours          0.0.0.0:65432->5432/tcp   pt-postgres

docker psは、現在実行中のコンテナのみを出力します。すべてのコンテナ(停止したものを含む)を表示するには、 -aフラグを使用します。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago                             berserk_wozniak
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours                0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours                0.0.0.0:65432->5432/tcp   pt-postgres

特定のステータスのコンテナを表示するには、 -fコマンドラインオプションを使用して結果をフィルタリングします。ここでは、終了したすべてのコンテナを列挙する例を示します。

$ docker ps -a -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago

-qスイッチを使用してコンテナIDのみを表示することもできます。これにより、他のUnixユーティリティ( grepawk )で結果を操作するのが非常に簡単になります:

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

docker run --name mycontainer1docker run --name mycontainer1てコンテナを起動するときdocker run --name mycontainer1を指定すると、(mood_famousという形式の、nostalgic_stallmanのような)ランダムな名前ではなく特定の名前が与えられます。このようなコマンドで簡単に見つけることができます

docker ps -f name=mycontainer1

コンテナの参照

コンテナの名前を取るDockerコマンドは3つの異なる形式を受け取ります:

タイプ
完全なUUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
短いUUID 9cc69f11a0f7
berserk_wozniak

docker psを使用して、システム上のコンテナのこれらの値を表示します。

UUIDはDockerによって生成され、変更することはできません。 docker run --name <given name> <image>を起動するときにコンテナに名前を指定するには、--name docker run --name <given name> <image>ます。 Dockerは、コンテナの開始時に指定していない場合、コンテナにランダムな名前を生成します。

:UUIDの値(または「短い」UUID)は、指定された値が1つのコンテナに対して一意である限り任意の長さにすることができます

コンテナの起動と停止

実行中のコンテナを停止するには:

docker stop <container> [<container>...]

これは、コンテナ内のメインプロセスをSIGTERMに送信し、猶予期間内に停止しない場合はSIGKILLを送信します。各コンテナの名前は停止して印刷されます。

停止しているコンテナを開始するには:

docker start <container> [<container>...]

これは、バックグラウンドで渡された各コンテナを開始します。各コンテナの名前は開始時に表示されます。フォアグラウンドでコンテナを開始するには、 -a-a --attach )フラグを--attachます。

カスタム形式のコンテナを一覧表示する

docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'

特定のコンテナを見つける

docker ps --filter name=myapp_1

コンテナIPを検索

コンテナのIPアドレスを調べるには、次のようにします。

docker inspect <container id> | grep IPAddress

ドッカー検査を使用する

docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}

ドッカーコンテナの再起動

docker restart <container> [<container>...]

オプション--timeコンテナを強制終了するまで待機する秒数(デフォルトは10)

docker restart <container> --time 10

コンテナの削除、削除、およびクリーンアップ

docker rmを使用すると、次のような特定のコンテナを削除できます。

docker rm <container name or id>

すべてのコンテナを削除するには、次の式を使用します。

docker rm $(docker ps -qa)

デフォルトでは、ドッカーは実行中のコンテナを削除しません。実行中のコンテナは警告メッセージを生成し、削除されません。他のすべてのコンテナは削除されます。

あるいは、 xargsを使うこともできます:

docker ps -aq -f status=exited | xargs -r docker rm 

docker ps -aq -f status=exitedは、ステータスが "Exited"のコンテナのコンテナIDのリストを返します。

警告:上記の例では、「停止した」コンテナのみが削除されます。

コンテナを削除するには、コンテナが停止しているかどうかにかかわらず、forceフラグ-f

docker rm -f <container name or id>

状態に関係なく、すべてのコンテナを削除するには:

docker rm -f $(docker ps -qa)

deadステータスのコンテナのみを削除する場合は、次のようにdeadます。

docker rm $(docker ps --all -q -f status=dead)

exitedステータスのコンテナのみを削除する場合は、次のようにします。

docker rm $(docker ps --all -q -f status=exited)

これらは、 コンテナの一覧を表示するときに使用されるフィルタのすべての順列です。

バージョン1.3以降にスペースを使用する不要なコンテナとダングル画像を削除するには、次のようにします(Unixツールdf似ています):

$ docker system df

未使用のデータをすべて削除するには:

$ docker system prune 

既存のドッカーコンテナでコマンドを実行する

docker exec -it <container id> /bin/bash

すでに実行中のコンテナにログインして、簡単なテストを行うか、アプリケーションが何をしているかを確認するのが一般的です。多くの場合、ログや変更されたファイルのためにコンテナの使用方法が悪いことを示します。この例では、コンテナにログインできます。これは/ bin / bashがコンテナ内で利用可能であると仮定し、/ bin / shまたは何か他のものとすることができます。

docker exec <container id> tar -czvf /tmp/backup.tgz /data
docker cp <container id>:/tmp/backup.tgz .

この例では、データディレクトリの内容をtarにアーカイブします。それからdocker cpそれを取得することができます。

コンテナログ

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

  -f, --follow=false        Follow log output
  --help=false              Print usage
  --since=                  Show logs since timestamp
  -t, --timestamps=false    Show timestamps
  --tail=all                Number of lines to show from the end of the logs

例えば:

$ docker ps
CONTAINER ID    IMAGE    COMMAND                 CREATED     STATUS       PORTS
ff9716dda6cb    nginx    "nginx -g 'daemon off"  8 days ago  Up 22 hours  443/tcp, 0.0.0.0:8080->80/tcp 

$ docker logs ff9716dda6cb
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"

デーモンとして実行中のインスタンスに接続する

これを達成するには2つの方法がありますが、最初に最もよく知られていることは次のとおりです。

docker attach --sig-proxy=false <container>

これは文字通りあなたのbashをコンテナのbashに接続します。つまり、実行中のスクリプトがあれば結果が表示されます。

切り離すには、次のように入力します: Ctl-P Ctl-Q

しかし、よりフレンドリーな方法が必要で、新しいbashインスタンスを作成できるようにするには、次のコマンドを実行してください:

docker exec -it <container> bash

ファイルのコンテナへのコピー

コンテナからホストへ

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

ホストからコンテナへ

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

jess / transmissionを使って

https://hub.docker.com/r/jess/transmission/builds/bsn7eqxrkzrhxazcuytbmzp/

コンテナ内のファイルは/ transmission / downloadにあります

ホストの私の現在のディレクトリは/ home / $ USER / abcです。

docker cp transmission_id_or_name:/transmission/download .

私はファイルをコピーします

/home/$USER/abc/transmission/download

docker cpを使って1つのファイルだけをコピーして、ディレクトリツリーとファイルをコピーすることはできません

ドッカーボリュームの削除、削除、クリーンアップ

ドッカーボリュームは、コンテナが停止しても自動的に削除されません。コンテナを停止したときに関連するボリュームを削除するには:

docker rm -v <container id or name>

-vフラグが指定されていない場合、ボリュームはディスク上に「未使用ボリューム」として残ります。ダングリングボリュームをすべて削除するには:

docker volume rm $(docker volume ls -qf dangling=true)

docker volume ls -qf dangling=true filterは、コンテナに接続されていないタグなしボリュームを含むドッカーボリューム名のリストを返します。

あるいは、 xargsを使用することもできます:

docker volume ls -f dangling=true -q | xargs --no-run-if-empty docker volume rm

Dockerコンテナファイルシステムのエクスポートとインポート

Dockerコンテナのファイルシステムの内容をtarballアーカイブファイルに保存することは可能です。これは、コンテナファイルシステムを異なるホストに移動する場合に役立ちます。たとえば、データベースコンテナに重要な変更があって、他の場所で変更を複製できない場合などに便利です。コンテナのファイルシステムをエクスポートおよび移動するのではなく、 docker runコマンドまたはdocker-compose.ymlファイルを使用して、更新されたイメージからまったく新しいコンテナを作成することが望ましいことに注意してください 。ドッカーの力の一部は、画像とコンテナを作成する宣言的スタイルの監査可能性と説明責任です。 docker exportdocker importを使用することで、コンテナのファイルシステムの内部で元の状態から変更が難読化されているため、この電力は抑制されます。

docker export -o redis.tar redis

上記のコマンドは、空のイメージを作成し、この空のイメージにredisコンテナのファイルシステムをエクスポートします。 tarballアーカイブからインポートするには、以下を使用します。

docker import ./redis.tar redis-imported:3.0.7

このコマンドを実行すると、 redis-imported:3.0.7イメージが作成され、そこからコンテナを作成できます。コミットメッセージを設定するだけでなく、インポート時に変更を加えることもできます。

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

-cコマンドラインオプションで使用できるDockerfileディレクティブは、 CMDENTRYPOINTENVEXPOSEONBUILDUSERVOLUMEWORKDIRです。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow