よく使うコマンド
# 稼働中のコンテナに入る
$ 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 |
# 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
##環境変数の渡し方
https://qiita.com/KEINOS/items/518610bc2fdf5999acf2
#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