Docker 辞典
Docker コースで覚える docker のサブコマンドの一覧です。ファイルの操作や curl(pwd・cd・ls・mkdir・touch・cp・mv・rm・less・cat・echo・head・tail・grep・vi・sed・diff・wc・tree・find・curl・sudo・exit・hostname・id・whoami・export・ps・chmod・chown・date・sort・uniq・cut・xargs)と、コンテナの中のコマンド(apk・pip など)は最初から使えます。
コンテナの中のコマンドapk・apt-get・pip・npm・psql・redis-cli などいつでも使える
apk add --no-cache パッケージ apt-get update && apt-get install -y パッケージ pip install -r requirements.txt npm install / npm run ビルド redis-cli SET key value psql -U postgres -c "SQL"
コンテナ(や Dockerfile の RUN)の中で使うコマンドです。イメージに入っているものだけ使えます(alpine に bash や curl は入っていないので apk add で入れます)。
usermod / gpasswdユーザーの設定を変えるLv1 で覚える
usermod -aG グループ ユーザー gpasswd -a ユーザー グループ
-a を付けずに -G だけだと、今のグループから外れてしまうので注意。
$ sudo usermod -aG wheel bob
systemctlサービスの起動・停止・自動起動Lv1 で覚える
systemctl start|stop|restart|reload|status サービス systemctl enable|disable [--now] サービス systemctl is-active|is-enabled サービス systemctl list-units --type=service [--failed]
start は今すぐ起動、enable は再起動後も自動で起動。enable --now で両方。操作には sudo が必要です。
$ sudo systemctl enable --now httpd $ systemctl status sshd
dnf / yumパッケージの管理Lv1 で覚える
dnf install -y パッケージ dnf remove -y パッケージ dnf list installed dnf search 語 dnf provides コマンド
RHEL・Amazon Linux のパッケージ管理。-y で確認を省略します。yum は dnf の別名です。
$ sudo dnf install -y httpd $ dnf provides dig
dockerコンテナを動かすLv1 で覚える
docker <サブコマンド> [オプション] docker --version docker --help
イメージからコンテナを作って動かします。サブコマンド(run・ps・build…)ごとに働きが違います。デーモン(docker サービス)が動いていて、docker グループに入っている必要があります。
docker version / infoDocker の状態を見るLv1 で覚える
docker version docker info docker --version
クライアントとサーバー(デーモン)のバージョン、コンテナ・イメージの数などを表示します。Server の部分が出なければデーモンにつながっていません。
$ docker version
docker runコンテナを作って動かすLv2 で覚える
docker run [オプション] イメージ [コマンド] -d(裏で)--name 名前 -p ホスト:コンテナ -e KEY=値 -v 場所:パス -it(入って操作)--rm(終わったら消す)--network ネット --restart 方針
イメージが手元になければ pull してから、新しいコンテナを作って起動します。イメージの後ろにコマンドを書くと CMD の代わりに実行します。
$ docker run -d --name web -p 8080:80 nginx $ docker run --rm alpine echo hello $ docker run -it ubuntu bash
docker psコンテナの一覧Lv2 で覚える
docker ps
docker ps -a
docker ps -q
docker ps --format '{{.Names}} {{.Status}}'
docker port コンテナ動いているコンテナを表示します。-a で止まったものも、-q で ID だけ。STATUS の Up は動作中、Exited (n) は終了コード n で止まった状態。
$ docker ps -a
docker stop / start / restart止める・動かすLv3 で覚える
docker stop コンテナ... docker start コンテナ... docker restart コンテナ docker kill コンテナ
コンテナを止めても消えません(中のファイルも残る)。start で同じコンテナをもう一度動かします。
$ docker stop web $ docker start web
docker logsコンテナの出力を見るLv5 で覚える
docker logs コンテナ docker logs --tail 20 コンテナ docker logs -t コンテナ
コンテナのプログラムが標準出力・標準エラーに出したものを表示します。動かないコンテナの原因探しの第一歩。
$ docker logs web
docker exec動いているコンテナで実行Lv5 で覚える
docker exec コンテナ コマンド docker exec -it コンテナ sh docker exec -e KEY=値 -w ディレクトリ -u ユーザー コンテナ コマンド
動いているコンテナの中でコマンドを実行します。-it で中のシェルに入り、exit で戻ります(コンテナは動いたまま)。
$ docker exec -it web sh $ docker exec web cat /etc/nginx/conf.d/default.conf
docker images / pullイメージの一覧・取得Lv6 で覚える
docker images [名前] docker pull イメージ[:タグ] docker images -q docker images -f dangling=true
手元にあるイメージを表示します。pull はレジストリからイメージを取ってきます。タグを書かないと latest。
$ docker pull nginx:alpine $ docker images
docker rmコンテナを消すLv6 で覚える
docker rm コンテナ... docker rm -f コンテナ docker rm -v コンテナ docker rm $(docker ps -aq)
止まっているコンテナを消します。-f は動いていても止めて消します。消すと中で変えたファイルもなくなります。
$ docker rm web
docker rmiイメージを消すLv6 で覚える
docker rmi イメージ... docker rmi -f イメージ docker image rm イメージ
イメージを消します。コンテナ(止まっているものも)が使っているイメージは消せません。
$ docker rmi nginx:alpine
docker build / historyイメージを作るLv8 で覚える
docker build -t 名前:タグ ディレクトリ docker build -f ファイル --build-arg KEY=値 --no-cache --target ステージ . docker history イメージ
Dockerfile の命令を上から実行してイメージを作ります。最後の . はビルドコンテキスト(COPY できるファイルの場所)。前と同じ命令はキャッシュ(CACHED)を使います。
$ docker build -t myapp:1.0 . $ docker history myapp:1.0
docker tagイメージに別名をつけるLv12 で覚える
docker tag 元のイメージ 新しい名前:タグ
同じイメージに別の名前(タグ)をつけます。中身はコピーされません。レジストリに送るときは、レジストリの場所を名前の先頭につけます。
$ docker tag myapp:1.0 localhost:5000/myapp:1.0
docker inspect詳しい情報を見るLv15 で覚える
docker inspect 名前
docker inspect -f '{{.State.Status}}' コンテナ
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' コンテナコンテナ・イメージ・ネットワーク・ボリュームの設定と状態を JSON で表示します。-f で必要なところだけ取り出せます。
$ docker inspect -f '{{.State.ExitCode}}' webdocker volumeボリュームを管理するLv16 で覚える
docker volume create 名前 docker volume ls docker volume inspect 名前 docker volume rm 名前 docker volume prune
ボリュームはコンテナを消しても残るデータの置き場所です。docker run -v 名前:パス でコンテナにつなぎます。
$ docker volume create pgdata
docker cpファイルをコピーするLv18 で覚える
docker cp コンテナ:パス ホストのパス docker cp ホストのパス コンテナ:パス
コンテナとホストの間でファイルをコピーします。止まっているコンテナからも取り出せます。
$ docker cp web:/etc/nginx/nginx.conf .
docker networkネットワークを管理するLv21 で覚える
docker network create 名前 docker network ls docker network inspect 名前 docker network connect 名前 コンテナ docker network rm 名前
同じユーザー定義ネットワークにつないだコンテナは、コンテナ名で互いを呼べます(既定の bridge では名前で呼べない)。
$ docker network create appnet $ docker run -d --name db --network appnet redis
docker composeまとめて動かすLv27 で覚える
docker compose up -d [--build] docker compose ps / logs [サービス] docker compose exec サービス コマンド docker compose down [-v] docker compose config
compose.yaml に書いた複数のコンテナ(サービス)・ネットワーク・ボリュームを、まとめて作って動かします。サービス名で互いを呼べます。
$ docker compose up -d $ docker compose down
docker pushレジストリに送るLv35 で覚える
docker push レジストリ/名前:タグ docker pull レジストリ/名前:タグ
イメージをレジストリ(イメージの倉庫)に送ります。このシミュレーターでは、registry コンテナを localhost:5000 で動かして使います。
$ docker push localhost:5000/myapp:1.0
docker system / prune片付けるLv36 で覚える
docker system df docker container prune -f docker image prune [-a] -f docker volume prune -f docker system prune [-a] [--volumes] -f
使っていないコンテナ・イメージ・ネットワーク・ボリュームをまとめて消します。-f を付けないと確認を求められます。df で使っている容量を確かめます。
$ docker system df $ docker image prune -f