Dockerを触る際に、「あれ、これどうやってやるんだっけ?」という人のために、
よく使用する操作コマンドをまとめました。
想定する読者
- 使用頻度が高いdockerコマンドについて知りたい人
- 忘れてしまいがちなdockerコマンドを書き留めておきたい人
早速本題に入っていきます
dockerコマンド
イメージ操作
dockerイメージの検索
docker search [options] 検索キーワード
docker search --limit 5 mysql
dockerイメージの取得
docker image pull [options] リポジトリ名[:タグ名]
※タグ名を省略した場合にはデフォルトタグが利用される
docker image pull jenkins:latest
dockerイメージの一覧
docker image ls [options] [リポジトリ[:タグ]]
docker image ls
イメージのビルド
ビルド
docker image build -t example/echo:latest .
-fオプションをつけると、Dockerfile名を選択できる
docker image build -f Dockerfile-test -t example/echo:latest .
build時にベースイメージを強制取得
docker image build --pull=true -t example/echo:latest .
イメージのタグ付け
静止点を残してバージョンを管理したい場合に便利
docker image tag 元イメージ名[:タグ] 新イメージ名[:タグ] docker image tag example/echo:latest example/echo:0.1.0
イメージの公開
docker image push [options] リポジトリ名[:タグ] 手順
1. 名前空間の変更
docker image tag example/echo:latest gogogonkun(DockerHubのID)/echo:latest
2. Docker Hubへプッシュ ※プッシュするDockerfileにはパスワードやAPIなどの機密情報を含めないように
docker image push gogogonkun/echo:latest
コンテナの実行
dockerイメージの実行
基本形
docker container run [options] イメージ名[:タグ] [コマンド] [コマンド引数...]
docker container run [options] イメージID [コマンド] [コマンド引数...]
docker container run -d -p 9000:8080 example/echo:latest
docker container run よく使うオプション
-dオプション:バックグランドでコンテナを実行
docker container run -d example/echo:latest
-itオプション:コンテナを作ってログイン
-i → docker起動後にコンテナ側の標準入力を繋いだままに
-t → 擬似端末を有効に
docker container run -it -d -p 9000:8080 example/echo:latest
-name [適当な名前]:dockerコマンドの名前の指定に、ここで設定した名前を使用
docker container run --name hogehoge -p 9000:8080 example/echo:latest
-p {ホスト側のポート}:{コンテナポート}:ポートフォワーディングを指定してコンテナを実行
docker container run -d -p 9000:8080 example/echo:latest
-rm:コンテナ終了後にコンテナを破棄
-v:ホストとコンテナ間でディレクトリ・ファイルを共有する際に使用
ホスト側のポートは省略可能(自動で割り当て)
※どのポートに割り当てられたかは、docker container ls で確認
docker container run -d -p 8080 example/echo:latest
コンテナの停止
docker container stop コンテナIDまたはコンテナ名
docker container stop b60e6cafd96d
単純に停止
docker stop $(docker container ls -q)
指定したimage名の停止
docker container stop $(docker container ls --filter "ancestor=example/echo" -q)
コンテナの再起動
docker container コンテナIDまたはコンテナ名
docker container restart echo
コンテナをディスクから破棄
docker container rm コンテナIDまたはコンテナ名
docker container rm hogehoge
-fオプション:実行中のコンテナを停止・削除
docker container rm -f hogehoge
コンテナ一覧
起動中のコンテナ確認
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b60e6cafd96d example/echo:latest "go run /echo/main.go" 5 seconds ago Up 4 seconds 0.0.0.0:9000->8080/tcp elated_khayyam
項目 | 内容 |
---|---|
CONTAINER ID | コンテナに付与される一意のID |
IMAGE | コンテナ作成に使用されたDockerイメージ |
COMMAND | コンテナで実行されているアプリケーションのプロセス |
CREATED | コンテナが作成されてから経過した時間 |
STATUS | Up(実行中)、Exited(終了)といったコンテナの実行状態 |
PORTS | ホストのポートとコンテナポートの紐付け(ポートフォワーディング) |
NAMES | コンテナにつけられた名前 |
コンテナIDだけを抽出する
docker container ls -q
b60e6cafd96d
特定条件に一致するものだけを抽出
docker container ls --filter "filter名=値"
docker container ls --filter "name=echo1"
docker container ls --filter "ancestor=example/echo"
終了したコンテナを取得する
docker container ls -a
標準出力の取得
docker container logs [options] コンテナIDまたはコンテナ名
docker container logs -f $(docker container ls --filter "ancestor=jenkins" -q)
実行中コンテナでのコマンド実行
docker container exec [options] コンテナIDまたはコンテナ名 コンテナ内で実行するコマンド
docker container run -t -d --name echo --rm example/echo:latest
docker container exec echo pwd
コンテナ間、コンテナ・ホスト間でファイルコピー
docker container cp [options] コンテナIDまたはコンテナ名:コンテナ内のコピー元 ホストのコピー元 コンテナ→ホストのカレントディレクトリにコピー
docker container cp echo:/echo/main.go .
docker container cp [options] ホストのコピー元 コンテナIDまたはコンテナ名:コンテナ内のコピー元 ホスト→コンテナにコピー
docker container cp dummy.txt echo:/tmp
docker container exec echo ls /tmp | grep dummy
docker-composeコマンド
composeファイル内のキーワード
- image: → Dockerイメージ
- ports: → ポートフォワーディング
- build: → Dockerfileが存在するディレクトリの相対パス
- volumes: →ホスト・コンテナかんでファイルが共有される
- environment: → 環境変数を設定(変数名=値)
- links: → コンテナ間の名前解決(コンテナ名)
docker-compose.ymlからDockerコンテナを実行
docker-compose up -d
docker-compose.ymlから起動したDockerコンテナを停止
docker-compose down
--build:Dockerイメージを更新して実行
docker-compose up -d --build
docker-composeで起動したコンテナの確認
docker compose ps
一括で削除:prune
使用していないイメージを削除
docker image prune [options]
docker image prune
使用していないコンテナを削除
docker container prune [options]
docker container prune
使用していないdockerリソースを削除
docker system prune
コンテナ単位でのシステムリソースの利用状況を取得
docker container stats [options] [表示するコンテナID]
docker container stats
参考
Docker/Kubernetes 実践コンテナ開発入門
よく使うDockerコマンド
https://qiita.com/noralife/items/18301143c20cc5172c56