Docker、Docker Composeの新コマンドを備忘録的に記す。
間違いや指摘があればコメントお願いします。
Dockerコマンド
イメージをダウンロードする
$ docker image pull <イメージ名>
イメージ一覧を表示する
$ docker image ls
イメージの詳細情報を表示
$ docker image inspect <イメージ名 or イメージID>
イメージレイヤーを確認
$ docker image history <イメージ名 or イメージID
イメージを削除する
$ docker image rm <イメージ名 or イメージID>
イメージからコンテナを作成し、起動する
$ docker container run <イメージ名 or イメージID>
-
--name
:コンテナに任意の名前をつける -
--rm
:コンテナを実行した後に自動削除する -
-d
:デタッチドモードでコンテナを起動する。何もつけないとフォアグラウンドモードで起動する
コンテナを起動して任意のコマンドを実行させる
$ docker container run -it <イメージ名 or イメージID> <実行したいコマンド名>
- 例)
$ docker container run -it ubuntu:20.04 ls
コンテナ一覧を表示する
$ docker container ls
起動中のコンテナを止める
$ docker container stop <コンテナ名 or コンテナID>
コンテナを再起動する(Upにする)
$ docker container restart <コンテナ名 or コンテナID>
Up状態のコンテナに任意のコマンドを実行させる
$ docker container exec <コンテナ名 or コンテナID> <実行したいコマンド>
-
-d
:デタッチドモードでコンテナを起動する。何もつけないとフォアグラウンドモードで起動するため、コンテナのログが画面上に出力され、続けてコマンドがを打つことができなくなる
デタッチドモードのコンテナに接続する
$ docker container attach <コンテナ名 or コンテナID>
コンテナを破棄する
$ docker container rm <コンテナ名 or コンテナID>
- Exitedになっているコンテナにしか有効でない
-
-f
:動作中のコンテナも強制削除する
停止済みのコンテナをすべて削除
$ docker container prune
Dockerfileからイメージを作成する
docker image build <ディレクトリパス>
- ディレクトリパスはDockerfileが保存されているパス
-
-t
:イメージ名:タグ名をつける $ docker image build -t <イメージ名>:<タグ名> <ディレクトリパス>
新しいvolume領域を作成する
docker volume create <ボリューム名>
volume領域一覧を表示する
$ docker volume ls
指定したvolume領域の詳細情報を表示する
$ docker volume inspect <ボリューム名>
指定したvolume領域を削除する
$ docker volume rm <ボリューム名>
volumeに接続しながらコンテナを起動する
$ docker container run -v <ボリューム名>:<コンテナ内絶対パス> <イメージ名 or イメージID>
$ docker container run --mount type=volume src=<ボリューム名>,dst=<コンテナ内絶対パス> <イメージ名 or イメージID>
バインドマウントしながらコンテナを起動する
$ docker container run -v <ホスト絶対パス>:<コンテナ内絶対パス> <イメージ名 or イメージID>
$ docker container run --mount type=bind,src=<ホスト絶対パス>,dst=<コンテナ内絶対パス> <イメージ名 or イメージID>
- 毎回絶対パスを入力するのは面倒なので
$(pwd)/...
とすると良い
ホストとコンテナのポートを紐付ける
$ docker container run -p <ホスト側のポート>:<コンテナ側のポート> <イメージ名 or イメージID>
-
-p
によってホストマシンのポートとコンテナのポートを紐付ける
ネットワークの一覧を表示する
$ docker network ls
ネットワークの詳細情報を表示する
$ docker network inspect <ネットワーク>
新しいネットワークを作成する
$ docker network create <ネットワーク>
指定したネットワークに接続したコンテナを起動する
$ docker container run --network <ネットワーク> <イメージ名 or イメージID>
ネットワークを削除する
$ docker network rm <ネットワーク>
Docker Composeコマンド
Docker Composeを使ってコンテナの作成と起動
$ docker compose up
-
--build
:イメージの作り直しが行われる -
-d
:デタッチドモードでコンテナを起動する。何もつけないとフォアグラウンドモードで起動するため、コンテナのログが画面上に出力され、続けてコマンドがを打つことができなくなる
Docker Composeでコンテナを停止
$ docker compose stop
Docker Composeで作成済みのコンテナを起動
$ docker compose start
- 作成済みのコンテナを起動するだけで、コンテナの作成は行わない
- 複数のコンテナがある場合は、まとめて起動す
Docker Composeのプロジェクトを一覧表示
$ docker compose ls
Docker Composeでファイルをコピー
$ docker compose cp
-
$ docker compose cp <ホストのファイルパス> <コンテナ名:コンテナ内のファイルパス>
:コンテナへファイルをコピー -
$ docker compose cp <コンテナ名:コンテナ内のファイルパス> <ホストのファイルパス>
:ホストへファイルをコピー
Docker Composeで立ち上げたコンテナ一覧を表示
$ docker compose ps
Docker Composeでコンテナ内でコマンド実行
$ docker compose exec <コンテナ名> <実行したいコマンド名>
-
$ docker compose exec <コンテナ名> /bin/bash
:コンテナ内でシェルを立ち上げる
Docker Composeでコンテナの作成と実行
$ docker compose run <コンテナ名> <実行したいコマンド名>
-
--rm
:コンテナを実行した後に自動削除する
Docker Composeを使用して作成したコンテナの削除
$ docker compose down
- コンテナが実行中であっても使用可能。コンテナだけではなく紐づくネットワークも自動で削除する
-
--rmi
:イメージを削除 -
-v
:Docker Composeファイルのvolumes
に記載したボリュームと、コンテナにアタッチされた匿名ボリュームを削除 -
--remove-orphans
:Docker Composeファイルで定義されていないコンテナも削除
$ docker compose rm
- コンテナが実行中の場合、使用不可。コンテナを削除するが、紐づくネットワークは削除しない
-
-s
:コンテナの停止と削除を同時に行う