pyてよn日記

一寸先は闇が人生

Docker コマンドチートシート

Docker Compose に頼っていると Docker コマンドの使い方忘れるので、ちょくちょく使ったコマンドをメモしていく。

References

docs.docker.com

docs.docker.com

Dockerfile 内で変数置換をする

docs.docker.com

FROM busybox
ENV FOO=/bar
WORKDIR ${FOO}   # WORKDIR /bar
ADD . $FOO       # ADD . /bar
COPY \$FOO /quux # COPY $FOO /quux

docker build: Dockerfile から Docker イメージのビルド

  • -t オプションでイメージ名、タグを設定
  • コマンド末尾の . は Dockerfile が存在するディレクトリを指す。基本的にカレントディレクトリにある Dockerfile をビルドすることが多いので . を使用する場合が多い。
docker build -t [name[:tag]] .
docker build -t myapp:latest .

docker run: Docker コンテナの起動

  • Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • -d: ディタッチモード(detached mode)でコンテナを起動。コンテナをバックグラウンドで起動。
# foreground モード
docker run -it --rm --name [container name] -v [host dir]:[remote dir] [image name] [arg]

# arg 無指定:Dockerfile の CMD で指定したコマンドが実行される
docker run -it --rm --name kenchon-book -v $(PWD):/workdir kenchon-book:latest
# 例えば、CMD ["/bin/bash"] ならコンテナ内で /bin/bash が実行される

# arg 指定:arg で渡したコマンドを実行
docker run -it --rm --name kenchon-book -v $(PWD):/workdir kenchon-book:latest /bin/zsh
# コンテナ内で /bin/zsh が実行される

# detached モード
docker run -d -it --rm --name [container name] -v [host dir]:[remote dir] [image name]
docker run -d -it --rm --name texlive-ja -v $(PWD):/workdir nukopy/ubuntu-texlive-ja:latest

docker exec: コンテナ内でコマンドを実行

docker exec [container name] [comand]
docker exec -it texlive-ja /bin/bash

docker ps: 起動中、停止中、全てのコンテナの確認

# 起動中のコンテナの確認
docker ps
docker ps -f status=running

# 停止中のコンテナの確認
docker ps -f status=paused

# 全てのコンテナの確認
docker ps --all

ローカル環境のクリーンアップ: コンテナ、イメージ、ネットワーク、ボリュームの全削除

# <none> イメージの全削除
docker image prune

# 停止中コンテナ全削除
docker container prune

# 上 2 つ + 使っていないネットワークとボリュームも全削除
docker system prune

後で読む

起動中の Docker コンテナのシェルへの接続方法 attach と exec の違い

qiita.com