Docker全体の管理・操作
バージョン確認
$ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true
実行環境確認
$ docker system info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 18.03.1-ce
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 logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.87-linuxkit-aufs
Operating System: Docker for Mac
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.952GiB
Name: linuxkit-025000000001
ID: UGDW:36LB:QTG2:3UWB:5Z7G:FJOJ:BM5C:VST6:DAZJ:MRQD:4EYY:QGHX
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 24
Goroutines: 43
System Time: 2018-05-30T07:43:47.158285653Z
EventsListeners: 2
HTTP Proxy: docker.for.mac.http.internal:3128
HTTPS Proxy: docker.for.mac.http.internal:3129
Registry: https://index.docker.io/v1/
Labels:
Experimental: true
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
ディスク利用状況
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 79.62MB 0B (0%)
Containers 1 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache
イメージの管理
イメージのダウンロード
Dockerコンテナを起動するためには、Dockerコンテナの元になるDockerイメージが必要です。
docker image pull [オプション] イメージ名[:タグ名]
docker pull イメージ名
$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f2aa67a397c4: Pull complete
3c091c23e29d: Pull complete
4a99993b8636: Pull complete
Digest: sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884
Status: Downloaded newer image for nginx:latest
ダウンロード済みイメージの確認
docker image ls [オプション][レポジトリ名]
オプション | 説明 |
---|---|
-all, -a | すべてのイメージを表示 |
--digests | ダイジェストを表示するかどうか |
--no-trunc | 結果をすべて表示する |
--quiet, -q | DockerイメージIDのみ表示 |
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae513a47849c 4 weeks ago 109MB
ubuntu latest 452a96d81c30 4 weeks ago 79.6MB
項目 | 説明 |
---|---|
REPOSITORY | イメージの名前 |
TAG | イメージタグ名 |
IMAGE ID | イメージID |
CREATED | 作成日 |
SIZE | イメージのサイズ |
イメージの詳細確認
詳細情報がJSON形式で表示されます。
$ docker image inspect nginx
[
{
"Id": "sha256:ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881",
...
"Created": "2018-04-30T13:55:45.019400581Z",
...
"DockerVersion": "17.06.2-ce",
...
"Architecture": "amd64",
...
}
]
# キーを指定して値を取得する場合
$ docker image inspect --format="{{ .Os }}" nginx
linux
# . (ドット)を付けて階層を表現
$ docker image inspect --format="{{ .ContainerConfig.Hostname }}" nginx
0ef39071559e
イメージへのタグ設定
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae513a47849c 4 weeks ago 109MB
$ docker image tag nginx kkkk/webserver:1.0
C02SY1XFGTFJ:advr ko-kamenashi$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
kkkk/webserver 1.0 ae513a47849c 4 weeks ago 109MB
nginx latest ae513a47849c 4 weeks ago 109MB
# タグを付けたイメージと元のイメージの[IMAGE ID]が同じである
イメージの検索
docker search [オプション] 検索キーワード
オプション | 説明 |
---|---|
--no-trunc | 結果をすべて表示する |
--limit | n件の検索結果を表示する |
--filter=stars=n | お気に入りの数(n以上)の指定 |
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 8564 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1336 [OK]
...
イメージの削除
docker image rm [オプション] イメージ名 [イメージ名]
オプション | 説明 |
---|---|
--force, -f | イメージを強制的に削除する |
--no-prun | 中間イメージを削除しない |
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
kkkk/webserver 1.0 ae513a47849c 4 weeks ago 109MB
nginx latest ae513a47849c 4 weeks ago 109MB
$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
kkkk/webserver 1.0 ae513a47849c 4 weeks ago 109MB
未使用のイメージを削除
docker image prune [オプション]
オプション | 説明 |
---|---|
--all, -a | 使用していないイメージをすべて削除 |
--force, -f | イメージを強制的に削除する |
Docker Hubへのログイン
docker login [オプション][サーバー]
オプション | 説明 |
---|---|
--password, -p | パスワード |
--username, -u | ユーザー名 |
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username :
Password:
Login Succeeded
イメージのアップロード
docker image push イメージ名 [:タグ名]
Docker Hubにアップロードするイメージは
<Docker Hub ユーザー名>/イメージ名:[タグ名]
にする
$ docker image push kkdk/webserver:1.0
The push refers to repository [docker.io/kkdk/webserver]
7ab428981537: Pushed
82b81d779f83: Pushed
d626a8ad97a1: Pushed
1.0: digest: sha256:e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90 size: 948
Docker Hubからのログアウト
docker logout [サーバー名]
コンテナの管理
コンテナ生成/起動
docker container run [オプション] イメージ名[:タグ名] [引数]
オプション | 説明 |
---|---|
--attach, -a | 標準入力(STDIN)/標準出力(STDOUT)/標準エラー出力(STDERR)にアタッチする |
--cidfile | コンテナIDをファイルに出力する |
--detach, -d | コンテナを生成し、バックグラウンドで実行する |
--interactive, -i | コンテナの標準入力を開く |
--tty, -t | 端末デバイスを使う |
--restart | コンテナ内で実行するコマンドの終了ステータスによってコンテナを自動的に再起動する |
イメージ無しの場合
$ docker container run ubuntu:latest /bin/echo 'Hello, world!'
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
a48c500ed24e: Pull complete
1e1de00ff7e1: Pull complete
0330ca45a200: Pull complete
471db38bcfbf: Pull complete
0b4aba487617: Pull complete
Digest: sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e
Status: Downloaded newer image for ubuntu:latest
Hello, world!
イメージをダウンロード済みの場合
$ docker container run --name webserver -d -p 80:80 nginx
bf92dbbd8dede5101834a35c12563afbd1d9ff83fe2960856b25dd4190ca4228
コンテナの対話的実行
docker container run -it --name "test1" centos /bin/cal
①^^^^^^^^^^^^^^^^^^^ ②^^ ③^^^^^^^^^^^^ ④^^^^^ ⑤^^^^^^^
①コンテナを作成/実行
②コンソールに結果を出すオプション
③コンテナ名
④イメージ名
⑤コンテナで実行するコマンド
bashの実行
$ docker container run -it --name "test2" centos /bin/bash
[root@0e51a5681f1b /]#
コンテナのバックグラウンド実行
docker container run [実行オプション] イメージ名[:タグ名] [引数]
オプション | 説明 |
---|---|
--detach, -d | バックグラウンドで実行する |
--user, -u | ユーザー名を指定 |
--restart=[no, on-failure, on-failure:回数n, always, unless-stopped] | コマンドの実行結果によって再起動を行うオプション |
no 再起動しない/on-failure 終了ステータスが0でないときに再起動する/on-failure:回数n 終了ステータスが0でないときにn回再起動する/always 常に再起動する/unless-stopped 直近のコンテナが停止状態でなければ常に再起動する | |
--rm | コマンド実行完了後にコンテナを自動で削除 |
コンテナのネットワーク設定
docker container run [ネットワークオプション] イメージ名[:タグ名] [引数]
オプション | 説明 |
---|---|
--add-host=[ホスト名:IPアドレス] | コンテナの/etc/hostsにホスト名とIPアドレスを定義する |
--dns=[IPアドレス] | コンテナ用のDNSサーバーのIPアドレス指定 |
--expose | 指定したレンジのポート番号を割り当てる |
--mac-address=[MACアドレス] | コンテナのMACアドレスを指定する |
--net=[bridge | none |
bridge ブリッジ接続(デフォルト)を使う / none ネットワークに接続しない / container:[ name or id ] 他のコンテナのネットワークを使う / host コンテナがホストOSのネットワークを使う / NEWWORK ユーザー定義ネットワークを使う | |
--hostname, -h | コンテナ自身のホスト名を指定する |
--publish, -p[ホストのポート番号]:[コンテナのポート番号] | ホストとコンテナのポートマッピング |
--publish-all, -P | ホストの任意のポートをコンテナに割り当てる |
コンテナのポートマッピング
docker container run -d -p 8080:80 nginx
コンテナのDNSサーバー指定
docker container run -d --dns 192.168.1.1 nginx
MACアドレスの指定
docker container run -d --mac-address="92:d0:c6:0a:29:33" centos
ホスト名とIPアドレス定義
docker container run -it --add-host test.com:192.168.1.1 centos
リソースを指定してコンテナを生成/実行
docker container run [リソースオプション] イメージ名 [: タグ名] [引数]
オプション | 説明 |
---|---|
--cpu-shares, -c | CPUの使用の配分(比率) |
--memory, -m | 使用するメモリを制限して実行する(単位はb, k, m, gのいずれか) |
--volume~[ホストのディレクトリ]:[コンテナのディレクトリ], -v | ホストとコンテナのディレクトリを共有 |
CPU時間の相対割合とメモリの使用量を指定
docker container run --cpu-shares=512 --memory=1g centos
ホストOSとコンテナ内のディレクトリの共有
docker container run -v /Users/asa/webap:/user/share/nginx/html nginx
コンテナを生成/起動する環境を指定
docker container run [環境設定オプション] イメージ名[:タグ名] [引数]
オプション | 説明 |
---|---|
--env=[環境変数], -e | 環境変数を設定する |
--env-file=[ファイル名] | 環境変数をファイルから設定する |
--read-only=[true or false] | コンテナのファイルシステムを読み込み専用にする |
--workdir=[パス], -w | コンテナの作業ディレクトリを指定する |
-u, --user=[ユーザー名] | ユーザー名またはUIDを指定する |
環境変数の設定
docker container run -it -e foo=bar centos /bin/bash
環境変数の一括設定
$ cat env_list
hoge=fuga
foo=bar
$ docker container run -it --env-file=env_list centos /bin/bash
[root@asdf8dfn]# set
BASH=/bin/bash
...
hoge=fuga
foo=bar
作業ディレクトリの設定
$ docker container run -it -w=/tensorflow centos /bin/bash
[root@asdf8dfn]# pwd
/tensorflow
稼働コンテナの一覧表示
docker container ls [オプション]
オプション | 説明 |
---|---|
--all, -a | 起動中/停止中も含めてすべてのコンテナを表示する |
--filter, -f | 表示するコンテナのフィルタリング |
.ID コンテナID / .Image イメージID / .Command 実行コマンド / .CreatedAt コンテナが作成された時間 / .RunningFor コンテナの稼働時間 / .Ports 公開ポート / .Status コンテナの状態 / .Size コンテナのディスクサイズ / .Names コンテナ名 / .Mounts ボリュームマウント / .Networks ネットワーク名 | |
--format | 表示フォーマットを指定 |
--last, -n | 最後に起動されてからn件のコンテナのみ表示 |
--latest, -l | 最後に起動されたコンテナのみ表示 |
--no-trunc | 情報を省略しないで表示する |
--quiet, -q | コンテナIDのみ表示 |
--size, -s | ファイルサイズの表示 |
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e51a5681f1b centos "/bin/bash" 6 hours ago Exited (0) 6 hours ago test2
85eea26917be centos "/bin/cal" 3 days ago Exited (0) 3 days ago test1
bf92dbbd8ded nginx "nginx -g 'daemon of…" 5 days ago Exited (0) 5 days ago webserver
c8827e917923 ubuntu:latest "/bin/echo 'Hello, w…" 5 days ago Exited (0) 5 days ago clever_fermat
項目 | 説明 |
---|---|
CONTAINER ID | コンテナID |
IMAGE | コンテナのもとになっているイメージ |
COMMAND | コンテナ内で実行されているコマンド |
CREATED | コンテナ作成からの経過 |
STATUS | コンテナの状態(restarting/running/paused/exited) |
PORTS | 割り当てられたポート |
NAMES | コンテナの名前 |
コンテナの稼働確認
docker container stats [コンテナ識別子]
$ docker container stats webserver
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
bf92dbbd8ded webserver 0.00% 1.922MiB / 1.952GiB 0.10% 2.83kB / 2.27kB 0B / 0B 2
項目 | 説明 |
---|---|
CONTAINER ID | コンテナ識別子 |
NAME | コンテナ名 |
CPU % | CPU使用率 |
MEM USAGE/LIMIT | メモリ使用量/コンテナで使用できるメモリ制限 |
MEM % | メモリ使用率 |
NET I/O | ネットワークI/O |
BLOCK I/O | ブロックI/O |
PIDS | PID(Windowsコンテナ除く) |
コンテナの起動
docker container start [オプション] コンテナ識別子 [コンテナ識別子]
オプション | 説明 |
---|---|
--attach, -a | 標準出力/標準エラー出力を開く |
--interactive, -i | コンテナの標準入力を開く |
$ docker container start webserver
webserver
コンテナの停止
docker container stop [オプション] コンテナ識別子 [コンテナ識別子]
オプション | 説明 |
---|---|
--time, -t | コンテナの停止時間を指定する(デフォルトは10秒) |
$ docker container stop webserver
webserver
※強制的にコンテナを停止するときは、docker container kill コマンドを使います
コンテナの再起動
docker container restart [オプション] コンテナ識別子 [コンテナ識別子]
オプション | 説明 |
---|---|
--time, -t | コンテナの再起動時間を指定する(デフォルトは10秒) |
コンテナの削除
docker container rm [オプション] [コンテナ識別子] [コンテナ識別子]
オプション | 説明 |
---|---|
--force, -f | 起動中のコンテナを強制的に削除する |
--volumes, -v | 割り当てたボリュームを削除する |
$ docker container rm webserver
webserver
※停止中の全コンテナを削除するには、docker container prune コマンドを使用
コンテナの中断/再開
中断
docker container pause コンテナ識別子
再開
docker container unpause コンテナ識別子
サーバーの状態を確認
$ docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf92dbbd8ded nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp webserver