Dockerでよく使うコマンドまとめ


🐯 docker run/start/stop/rm/commitの概念図

docker run/start/stop/rm/commitの役割の概念図です。



参考元:Dockerにおけるコンテナのライフサイクル

😀 docker ps

docker psはDockerコンテナの状態を確認するコマンドです。

docker ps [オプション]
オプション 説明
-a ローカルで起動されたDockerコンテナをすべて表示
-f 条件を満たすコンテナだけにフィルタリング
docker ps --filter "label=color"
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 673394ef1d4c busybox "top" 47 seconds ago Up 45 seconds

🗻 docker pull

docker pullはDocker Hubやほかのレジストリからイメージを取得するコマンドです。

docker pull [オプション] イメージ名[:タグ|@イメージのハッシュ値]
オプション 説明
--all-tags すべてのタグ付けされたイメージを取得する
--disable-content-trust イメージのチェックをスキップする

実行例

docker pull debian:jessie

🍮 docker images

docker imagesはDockerイメージの一覧を表示するコマンド。

docker images [オプション] [レポジトリ]

🐠 docker build

docker buildはDockefileからDockerイメージを構築するためのコマンド。

docker build [オプション] パス/URL
オプション 意味
--build-arg Dockerfile内でARGで定義できる変数を指定
-f /パス/to/Dockerfile Dockerfileのファイルパスを指定
--no-cache=true build時にキャッシュを使わない
--pull=true FROMで指定したベースイメージを最新を取得する
--rm=true ビルド成功後中間コンテナを削除
--tag=xxx-t xxx タグの指定

🍄 docker run

docker runはDockerコンテナを起動するためのコマンド。

docker run [オプション] イメージ [コマンド] [引数...]
オプション 意味
--add-host サーバ名:IP Dockerコンテナの/etc/hostsを追記
-a STDIN/STDOUT/STDERRを出力する
-e 環境変数 環境変数をDockerコンテナに渡す
--entrypoint コマンド  ENTRY_POINTを指定
-f 環境変数ファイル 環境変数をファイルに設定してDockerコンテナに渡す
-i ホストの入力をコンテナの標準出力をつなげる
--log-driver=DRIVER ログドライバの指定。詳細は ロギング・ドライバの設定
-name Dockerコンテナに名前をつける
-pホストのポート:コンテナのポート ホストのポートとコンテナのポートをつなげる
-rm コンテナの終了時にコンテナを自動で削除する
-t コンテナの標準出力とホストの出力をつなげる

docker imageを立ち上げてbashを使う

Docker imageを立ち上げてbashを使うための手順です。ENTRY_POINTが設定されている場合は応答がなくなるので次のように指定します。

docker run -it --rm --entrypoint /bin/bash 

-itオプションの概念図

-itオプションをつけるとターミナルでコンテナを実行できます。



出典: Docker - docker runのオプションについて(19477)|teratail

🐹 docker exec

docker execはDockerコンテナに追加のプロセスを実行させるコマンドです。ターミナルへのアクセスなどを行います。

docker exec [オプション] コンテナ名 コマンド [引数...]

コンテナのshellに接続

docker exec -it コンテナ名 /bin/bash
オプション 説明
-i 標準入力(STDIN)を開いたままにする
-t 擬似ttyに接続する。ディスプレイ(STDOUT)をつなぐイメージ

🤔 docker attach

Dockerコンテナに起動しているPID=1のプロセスの標準入力(STDIN)と、標準出力(STDOUT)に接続するコマンドです。exitするとのそのプロセスも終了します。

docker attach [オプション] コンテナ名

exitするとPID=1のプロセスが終了するため、コンテナが停止します。

🗽 docker stop/kill

docker stopはコンテナプロセスにSIGTERMを送信後、一定時間が経過したらSIGKILLを送信する。

docker stop [オプション] コンテナ名 -f 待ち秒数

docker killはコンテナプロセスにSIGKILLを送信する。

docker kill [オプション] コンテナ名

🐡 docker start

docker stopは停止したコンテナを再起動するためのコマンド。

docker start [オプション] コンテナ名

😸 docker commit

Docker run & stopで停止したコンテナファイルを新しいイメージにするためのコマンドです。

docker commit [オプション] コンテナ名

通常はイメージの管理にDockerfileを使うのが望ましいので、デバッグ用、作業中のデータセットを別のサーバに持っていくために利用します。

🎃 docker search

docker searchはDocker Hub上のDockerイメージを検索するコマンド。

docker search [オプション] 検索ワード

🍣 docker rmi

docker rmiはDockerイメージを削除するコマンド。

docker rmi [オプション] イメージ名

😎 docker login

docker loginはレジストリサーバへのログインコマンド。以下は実行例です。

docker login
Username: xxx
Password:
Email: xxx@gmail.com

🐮 docker tag

docker tagはイメージにタグを付けるためのコマンドです。

docker tag ソースイメージ オーガニゼーション/イメージ:タグ

タグを設定する設定例です。

# イメージIDからタグ設定
docker tag イメージID(0e5574283393) オーガニゼーション/イメージ:タグ

# 名前とタグから別のタグを設定
docker tag イメージ名:タグ(httpd:test) fedora/httpd:version1.0.test

🏀 docker push

docker pushはイメージをレジストリ(Docker Hubなど)に登録するコマンドです。

docker push [オプション] イメージ名[:タグ]

👽 docker system prune

docker system pruneはDocker 1.13.ゼロから追加された機能で、使っていないコンテナやイメージを削除するコマンドです。

docker system prune
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all dangling images
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0 B

🏈 docker inspect

docker inspectはDockerイメージ/コンテナの詳細情報を表示するコマンドです。

docker inspect [オプション]
# [
# {
# "Id": "415faf47e8ca3050645d453d967ec1170a1ae4a97d53d26f541081da53e9f168",
# "Created": "2017-08-26T11:15:02.734679613Z",
# "Path": "/sbin/entrypoint.sh",
# "Args": [],

🐰 docker history

docker historyを使うとDockerイメージのレイヤを確認できます。

docker history repository:tag

🚜 補足:Docker MachineのIPを調べる

docker-machine ip

🐝 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍