最終更新日: 2026-08-02
TOP(About this memo)) > 一覧(Docker) > コマンド
docker build [ -t {イメージ名} [ :{タグ名} ] ] {Dockerfileのあるディレクトリ}
-t オプションは作成するDockerイメージのイメージ名およびタグ名を指定する。docker build -t myname/nginx:1.0 .FROM 命令で指定したベースイメージをもとに生成される。
docker compose build すると、下記のようなイメージが作成される。REPOSITORY TAG IMAGE ID CREATED SIZE
aws-deploy_nginx latest 58616a6c32d1 8 minutes ago 151MB
aws-deploy_php_fpm latest 64ea1bcb4963 8 minutes ago 891MB
node latest 1db64f55f800 8 hours ago 936MB
composer latest a2ae9cc28c17 5 days ago 172MB
nginx 1.19 f6d0b4767a6c 8 days ago 133MB
php 7.2-fpm 28f52b60203d 5 weeks ago 398MB
aws-deploy_nginx latest 58616a6c32d1 13 minutes ago 151MB
<AWSアカウントID>.dkr.ecr.us-east-1.amazonaws.com/aws-deploy_nginx latest 58616a6c32d1 13 minutes ago 151MB
aws-deploy_php_fpm latest 64ea1bcb4963 14 minutes ago 891MB
<AWSアカウントID>.dkr.ecr.us-east-1.amazonaws.com/aws-deploy_php_fpm latest 64ea1bcb4963 14 minutes ago 891MB
node latest 1db64f55f800 8 hours ago 936MB
composer latest a2ae9cc28c17 5 days ago 172MB
nginx 1.19 f6d0b4767a6c 8 days ago 133MB
php 7.2-fpm 28f52b60203d 5 weeks ago 398MB
docker container -hdocker の後の container は省略しても良い。docker run [オプション] [イメージ名:タグ名] [引数]run はコンテナの生成と起動を同時に行う。--rm と -it
docker run --rm -it --name phpmyadmin -e PMA_HOST=mysql --network ネットワーク名 -p 8080:80 --mount type=tmpfs,destination=/sessions phpmyadmin/phpmyadmin
-it によって標準出力/入力上でphpMyAdminが開始する。Ctrl+Cで終了すると --rm によってコンテナが自動的に破棄される。--rm: 指定コマンド終了と同時にコンテナを自動的に破棄する。
docker run --rm alpine env(envを出力して終了後に破棄)-t と -i
-i: コンテナ内の標準出力とホスト側の出力をつなげる。
docker run -i ruby:2.4 bash -> 何もできない。-t: ホスト側の入力をコンテナの標準出力につなげる。
docker run -t ruby:2.4 bash -> 入れるが、何も表示されない。-d(--detach): バックグラウンドで実行-v=[]: バインドマウントを作成: [ホスト側ディレクトリ:]コンテナ側ディレクトリ[:<オプション>]-e: 環境変数を渡せる。値を入れない場合はホストに設定されている値をそのまま渡す。/var/app の中身がすべて上書きされる(例えば /var/app の中に既に使いたいファイルがある場合は無くなってしまう)。docker run -it --rm -w /var/app -v $(pwd):/var/app gcr.io/distroless/static:debug-nonroot
この例の場合、/var/app には元々何も入っていないため問題ないが、自分で作成したイメージの /var/app にファイルが入っている場合は、実行時に存在しないというエラーになる。docker run -it --rm -w /var/app -v $PWD/firebase.json:/var/app/firebase.json gcr.io/distroless/static:debug-nonroot
/ を指定するとエラーになる。docker run -it --rm -w /var/app -v $PWD:/ gcr.io/distroless/static:debug-nonroot
# -> invalid specification: destination can't be '/'.
pwdを使う場合の挙動差(IME)docker run -it --rm -w /var/app -v `pwd`:`pwd` gcr.io/distroless/static:debug-nonroot
# コンテナ内の/Users/〜相当のディレクトリが作成されてしまう。マウント先の`pwd`はマウント元の`pwd`と同じ値になる。
docker run -it --rm -w /var/app -v $pwd:`pwd` gcr.io/distroless/static:debug-nonroot
# コンテナ内の/:/Users/〜相当にディレクトリが作成されてしまう。
docker run -it --rm -w /var/app -v $pwd:$pwd gcr.io/distroless/static:debug-nonroot
# 空白として解釈されるためか、意図しないディレクトリが作成される($pwdは未定義の変数のため)。
docker run -it --rm -w /var/app -v `pwd`:/var/app gcr.io/distroless/static:debug-nonroot
/var/app $ ls
# 意図通りマウントされている
docker cp ../setting/ コンテナ名:/tmp/settingdocker container stop {コンテナ名}docker stop $(docker ps -q) で全て停止できる。docker container top コンテナ名ps するのと同じ)。top コマンドのようなもの。docker statsdocker container ls(-a で停止しているものも全て確認できる)docker psdocker container ps や docker container list も同様に使える。docker container logs コンテナ-f で監視、--tail=10 などでtail表示。mkdir -p nginx/log
docker run -d -p 80:80 -v $(pwd)/nginx/log:/var/log/nginx --name webserver nginx
docker logs コンテナID -f --tail 1 |& grep --line-buffered -io '{.*}' | jq --unbuffered
|& を指定。docker inspect 【コンテナ名】 | grep -i log で確認できる(あるいは docker inspect --format='')。/var/lib/docker/container にある。echo "" > ログファイルdocker logs コマンドで十分と思われる(IMO)。docker exec コンテナ名 lsdocker container exec test /bin/ls -ldocker container exec -it コンテナ名 bash などでコンテナ内に入って実行すればよい。
/bin/bash などの対話コマンドを実行する場合
docker container exec -it コンテナ名 /bin/bashbash が入っていないことがあるため、その場合は /bin/sh を指定する。exec -it オプションで接続可能。ps や ls なども使える。作業が終了したら exit コマンドで切断する。exec で接続した場合は、exit してもコンテナは起動したままである(run の時にシェルを実行して exit した場合は、コンテナは停止する)。-u オプションで実行ユーザーを指定することも可能。-i は Keep STDIN open even if not attached(標準入力を開き続ける)、-t は Allocate a pseudo-TTY(疑似ttyを割り当てる)。-it をつけることで、手元の環境からdocker内へ入力できるようになる。docker volume ls: ボリュームを確認する。docker volume prune: ボリュームを全て削除する(ボリュームはコンテナを削除しても、削除されずに残る。コンテナが存在する場合は紐づいているボリュームは削除されない)。docker container rm webserver
docker container prune # 停止中のコンテナをすべて削除
docker rm $(docker ps -q -a) # -q: only show image ids
docker rmi イメージ名
docker rmi -f $(docker images -aq) # -f: 強制削除
docker rmi $(docker images --filter "dangling=true" -q) # <none>:<none> のimageを削除
特定の名前のimageだけ削除する。docker rmi `docker images --format " " | awk '$1 ~ /aaaaa/ {print $2}'`
docker system prune
docker system prune でボリュームも削除するには --volumes フラグが必要。docker stop $(docker ps -q) ; docker system prune --volumes
docker images -aq して一覧から個別に docker rmi -f イメージ名 で消していく。docker ps -a -> 何も表示されないdocker images -a -> 何も表示されないdocker network ls -> デフォルトのbridge, host, noneのみdocker volume ls -> 何も表示されないdocker imagesdocker info --format ''json-file