0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker コマンドまとめ

Last updated at Posted at 2018-01-21

よく使うコマンド


# 稼働中のコンテナに入る
$ 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

##環境変数の渡し方
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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?