よく使うコマンド
# 稼働中のコンテナに入る
$ docker-compose exec hoge_app bash
# stop
$ docker-compose stop
# docker-compose管理下のコンテナを削除し、紐づくボリュームも削除
$ docker-compose rm -v
# キャッシュを使わずにビルド
$ docker-compose build --no-cache
# コンテナを一括削除
$ docker rm `docker ps -a -q`
# 全てのボリュームを削除
$ docker volume rm $(docker volume ls -qf dangling=true)
# イメージ一覧
$ docker images -a
# イメージ一括削除
$ docker rmi `docker images -aq`
$ docker rmi -f `docker images -aq`
# docker images で REPOSITORY が <none> になっているものを削除(クライアントとデーモンAPIの両方がv1.25以降)
$ docker image prune
# docker images で REPOSITORY が <none> になっているものを削除(上記以下のバージョン)
$ docker rmi $(docker images | awk '/^<none>/ { print $3 }')
# ホストからコンテナへファイルをコピー
# docker cp <コピーするファイルのパス> <コンテナ名or ID>:<コンテナ保存先パス>
$ docker cp file.rc continername:/host/dir/
# コンテナからホストへファイルをコピー
# docker cp <コンテナ名or ID>:<コピーするファイルのパス> <ホスト保存先パス>
$ docker cp continer_name:/var/www/html/ /User/meta/hoge
コンテナの生成・起動
$ docker run [オプション] [イメージ名:タグ名] [引数]
オプション |
説明 |
例 |
--name |
コンテナ名を指定 |
docker run --name "test" centos |
-d |
バッググラウンド実行 |
docker run -d centos |
-it |
コンソールに結果を出力 |
docker run -it --name "test" centos /bin/cal |
-p host:cont |
ポートフォワーディング |
docker run -d -p 8080:80 httpd |
--add-host |
ホスト名とIPを指定 |
docker run -it --add-host=test.com:192.168.1.1 centos |
--dns |
DNSサーバを指定 |
docker run --dns=192.168.1.1 httpd |
--mac-address |
MACアドレスを指定 |
docker run -it --mac-address="92:d0..." centos |
--cpu-shares |
CPU配分 (全体で1024) |
docker run --cpu-shares=512 centos |
--memory |
メモリの上限 |
docker run --memory=512m centos |
-v |
ディレクトリの共有 |
docker run -v /c/Users/src:/var/www/html httpd |
-e |
環境変数を設定 |
docker run -it -e foo=bar centos /bin/bash |
--env-file |
環境変数リストから設定 |
docker run -it --env-file=env_list centos /bin/bash |
-w |
作業ディレクトリを指定 |
docker run -it -w=/tmp/work centos /bin/bash |
稼働中のコンテナ操作
説明 |
コマンド |
例(コンテナID=CID) |
コンテナ一覧 |
docker ps [オプション] |
docker ps |
コンテナ確認 |
docker stats コンテナID |
docker stats CID |
コンテナ起動 |
docker start [オプション] コンテナID |
docker start CID |
コンテナ停止 |
docker stop [オプション] コンテナID |
docker stop CID |
コンテナ再起動 |
docker restart [オプション] コンテナID |
docker restart CID |
コンテナ削除 |
docker rm [オプション] コンテナID |
docker rm CID |
コンテナ中断 |
docker pause コンテナID |
docker pause CID |
コンテナ再開 |
docker unpause コンテナID |
docker unpause CID |
コンテナ接続 |
docker attach コンテナID |
docker attach CID |
コンテナログ |
docker logs [オプション] コンテナID |
docker logs CID |
プロセス実行 |
docker exec [オプション] コンテナID コマンド [引数] |
docker exec -it CID /bin/cal |
プロセス確認 |
docker top コンテナID |
docker top CID |
ポート確認 |
docker port コンテナID |
docker port CID |
コンテナ名変更 |
docker rename 現在名 新しいコンテナ名 |
docker rename now new |
イメージ差分 |
docker diff コンテナID |
docker diff CID |
ファイルコピー |
docker cp コンテナID:ファイル パス |
docker cp CID:/var/www/a.txt /Users/ryo/ |
イメージの作成 |
docker commit [オプション] コンテナID イメージ名[:タグ名] |
docker commit CID my_image:1.0 |
イメージを.tarへ出力 |
docker export コンテナID |
docker export CID |
.tarからイメージ作成 |
docker import パスorURL - イメージ名[:タグ名] |
cat src.tar|docker import - web:1.0 |
イメージ保存 |
docker save [オプション] 保存ファイル名 [イメージ名] |
docker save -o src.tar web |
イメージロード |
docker load [オプション] |
docker load -i sec.tar |
補足
・ コンテナIDはコンテナ名でも可
・ docker ps
は稼働中のコンテナ一覧。 docker ps -a
は停止中を含めた全コンテナ一覧
イメージ操作
説明 |
コマンド |
例(イメージID=IID) |
pull |
docker pull [オプション] イメージ名[:タグ] |
docker pull centos:7 |
一覧 |
docker images [オプション] [リポジトリ名] |
docker images -a |
詳細 |
docker inspect [オプション] [イメージID] |
docker inspect IID |
検索 |
docker search [オプション] [キーワード] |
docker search nginx |
削除 |
docker rmi [オプション] イメージ名 |
docker rmi nginx |
ログ |
docker logs [オプション] イメージ名 |
docker logs nginx |
タグ変更 |
docker tag [イメージID] [リポジトリ名]:[タグ] |
docker tag IID hello-world:new_tag |
Docker Compose
説明 |
コマンド |
例 |
コンテナ生成・起動 |
docker-compose up [オプション] [サービス] |
docker-compose up -d |
生成コンテナ数 |
docker-compose scale [サービス=数] |
docker-compose scale web=10 |
コンテナ一覧 |
docker-compose ps [オプション] |
docker-compose ps |
コンテナログ |
docker-compose logs [オプション] [サービス] |
docker-compose logs |
立ち上げ+コマンド実行 |
docker-compose run [オプション] [サービス] [コマンド] |
docker-compose run web /bin/cal |
|
|
|
コマンド実行 |
docker-compose exec [オプション] |
docker-compose exec web bash |
|
|
|
全コンテナ起動 |
docker-compose start [サービス] |
docker-compose start |
全コンテナ再起動 |
docker-compose restart [オプション] [サービス] |
docker-compose restart |
全コンテナ強制停止 |
docker-compose kill [オプション] [サービス] |
docker-compose kill |
全コンテナ削除 |
docker-compose rm [オプション] [サービス] |
docker-compose rm |
全コンテナをビルド |
docker-compose build [オプション] |
docker-compose build --no-cache |
|
|
|
DockerFile
説明 |
コマンド |
例 |
元となるイメージ |
FROM |
FROM name/web:ver1.0 |
作成者 |
MAINTAINER |
MAINTAINER name |
環境変数 |
ENV |
ENV KEY=VALUE |
指定のコマンドの実行 |
RUN |
RUN yum -y install httpd |
イメージにファイル追加 |
ADD |
ADD index.html /var/www/html/index.html |
イメージにファイルコピー |
COPY |
COPY index.html /var/www/html/index.html |
ポート番号を指定 |
EXPOSE |
EXPOSE 3306 |
コンテナ起動時に実行するコマンド |
CMD |
CMD ["service","httpd","start"] |
カレントディレクトリを指定 |
WORKDIR |
WORKDIR /var/www/html |
ボリューム指定 |
VOLUME |
VOLUME /var/log/httpd |
- DockerFileは
命令 オプション
形式の行の羅列で構成される
-
#
でコメント
- Dockerfileは
build
サブコマンドでのビルド時に利用される
- Dockerのビルドは、コマンド単位をステップとして実行する
- 各ステップはコンテナのスナップショットをキャッシュする
- Dockerfileを部分変更した場合は、その差分のみが実行される
Docker Hub
説明 |
コマンド |
例 |
ログイン |
docker login [オプション] [サーバー] |
docker login -u "name" -p "pass" |
ログアウト |
docker logout [サーバ名] |
docker logout |
アップロード |
docker push ユーザ名/イメージ名[:タグ名] |
docker push user/my_image:v1.0 |
terminal
# Dockerhubへログイン
docker login -u "name" -p "pass"
# カレントディレクトリのDockerfileからイメージを作成
# docker build -t ユーザー名/イメージ名:タグ名 .
docker build -t wmetaw/mylinux:1.0 .
# Dockerhubへpush
docker push wmetaw/mylinux:1.0
削除系
docker container prune #停止コンテナ全削除
docker rm -f `docker ps -a -q` #全コンテナ一括削除
docker image prune #未使用イメージ一括削除
docker rmi `docker images -f "dangling=true" -q` #タグ無しイメージ一括削除
docker volume prune # 未使用ボリューム一括削除
docker network prune #未使用ネットワーク一括削除
docker system prune --volumes #docker system pruneではボリュームまでは削除してくれない
【小技】
# 古いコンテナを一括削除
docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
起動中のDockerコンテナのシェルに入る
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------
dockerphpmysqlapache_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
dockerphpmysqlapache_phpmyadmin_1 /run.sh phpmyadmin Up 0.0.0.0:8080->80/tcp
dockerphpmysqlapache_www_1 docker-php-entrypoint apac ... Up 0.0.0.0:8001->80/tcp
$ docker-compose exec php bash
root@34a04a7a46a2:/var/www/html# ls
index.php
Dockerの終了
$ docker-compose kill -s SIGINT
docker-compose upと docker-compose buildの違い
up -> Dockerfile or imageで指定したイメージがダウンロード済みならダウンロードせずに実行,なければダウンロードして実行
build -> Dockerfile or imageで指定したイメージをpull
環境変数の渡し方
References
Docer Documentation
https://docs.docker.com
Docker Composeの日本語リファレンス
http://docs.docker.jp/compose/toc.html
Docker Compose - CLI リファレンス
https://qiita.com/zembutsu/items/eca797efaed39ec7b906
Docker Compose - docker-compose.yml リファレンス
https://qiita.com/zembutsu/items/9e9d80e05e36e882caaa
docker-compose コマンドまとめ
https://qiita.com/wasanx25/items/d47caf37b79e855af95f