Help us understand the problem. What is going on with this article?

Dockerコマンド一覧

More than 1 year has passed since last update.

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
okame_qiita
Webエンジニア/greenergy/ときどきfam
https://github.com/kk0917
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした