Docker チートシート

My Docker Cheat Sheet

translated on

私は以前の仕事で Docker を使っており、今の会社(eralabs.io)でも顧客のために使っています。そして、これまでの経験により得た Docker の知識を皆さんにシェアしたいと思い、Painless Docker Course を始めました。

私は Docker、コンテナ、オーケストレーション、分散システムが好きです。そして、Painless Docker の多くの読者がその内容に満足していることは嬉しいことでした。

Painless Docker はただの本ではなくコースとなりました。詳しくは、ウェブサイトをご覧ください。

ここで紹介しているのは、 Painless Docker Course の中身の一部です。Git repo でも公開していますので、ぜひご覧ください。

このチートシートは、Painless Docker Course にあるものの一部です。
GitHub のリポジトリ を公開しているので、よろしければコントリビュートしてください。

更新:このチートシートのために Web サイトを作成しました。リンクは下記をご参照ください。

https://dockercheatsheet.painlessdocker.com/

インストール方法

Linux

curl -sSL https://get.docker.com/ | sh

Mac

下記リンクをご使用ください。

https://download.docker.com/mac/stable/Docker.dmg

Windows

msi インストーラーをご使用ください。

https://download.docker.com/win/stable/InstallDocker.msi

Docker Registry と Repository

ログイン

docker login
docker login localhost:8080

ログアウト

docker logout
docker logout localhost:8080

イメージの検索

docker search nginx
docker search nginx --stars=3 --no-trunc busybox

イメージの取得

docker image pull nginx
docker image pull eon01/nginx localhost:5000/myadmin/nginx

イメージのプッシュ

docker image push eon01/nginx
docker image push eon01/nginx localhost:5000/myadmin/nginx

コンテナ

シンプルなコンテナの追加と起動

  • ubuntu:latest イメージを使用
  • コンテナの 80 番ポートをホストの 3000 番ポートへ割り当てる
  • カレントディレクトリをコンテナの /data へマウント
  • 注意:Windows を使用している場合、-v ${PWD}:/data-v "C:\Data":/data へ変更してください
docker container run --name infinite -it -p 3000:80 -v ${PWD}:/data ubuntu:latest

コンテナの作成

docker container create -t -i eon01/infinite --name infinite

コンテナの起動

docker container run -it --name infinite -d eon01/infinite

コンテナのリネーム

docker container rename infinite infinity

コンテナの削除

docker container rm infinite

コンテナの更新

docker container update --cpu-shares 512 -m 300M infinite

コンテナの起動と停止

コンテナの起動

docker container start nginx

コンテナの終了

docker container stop nginx

コンテナの再起動

docker container restart nginx

コンテナの一時停止

docker container pause nginx

コンテナの再開

docker container unpause nginx

コンテナの停止

docker container wait nginx

SIGKILL を送る

docker container kill nginx

他のシグナルを送る

docker container kill -s HUP nginx

既存のコンテナへ接続

docker container attach nginx

コンテナの情報を取得

動作しているコンテナの一覧

docker container ls
docker container ls -a

コンテナのログ

docker container logs infinite

コンテナのログを監視

docker container logs infinite -f

コンテナのインスペクト

docker container inspect infinite infinite
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q)

コンテナのイベント

docker system events infinite

パブリックポート

docker container port infinite

起動中のプロセス

docker container top infinite

リソースの使用状況

docker container stats infinite

コンテナ内のファイルやディレクトリの変更箇所を確認

docker container diff infinite

イメージの操作方法

イメージの一覧表示

docker images ls

イメージのビルド

docker build .
docker build github.com/creack/docker-firefox
docker build - < Dockerfile
docker build - < context.tar.gz
docker build -t eon/infinite .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .

イメージの削除

docker image rm nginx

tar ファイルをイメージとしてロード

docker image load < ubuntu.tar.gz
docker image load --input ubuntu.tar

イメージを tar で保存

docker image save busybox > ubuntu.tar

イメージの履歴の表示

docker image history

コンテナからイメージを作成

docker container commit nginx

イメージへのタグ付け

docker image tag nginx eon01/nginx

イメージのプッシュ

docker image push eon01/nginx

ネットワーク

ネットワークの作成

docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork
docker network create -d overlay \
  --subnet=192.168.0.0/16 \
  --subnet=192.170.0.0/16 \
  --gateway=192.168.0.100 \
  --gateway=192.170.0.100 \
  --ip-range=192.168.1.0/24 \
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
  MyOverlayNetwork

ネットワークの削除

docker network rm MyOverlayNetwork

ネットワークの一覧表示

docker network ls

ネットワーク情報の取得

docker network inspect MyOverlayNetwork

既存のコンテナをネットワークへ接続

docker network connect MyOverlayNetwork nginx

コンテナ起動時にネットワークへ接続

docker container run -it -d --network=MyOverlayNetwork nginx

ネットワークとコンテナの切断

docker network disconnect MyOverlayNetwork nginx

Docker のクリーニング

既存コンテナの削除

docker container rm nginx

コンテナとボリュームの削除

docker container rm -v nginx

全ての終了したコンテナを削除

docker container rm $(docker container ls -a -f status=exited -q)

全ての停止しているコンテナを削除

docker container rm `docker container ls -a -q`

Docker イメージの削除

docker image rm nginx

既存イメージの削除

docker image rm $(docker images -f dangling=true -q)

全イメージの削除

docker image rm $(docker images -a -q)

タグが付けられていないすべてのイメージを削除

docker image rm -f $(docker image ls | grep "^<none>" | awk "{print $3}")

全てのコンテナの停止と削除

docker container stop $(docker container ls -a -q) && docker container rm $(docker container ls -a -q)

既存ボリュームの削除

docker volume rm $(docker volume ls -f dangling=true -q)

使用していないコンテナ、イメージ、ネットワーク、ボリュームを削除

docker system prune -f

すべて削除

docker system prune -a

Docker Swarm

インストール

curl -ssl https://get.docker.com | bash

Swarm の初期化

docker swarm init --advertise-addr 192.168.10.1

ワーカーを Swarm に参加させる

docker swarm join-token worker

マネージャを Swarm に参加させる

docker swarm join-token manager

サービスの一覧表示

docker service ls

ノードの一覧表示

docker node ls

サービスの作成

docker service create --name vote -p 8080:80 instavote/vote

Swarm タスクの一覧表示

docker service ps

サービスをスケーリングさせる

docker service scale vote=3

サービスの更新

docker service update --image instavote/vote:movies vote
docker service update --force --update-parallelism 1 --update-delay 30s nginx
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
docker service update --limit-cpu 2 nginx
docker service update --replicas=5 nginx

もっと知りたいあなたへ

この記事に共感していただけたなら、Painless Docker Course でもっと興味深い内容を見つけることができます。

また、Eralabs では、Docker とクラウドを統合するプロジェクトのお手伝いをしています。こちらにご連絡いただき、プロジェクトについてお話しください。

DevOpsLinks を購読すると、世界中の IT エキスパートや DevOps のファンとオンラインで繋がることができます。

Shipped のニュースレターに登録すると、コンテナやオーケストレーション、サーバーレスの技術についてまとめた記事が読めます。

私の TwitterClarityWeb サイトもご覧ください。

私が書いた本 SaltStack For DevOps もチェックしてください。

最後に、Jobs For DevOps へのご参加もお忘れなく!

もしこの投稿を気に入っていただけたならば、ぜひ周囲の皆さんとシェアしてください。