Dockerには、広範なコマンドセット(より正確にはサブコマンド)があります。それらすべてを使用することはおそらく不可能であり、その成果のために行く必要もありません。
ほとんどの場合、コンテナとイメージを管理するためのコマンドの特定のサブセットを使用します。
Dockerユーザーと管理者が日常的に使用するのに非常に役立つ、一般的でありながら不可欠なDockerコマンドをリストします。
これらのDockerコマンドを2つのカテゴリに分けました:
- 実行可能ファイル:コンテナの実行と管理に使用されるコマンド
- 参考情報:コンテナ、画像、レイヤーに関する情報を抽出するために使用されるコマンド。
いいですね?これらがDockerコマンドを知っている必要があることと実際の例を見てみましょう。
Docker実行コマンド[コンテナの実行と管理用]
これらのDockerコマンドは、コンテナーの管理とイメージの構築に使用されます。それらは特定のタスクを実行するため、私はそれらを「Docker実行コマンド」と呼びました。
この時点で、Dockerコンテナのライフサイクルの基本を次のイメージで更新することをお勧めします:
それはさておき、コマンドとその例を見てみましょう。
システムにDockerがインストールされている場合は、チュートリアルと一緒にサンプルを実行して練習することができます。1。 Dockerの実行
Docker runは、コンテナーを作成してすぐに開始するために使用されます。
このコマンドは、最初に実行するコンテナの既存のイメージを検索し、見つからない場合はリポジトリからプルし、イメージからコンテナを作成して、すぐに実行を開始します。
公式リポジトリからNginxコンテナを実行してみましょう。
[email protected]:~$ docker run --name nginx-root -p 80:80 -d nginx
8411c3df0fd7f57395b0732b1b1963c215040eed669dc8327200db197ff6099b
[email protected]:~$
--name
を使用 フラグを立てると、ローカル名をカスタマイズし、ホストポートをコンテナポートにマップします。 -d
または--detach
コンテナをデタッチモードでバックグラウンドで実行するのに役立ちます。
2。 Dockerの停止
このコマンドは、すでに実行されているコンテナーを停止するために使用されます。構文は単純です:
docker stop container-name-or-id
最初のコマンドで開始したコンテナを停止しましょう。
[email protected]:~$ docker stop nginx-root
nginx-root
[email protected]:~$
実行時に名前をカスタマイズしなかった場合は、ランダムに生成された名前をdocker ps
で確認できます。 コマンド(後で説明します)。
docker stopコマンドを使用すると、終了を要求するSIGTERMシグナルが送信され、その後、終了状況に応じてSIGKILLシグナルが管理されます。
3。 Dockerの開始
これは、停止されたコンテナを開始するために使用されます。構文は単純です:
docker start container-name-or-id
前の例で停止したNginxコンテナを起動しましょう。
[email protected]:~$ docker start nginx-root
nginx-root
[email protected]:~$
docker runとは異なり、dockerstartはイメージから新しいコンテナーを作成できないことに注意してください。停止状態のコンテナのみを「実行」できます。
Docker Run vs Start vs Create:違いの説明docker初心者にとって、docker start、docker run、dockercreateなどの用語は混乱を招く可能性があります。この記事では、例との違いについて説明します。 LinuxハンドブックAbhishekPrakash4。 Docker exec
docker exec
、名前が示すように、すでに実行されているコンテナ内で新しいコマンドを実行するために使用されます。
[email protected]:~$ docker exec -ti nginx-root /bin/bash
[email protected]:/#
これで、コンテナ内でbashシェルを実行しています。
-ti
で 、 t 「ターミナル」を示し、 i 接続されていない場合でもSTDIN(標準入力)を開いたままにする「インタラクティブ」を示します。
コンテナシェルを終了するには、exitコマンドを使用してホストコンソールに戻ります。
[email protected]:/# exit
exit
[email protected]:~$
5。 Dockerの名前変更
コンテナの名前を変更するには、次の構文を使用します。
docker rename old_container_name new_container_name
nginx-rootコンテナの名前をnginx-toorに変更しましょう。 コンテナが稼働しているときでもこれを実行できることに注意してください!
[email protected]:~$ docker rename nginx-root nginx-toor
6。 Dockerの一時停止/一時停止解除
docker pause
を使用 、指定したコンテナ内のすべてのプロセスを一時停止できます。 SIGSTOPシグナルが使用されますが、これは一時停止中のプロセスによって通知されます。
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72acb924f667 nginx "nginx -g 'daemon of…" 4 hours ago Up 4 hours 0.0.0.0:80->80/tcp nginx-toor
e2dd68fdd220 wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8088->80/tcp wp2_wordpress_1
016709c05add wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8080->80/tcp wp1_wordpress_1
656f6761ce0d mariadb:10.4.10-bionic "docker-entrypoint.s…" 8 days ago Up 3 days 3306/tcp wp2_mysql_1
ee953bb14483 mariadb:10.4.10-bionic "docker-entrypoint.s…" 8 days ago Up 3 days 3306/tcp wp1_mysql_1
nginx-toorコンテナを一時停止しましょう:
[email protected]:~$ docker pause nginx-toor
nginx-toor
これで、docker ps
で本当に一時停止したかどうかを確認できます。 もう一度コマンド:
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72acb924f667 nginx "nginx -g 'daemon of…" 4 hours ago Up 4 hours (Paused) 0.0.0.0:80->80/tcp nginx-toor
e2dd68fdd220 wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8088->80/tcp wp2_wordpress_1
016709c05add wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8080->80/tcp wp1_wordpress_1
656f6761ce0d mariadb:10.4.10-bionic "docker-entrypoint.s…" 8 days ago Up 3 days 3306/tcp wp2_mysql_1
ee953bb14483 mariadb:10.4.10-bionic "docker-entrypoint.s…" 8 days ago Up 3 days 3306/tcp wp1_mysql_1
元に戻すには、一時停止を解除するだけです。
[email protected]:~$ docker unpause nginx-toor
nginx-toor
7。 Dockerキル
docker kill
デフォルトのKILLシグナルをコンテナに送信するために使用されます。 docker stop
とは異なり 、SIGTERMシグナルで終了を要求することなく、SIGKILLシグナルを直接送信します。
これは、一般的な緊急事態に基づいて強制終了する突然の方法であるため、常にdocker stop
を使用することをお勧めします。 最初。
[email protected]:~$ docker kill nginx-root
nginx-root
[email protected]:~$
8。 Dockerビルド
Dockerイメージを変更する場合は、カスタムイメージを使用して新しいコンテナーをデプロイする前に、カスタムイメージをビルドする必要があります。
docker build
このような変更されたイメージを作成するコマンドです。
カスタムDockerイメージを作成するためのDockerfileの使用に関するこの詳細なガイドを読むことをお勧めします。ここでは、簡単な例を示します。
Dockerfileのサンプルは次のとおりです:
FROM alpine:latest
RUN apk update
RUN apk add vim
まず、公式リポジトリからAlpineLinuxイメージをダウンロードします。次に、パッケージキャッシュを更新し、さらにVimエディターをインストールします。
これは、このイメージから実行されているコンテナにVimエディターがプリインストールされていることを意味します。
次の方法でイメージを作成します。
[email protected]:~/docker-build-test$ docker image build -t docker-build-test-image .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM alpine:latest
---> 965ea09ff2eb
Step 2/3 : RUN apk update
---> Using cache
---> b16ea26b03aa
Step 3/3 : RUN apk add vim
---> Using cache
---> b283eaf606c1
Successfully built b283eaf606c1
Successfully tagged docker-build-test-image:latest
変更されたイメージの名前はdocker-build-test-image コマンドは現在のディレクトリでDockerfileを探します。
9。 Docker cp
cpコマンドは、経験豊富なLinuxユーザーには、異なる場所間でファイルやディレクトリをコピーすることですでによく知られています。
同様に、docker container cp
、または単にdocker cp
コンテナとホスト間でファイルとディレクトリをコピーするために使用されます。
[email protected]:~/nginx-root$ docker cp nginx-root:/etc/nginx/nginx.conf ./config
上記のコマンドは、nginx.confファイルをコンテナnginx-rootから、現在の作業ディレクトリ(nginx-rootとも呼ばれる)にすでに存在している必要があるconfigという名前のディレクトリにコピーします。通常のLinuxシステムと同じように、コンテナのファイルシステム構造(/ etc / nginx)が似ていることに注意してください。
10。 Docker rm
Linuxターミナルを介したファイルとディレクトリの削除と同様に、Dockerも同様の構文を使用してイメージとコンテナの両方を削除します。
docker rm container_or_image_name_or_id
このチュートリアルで以前に作成したnginx-rootコンテナを削除してみてください:
[email protected]:~$ docker rm nginx-root
nginx-root
出力には、コンテナが削除されたか、そのようなものは表示されませんが、それでも削除されます。
実行中のコンテナを削除することはできません。コンテナに関連付けられているイメージは、停止している場合でも削除できません。すべてのDockerコンテナ(またはその一部)を削除する方法特定のコンテナまたは同じイメージに属するすべて、またはそれらすべてを削除します。これらの実用的な例を使用して、さまざまな状況でDockerコンテナーを削除する方法を学びます。 LinuxハンドブックAbhishekPrakash Dockerイメージを削除する方法:Dockerイメージを削除するさまざまなシナリオについて説明したThemAの完全な記事を1つずつ例を挙げて。 LinuxハンドブックAbhishekPrakash上記のすべてのコマンドを要約してみましょう:
他のコマンド例で使用するために、nginx-rootコンテナを再度作成します。
Dockerの情報コマンド[コンテナと画像に関する情報を取得するため]
特定のタスクと既存の読み取り可能なパラメーターに関連する情報を提供するDockerコマンドは、有益なDockerコマンドとして呼び出すことができます。
ここでは、この目的のために11個のDockerコマンドを使用しています:
11。 Docker ps / container ls
docker container ls
の略 、docker ps
システムで現在実行されているすべてのコンテナを一覧表示し、追加の統計でそれらのステータスを確認するために使用できます。
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2dd68fdd220 wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8088->80/tcp wp2_wordpress_1
016709c05add wordpress:5.3.0-php7.1-apache "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8080->80/tcp wp1_wordpress_1
80e12e4a431c nginx "nginx -g 'daemon of…" 3 days ago Up 3 days 0.0.0.0:80->80/tcp nginx-root
656f6761ce0d mariadb:10.4.10-bionic "docker-entrypoint.s…" 7 days ago Up 3 days 3306/tcp wp2_mysql_1
ee953bb14483 mariadb:10.4.10-bionic "docker-entrypoint.s…" 7 days ago Up 3 days 3306/tcp wp1_mysql_1
[email protected]:~$
12。 Dockerイメージ/イメージls
経験豊富なLinuxユーザーの場合は、すでにls
に精通している可能性があります。 Linux端末でディレクトリの内容を確認するために使用するコマンド。
同様に、Dockerでは、docker image ls
または単にdocker images
システム内に存在するすべてのDockerイメージのリストを確認するために使用されます。これらの画像は、作成方法に応じて公式またはカスタムの場合があります。
[email protected]:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 4152a9608752 10 days ago 126MB
avimanyu786/flask-test latest f8e2d6f524ef 2 weeks ago 122MB
avimanyu786/nginx-test latest 5fe5e88b9eaa 2 weeks ago 23MB
wordpress 5.3.0-php7.1-apache f0985bcc2ffb 2 weeks ago 530MB
mariadb 10.4.10-bionic c1c9e6fba07a 2 weeks ago 355MB
avimanyu786/alpine-with-vim latest b283eaf606c1 2 weeks ago 34.7MB
jwilder/nginx-proxy latest d1c0beda6804 3 weeks ago 161MB
nginx alpine b6753551581f 5 weeks ago 21.4MB
python alpine 204216b3821e 5 weeks ago 111MB
alpine latest 965ea09ff2eb 5 weeks ago 5.55MB
mysql latest c8ee894bd2bd 6 weeks ago 456MB
hello-world latest fce289e99eb9 11 months ago 1.84kB
[email protected]:~$
コンテナと画像は別として、ls
Dockerで同様の目的で使用され、ネットワーク、ボリューム、ノード、Swarmサービスを管理します。
13。 Dockerログ
このコマンドは、本番サーバーで問題の調査と解決に非常に役立ちます。 docker logsコマンドを使用して、任意のコンテナーのログをフェッチできます。
docker logs container_name_or_id
例:
[email protected]:~$ docker logs nginx-toor
178.130.157.61 - - [30/Nov/2019:07:56:14 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-"
178.130.157.61 - - [30/Nov/2019:07:56:14 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-"
.
.
.
.
x64|'|'|No|'|'|0.7d|'|'|..|'|'|AA==|'|'|112.inf|'|'|SGFjS2VkDQoxOTIuMTY4LjkyLjIyMjo1NTUyDQpEZXNrdG9wDQpjbGllbnRhLmV4ZQ0KRmFsc2UNCkZhbHNlDQpUcnVlDQpGYWxzZQ==12.act|'|'|AA==" 400 157 "-" "-" "-"
8.36.123.216 - - [30/Nov/2019:10:32:20 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" "-"
202.142.105.74 - - [30/Nov/2019:12:03:39 +0000] "GET /favicon.ico HTTP/1.1" 404 153 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0" "-"
14。 Dockerバージョン
システムにインストールされているDockerバージョンの詳細情報を取得するには、次を使用します。
docker version
この情報は次のようになります。
[email protected]:~$ docker version
Client: Docker Engine - Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:54:09 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.4
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:52:40 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
[email protected]:~$
15。 Docker情報
次のコマンドは、Dockerがインストールされているホストシステムに関するシステム全体の情報を表示します。
[email protected]:~$ docker info
Client:
Debug Mode: false
Server:
Containers: 9
Running: 5
Paused: 0
Stopped: 4
Images: 17
Server Version: 19.03.4
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-50-generic
Operating System: Ubuntu 18.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 985.4MiB
Name: localhost
ID: MZTJ:L5UF:WMQ3:VOIO:NR3N:336Q:YX2T:MSOU:5Y2N:MA7V:F6BQ:6UDY
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
[email protected]:~$
16。 Dockerの検査
docker inspect
コマンドは、コンテナとイメージの両方の低レベルの情報を明らかにするために使用されます。
イメージのチェックサム、レイヤー、コンテナのIPアドレス、その他のネットワーク情報、その他の多くの情報などの情報を取得できます。
grepコマンドを使用して出力をフィルタリングし、必要な情報のみを取得することをお勧めします。
次の例では、 avimanyu786 / alpine-with-vim:latestという名前の既存のDockerイメージを調べます。 。
[email protected]:~$ docker inspect avimanyu786/alpine-with-vim:latest
[
{
"Id": "sha256:b283eaf606c18a4d0cc461ffdf86d53ecb173db5271129090a7421a64b1c514e",
"RepoTags": [
"avimanyu786/alpine-with-vim:latest"
],
"RepoDigests": [],
"Parent": "sha256:b16ea26b03aaf5d9bd84157fbef61670d2f318c1af854ae04f0dbc290afd4b04",
"Comment": "",
"Created": "2019-11-12T11:51:24.458552779Z",
"Container": "5b759e6f98e354a78dfca588eb65316b35f0cfb88c9119844471c8fcba362898",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"apk add vim"
],
"Image": "sha256:b16ea26b03aaf5d9bd84157fbef61670d2f318c1af854ae04f0dbc290afd4b04",
.
.
.
.
"Metadata": {
"LastTagTime": "2019-11-12T11:51:24.563369343Z"
}
}
[email protected]:~$
17。 Dockerの履歴
docker history image-nameを使用して、Dockerシステムに存在するイメージの履歴を確認します。
画像の履歴から、変更とコミットが時系列の逆順に表示されます。
[email protected]:~$ docker history avimanyu786/alpine-with-vim:latest
IMAGE CREATED CREATED BY SIZE COMMENT
b283eaf606c1 2 weeks ago /bin/sh -c apk add vim 27.7MB
b16ea26b03aa 2 weeks ago /bin/sh -c apk update 1.42MB
965ea09ff2eb 5 weeks ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B
<missing> 5 weeks ago /bin/sh -c #(nop) ADD file:fe1f09249227e2da2… 5.55MB
[email protected]:~$
18。 Dockerポート
このコマンドは、ホストからコンテナへのポートマッピングを非常に簡単に明らかにするため、複数のコンテナを管理する場合に非常に役立ちます。
[email protected]:~$ docker port nginx-root
80/tcp -> 0.0.0.0:80
ここでは、ホストポート80がnginx-rootという名前のコンテナのコンテナポート80にマップされていることがわかります。
19。 Docker diff
docker diffを使用すると、コンテナのファイルシステム上のファイルまたはディレクトリへの変更を検査できます。作成されてからコンテナのファイルシステム内の変更されたファイルとディレクトリが一覧表示されます。
3つの異なるタイプの変更が追跡されます(A / D / C):
- A:ファイルまたはディレクトリの追加
- D:ファイルまたはディレクトリの削除
- C:ファイルまたはディレクトリの変更
nginx-rootコンテナについても同じことを確認しましょう:
[email protected]:~$ docker diff nginx-root
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
[email protected]:~$
20。 Dockerトップ
繰り返しになりますが、topはすでにおなじみのLinuxコマンドです。システムで実行中のプロセスを一覧表示するために使用されます。
Docker Topを使用して、コンテナー内で実行されているプロセスを一覧表示します。
docker top container_ID_or_name
例のnginx-rootを使用して実行すると、次の値が表示されます。
[email protected]:~$ docker top nginx-root
UID PID PPID C STIME TTY TIME CMD
root 10355 10330 0 07:54 ? 00:00:00 nginx: master process nginx -g daemon off;
systemd+ 10401 10355 0 07:54 ? 00:00:00 nginx: worker process
root 12054 10330 0 10:22 pts/0 00:00:00 /bin/bash
[email protected]:~$
21。 Docker統計
docker statsコマンドは、そのまま使用することも、特定のコンテナーに使用することもできます。コンテナの詳細とシステムリソースの使用状況が表示されます。
まず、その一般的な形式を見てみましょう:
[email protected]:~$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
72acb924f667 nginx-root 0.00% 2.621MiB / 985.4MiB 0.27% 8.02kB / 8.92kB 6.8MB / 0B 3
e2dd68fdd220 wp2_wordpress_1 0.00% 44.24MiB / 985.4MiB 4.49% 1.9MB / 1.62MB 53.3MB / 61.4kB 11
016709c05add wp1_wordpress_1 0.00% 68.52MiB / 985.4MiB 6.95% 12MB / 4.77MB 136MB / 61.4kB 11
656f6761ce0d wp2_mysql_1 0.05% 70.12MiB / 985.4MiB 7.12% 1.05MB / 1MB 16MB / 2.15MB 30
ee953bb14483 wp1_mysql_1 0.04% 31.73MiB / 985.4MiB 3.22% 1.16MB / 4.76MB 50.6MB / 91.8MB 31
上記の出力は、Ctrl + Cで終了するまで、リアルタイムで継続的に生成されます。
これで、特定のコンテナで試してみると、同じ出力が表示されますが、そのコンテナだけで表示されます:
[email protected]:~$ docker stats nginx-root
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
72acb924f667 nginx-root 0.00% 2.621MiB / 985.4MiB 0.27% 8.02kB / 8.92kB 6.8MB / 0B 3
Dockerコマンドの情報も要約します:
すべてのDockerコマンドの網羅的で包括的なリソースについては、Dockerの公式ドキュメントをいつでも参照できます。
通常のLinuxコマンドといくつかのDockerコマンドが似ていることに気付くでしょう。 Dockerコマンドを覚えやすくするのは意図的なことだと思います。
この記事がDockerの日常的な使用に役立つことを願っています。このような便利なコマンドをもっと共有できる場合は、以下で自由に共有してください。フィードバックや提案はいつでも歓迎します。