2016年 10月 20日

Dockerコマンドチートシート

コンテナの生成・起動

$ docker run [オプション] [イメージ名:タグ名] [引数]

オプション 説明
—name コンテナ名を指定 docker run --name "test" centos
-d バッググラウンド実行 docker run -d centos
-it コンソールに結果を出力 docker run -it --name "test" centos /bin/cal
-p host:cont ポートフォワーディング docker run -d -p 8080:80 httpd
--add-host ホスト名とIPを指定 docker run -it --add-host=test.com:192.168.1.1 centos
--dns DNSサーバを指定 docker run --dns=192.168.1.1 httpd
--mac-address MACアドレスを指定 docker run -it --mac-address="92:d0..." centos
--cpu-shares CPU配分 (全体で1024) docker run --cpu-shares=512 centos
--memory メモリの上限 docker run --memory=512m centos
-v ディレクトリの共有 docker run -v /c/Users/src:/var/www/html httpd
-e 環境変数を設定 docker run -it -e foo=bar centos /bin/bash
--env-file 環境変数リストから設定 docker run -it --env-file=env_list centos /bin/bash
-w 作業ディレクトリを指定 docker run -it -w=/tmp/work centos /bin/bash

稼働中のコンテナ操作

説明 コマンド 例(コンテナID=CID)
コンテナ一覧 docker ps [オプション] docker ps
コンテナ確認 docker stats コンテナID docker stats CID
コンテナ起動 docker start [オプション] コンテナID docker start CID
コンテナ停止 docker stop [オプション] コンテナID docker stop CID
コンテナ再起動 docker restart [オプション] コンテナID docker restart CID
コンテナ削除 docker rm [オプション] コンテナID docker rm CID
コンテナ中断 docker pause コンテナID docker pause CID
コンテナ再開 docker unpause コンテナID docker unpause CID
コンテナ接続 docker attach コンテナID docker attach CID
コンテナログ docker logs [オプション] コンテナID docker logs CID
プロセス実行 docker exec [オプション] コンテナID コマンド [引数] docker exec -it CID /bin/cal
プロセス確認 docker top コンテナID docker top CID
ポート確認 docker port コンテナID docker port CID
コンテナ名変更 docker rename 現在名 新しいコンテナ名 docker rename now new
イメージ差分 docker diff コンテナID docker diff CID
ファイルコピー docker cp 転送ファイル コンテナID:パス docker cp a.txt CID:/var
イメージの作成 docker commit [オプション] コンテナID イメージ名[:タグ名] docker commit CID my_image:1.0
イメージを.tarへ出力 docker export コンテナID docker export CID
.tarからイメージ作成 docker import パスorURL - イメージ名[:タグ名] cat src.tar|docker import - web:1.0
イメージ保存 docker save [オプション] 保存ファイル名 [イメージ名] docker save -o src.tar web
イメージロード docker load [オプション] docker load -i sec.tar

補足
・ コンテナIDはコンテナ名でも可
docker psは稼働中のコンテナ一覧。 docker ps -aは停止中を含めた全コンテナ一覧

【小技】

# 古いコンテナを一括削除
docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
# コンテナを一括削除
docker rm `docker ps -a -q`

イメージ操作

説明 コマンド 例(イメージID=IID)
pull docker pull [オプション] イメージ名[:タグ] docker pull centos:7
一覧 docker images [オプション] [リポジトリ名] docker images -a
詳細 docker inspect [オプション] [イメージID] docker inspect IID
検索 docker search [オプション] [キーワード] docker search nginx
削除 docker rmi [オプション] イメージ名 docker rmi nginx
ログ docker logs [オプション] イメージ名 docker logs nginx
タグ変更 docker tag [イメージID] [リポジトリ名]:[タグ] docker tag IID hello-world:new_tag

【小技】

# イメージの一括削除
docker rmi `docker images -q`

Docker Compose

説明 コマンド
コンテナ生成・起動 docker-compose up [オプション] [サービス] docker-compose up -d
生成コンテナ数 docker-compose scale [サービス=数] docker-compose scale web=10
コンテナ一覧 docker-compose ps [オプション] docker-compose ps
コンテナログ docker-compose logs [オプション] [サービス] docker-compose logs
コマンド実行 docker-compose run [オプション] [サービス] [コマンド] docker-compose run web /bin/cal
全コンテナ起動 docker-compose start [サービス] docker-compose start
全コンテナ再起動 docker-compose restart [オプション] [サービス] docker-compose restart
全コンテナ強制停止 docker-compose kill [オプション] [サービス] docker-compose kill
全コンテナ削除 docker-compose rm [オプション] [サービス] docker-compose rm
全コンテナをビルド docker-compose build [オプション] docker-compose build --no-cache

DockerFile

説明 コマンド
元となるイメージ FROM FROM name/web:ver1.0
作成者 MAINTAINER MAINTAINER name
環境変数 ENV ENV KEY=VALUE
指定のコマンドの実行 RUN RUN yum -y install httpd
イメージにファイル追加 ADD ADD index.html /var/www/html/index.html
ポート番号を指定 EXPOSE EXPOSE 3306
コンテナ起動時に実行するコマンド CMD CMD ["service","httpd","start"]
カレントディレクトリを指定 WORKDIR WORKDIR /var/www/html
ボリューム指定 VOLUME VOLUME /var/log/httpd
  • DockerFileは命令 オプション形式の行の羅列で構成される
  • #でコメント
  • Dockerfileはbuildサブコマンドでのビルド時に利用される
  • Dockerのビルドは、コマンド単位をステップとして実行する
    • 各ステップはコンテナのスナップショットをキャッシュする
    • Dockerfileを部分変更した場合は、その差分のみが実行される

Docker Hub

説明 コマンド
ログイン docker login [オプション] [サーバー] docker login -u "name" -p "pass"
ログアウト docker logout [サーバ名] docker logout
アップロード docker push イメージ名[:タグ名] docker push my_image:v1.0

Docker本体の情報

説明 コマンド
バージョン確認 docker version
実行環境確認 docker info

Dockerコンポーネント

Dockerはコア機能を提供する「Docker Engine」を中心に「イメージの作成→公開→コンテナ実行」を行うためのコンポーネント(部品)が提供されています
主なコンポーネントは次の通り



Docker Engine(Dockerのコア機能)

Docker イメージの生成やコンテナの軌道などを行うためのコア機能
Dockerコマンドの実行やDockerFileによるイメージの生成を行う


Docker Machine(Docker実行環境構築)

VirtualBoxをはじめ、AWSやAZUREなどのクラウド環境などにDockerの実行環境をコマンドで自動生成するツール


Docker Compose(複数コンテナの一元管理)

複数コンテナの構成情報をコードで定義して、コマンドを実行することでアプリケーションの実行環境を構成するコンテナ群を一元管理するためのツール


Docker Swarm(クラスタ管理)

Docker Swarmは複数のホストをクラスタ化するためのツール
クラスタの管理やAPIの提供を行う役割が「Manager」、Dockerコンテナを実行する役割が「Node」という


Docker Kitematic(DockerのGUIツール)

Dockerイメージの生成やコンテナの起動などを行うためのGUIツール
グラフィカルなUIなので非エンジニアの方に最適


Docker Registry(イメージの公開・共有)

コンテナの元となるイメージを公開・共有する為のレジストリ機能
Docker公式のレジストリサービスであるDocker Hubもこの機能を使用している


Docker Hub(Docker公式のレジストリ)

CentOS・nginxなどの公式イメージはこのレジストリから取得する
publicなので多くのユーザーによる自作のイメージが公開されている
イメージをprivateにしたい場合は社内サーバーにDocker Registryを立て、pushする流れになる

Yoshida e070c695df5d4bbe8e6b800136356dbfb59e78836e5658e2b5f4e4e33df4a66d
Ryo

グルメ旅とお酒が大好きなプログラマー
大阪界隈の勉強会運営もやってます。
趣味はボルダリング

follow us in feedly このエントリーをはてなブックマークに追加