参考:プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化 : 阿佐 志保(著), 山田 祥寛(監修)
Dockerの情報確認
Dockerのバージョン確認 (docker version)
$ docker version
Dockerの実行環境確認 (docker info)
コンテナの数、イメージの数、ストレージドライバの種類、OS、Dockerホスト名などが確認できる。
$ docker info
イメージに関する操作
イメージのダウンロード (docker pull)
$ docker pull [オプション] イメージ名[:タグ名]
CentOSのバージョン7のイメージをダウンロード
$ docker pull centos:7
CentOSのすべてのタグのイメージ
$ docker pull -a centos
取得したイメージの一覧表示 (docker images)
$ docker images [オプション] [リポジトリ名]
イメージの詳細確認 (docker inspect)
$ docker inspect [オプション] コンテナ識別子またはイメージ識別子 [コンテナ識別子またはイメージ識別子]
イメージID、作成日、Dockerのバージョン、イメージの作成者、CPUのアーキテクチャなどがJSON形式で表示される。
centosイメージの詳細を確認
$ docker inspect centos
centosイメージのOSの値を取得
$ docker inspect --format="{{ .Os}}" centos
centosイメージのContainerConfigのImageの値を取得
$ docker inspect --format="{{ .ContainerConfig.Image }}" centos
イメージのタグ設定 (docker tag)
$ docker tag <元REPOSITORY:TAG> <新REPOSITORY:TAG>
httpd:2.4というイメージにユーザ名userがtest:1.0というタグをつける場合
$ docker tag httpd:2.4 user/test:1.0
Docker Hub上のイメージの検索 (docker search)
$ docker search [オプション] 検索キーワード
お気に入り件数STARSの件数が、30件以上のcentosイメージだけを検索
$ docker search --stars=30 centos
イメージの削除 (docker rmi)
イメージ名にはREPOSITORYまたはIMAGE IDを指定する。複数のイメージを同時削除の場合はスペース区切り
$ docker rmi [オプション] イメージ名 [イメージ名]
Docker Hubへのログイン (docker login)
$ docker login [オプション] [サーバ名]
コマンド後、ユーザ名、パスワード、メールアドレスを入力し、ログインできる。
$ docker login
Username: <登録したユーザ名>
Password: <登録したパスワード>
Email: <登録したメールアドレス>
Login Succeeded
イメージのアップロード (docker push)
$ docker push イメージ名[:タグ名]
*事前にDocker Hubにログインしておくこと
Docker Hubからのログアウト (docker logout)
$ docker logout [サーバ名]
コンテナに関する操作
コンテナの生成&起動 (docker run)
$ docker run [オプション] イメージ名[:タグ名] [引数]
centosイメージをもとにしてtest1という名前でコンテナを生成&起動、コンテナ内で/bin/calコマンドを実行。
$ docker run -it --name "test1" centos /bin/cal
-it : コンソールに結果を出す。(-i : コンテナの標準入力を開く、 -t : tty(端末デバイス)を使う
--name "test1" : コンテナにtest1という名前を付ける。省略するとランダムな名前が自動設定される。
コンテナのバッググラウンド実行 (-d)
centosもとにしてコンテナを生成&起動、コンテナ内でlocalhostに対してpingをバッググラウンドで実行。
$ docker run -d centos /bin/ping localhost
対話的にコマンドを実行した場合コンテナIDが表示される。
docker logs -t <コンテナID> によってコンテナのログを確認できる
pingコマンド実行後もコンテナは残る。自動的に削除する場合は--rmオプションを指定する。
コンテナのネットワーク設定 (-p, --dns, --mac-address, --add-host)
①コンテナのポート番号80をホストOSのポート番号をマッピングする場合(-p)
②DNSサーバを指定する場合 (--dns)
③MACアドレスを指定する場合 (--mac-address)
④ホスト名とIPアドレスを指定する場合 (--add-host)
$ docker run -d -p 8080:80 httpd ----①
$ docker run --dns=192.168.1.1 httpd ----②
$ docker run -it --mac-address="92:d0:c6:0a:29:33" centos ----③
$ docker run -it --add-host=test.com:192.168.1.1 centos ----④
リソースを指定してコンテナを生成&実行 (--cpu-shares, --memory)
CPUやメモリなどのリソースを指定する
$ docker run --cpu-shares=512 --memory=512m centos
--cpu-shares:CPUの使用の配分を指定 (全体で1024なので例の場合50%)
--memory:使用するメモリの上限(単位はb,k,m,g)
ディレクトリの共有 (-v)
$ docker run -v /c/Users/asa/WebPage:/var/www/html httpd
ホストの/c/Users/asa/WebPageをコンテナの/var/www/htmlと共有し実行
コンテナの環境変数を設定して実行(-e)
$ docker run -it -e foo=bar centos /bin/bash
コンテナの環境変数をファイルで設定して実行(--env-file)
$ docker run -it --env-file=env_list centos /bin/bash
[env_listの内容]
hoge=fuga
foo=bar
作業ディレクトリを指定して実行(-w)
$ docker run -it -w=/tmp/work centos /bin/bash
稼働コンテナの一覧表示 (docker ps)
$ docker ps [オプション]
コンテナの稼働確認 (docker stats)
$ docker stats [コンテナ識別子]
apacheとnginxという名前のコンテナの稼働状況を確認
$ docker stats apache nginx
コンテナの起動 (docker start)
$ docker start [オプション] コンテナ識別子 [コンテナ識別子]
コンテナの停止 (docker stop)
$ docker stop [オプション] コンテナ識別子 [コンテナ識別子]
コンテナの再起動 (docker restart)
$ docker restart [オプション] コンテナ識別子 [コンテナ識別子]
コンテナの削除 (docker rm)
$ docker rm [オプション] コンテナ識別子 [コンテナ識別子]
コンテナの中断,再開 (docker pause, docker unpause)
$ docker pause コンテナ識別子 [コンテナ識別子]
稼働コンテナへの接続 (docker attach)
$ docker attach コンテナ名
稼働コンテナでプロセス実行 (docker exec)
$ docker exec [オプション] コンテナ識別子 実行するコマンド [引数]
稼働コンテナのプロセス確認 (docker top)
$ docker top コンテナ名
稼働コンテナのポート転送確認 (docker port)
$ docker port コンテナ名
コンテナの名前変更 (docker rename)
$ docker rename 現在のコンテナ名 新しいコンテナ名
ホストとコンテナ間でファイルをコピー (docker cp)
$ docker cp コンテナ識別子:コンテナ内のファイルパス ホストのディレクトリパス
$ docker cp ホストのファイル コンテナ識別子:コンテナ内のファイルパス
コンテナ操作の差分確認 (docker diff)
$ docker diff コンテナ識別子
コンテナからイメージ作成 (docker commit)
$ docker commit [オプション] コンテナ識別子 [イメージ名[:タグ名]]
コンテナをtarファイル出力 (docker export)
$ docker export コンテナ識別子
tarファイルからイメージ作成 (docker import)
$ docker import ファイルまたはURL - [イメージ名[:タグ名]]
イメージの保存 (docker save)
$ docker save [オプション] 保存ファイル名 [イメージ名]
イメージの読み込み (docker load)
$ docker load [オプション]
随時追加中