Docker チートシート
My Docker Cheat Sheet by Aymen El Amri on
原著者の許諾を得て翻訳・掲載しています。
私は以前の仕事で Docker を使っており、今の会社(eralabs.io)でも顧客のために使っています。そして、これまでの経験により得た Docker の知識を皆さんにシェアしたいと思い、Painless Docker Course を始めました。
私は Docker、コンテナ、オーケストレーション、分散システムが好きです。そして、Painless Docker の多くの読者がその内容に満足していることは嬉しいことでした。
Painless Docker はただの本ではなくコースとなりました。詳しくは、ウェブサイトをご覧ください。
ここで紹介しているのは、 Painless Docker Course の中身の一部です。Git repo でも公開していますので、ぜひご覧ください。
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 のニュースレターに登録すると、コンテナやオーケストレーション、サーバーレスの技術についてまとめた記事が読めます。
私の Twitter、Clarity、Web サイトもご覧ください。
私が書いた本 SaltStack For DevOps もチェックしてください。
最後に、Jobs For DevOps へのご参加もお忘れなく!
もしこの投稿を気に入っていただけたならば、ぜひ周囲の皆さんとシェアしてください。