# docker マイチートシート ###### tags: `docker` ## よく使うコマンド ```bash # 稼働中のコンテナに入る $ docker-exec hoge_app bash $ docker exec -it hoge_app bash # stop $ docker-compose stop # docker-compose管理下のコンテナを削除し、紐づくボリュームも削除 $ docker-compose rm -v # キャッシュを使わずにビルド $ docker-compose build --no-cache t # コンテナを一括削除 $ 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 | | image差分 | docker diff コンテナID | docker diff CID | | ファイルコピー | docker cp コンテナID:ファイル パス | docker cp CID:/var/www/a.txt /Users/ryo/ | | imageへのコミット | docker commit [オプション] コンテナID image名[:タグ名] | docker commit CID my_image:1.0 | | imageを.tarへ出力 | docker export コンテナID | docker export CID | | .tarからimage作成 | docker import パスorURL - イメージ名[:タグ名] | cat src.tar|docker import - web:1.0 | | image保存 | docker save [オプション] 保存ファイル名 [イメージ名] | docker save -o src.tar web | | imageロード | docker load [オプション] | docker load -i sec.tar | 補足 ・ コンテナIDはコンテナ名でも可 ・ `docker ps`は稼働中のコンテナ一覧。 `docker ps -a`は停止中を含めた全コンテナ一覧 【小技】 ``` # 古いコンテナを一括削除 docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm # コンテナを一括削除 docker rm `docker ps -a -q` ``` ## イメージ操作 | 説明 | コマンド | 例(イメージ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 rmi `docker images -q` ``` ## 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 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 | ### docker-compose run [オプション] | オプション | 説明 | 例 | | -------- | -------- | -------- | | --service-ports | 外部にportを開放 | ```docker-compose run --rm --service-ports mongo /bin/bash``` | ## 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` ポート番号を指定 | 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 | ```bash: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本体の情報 | 説明 | コマンド | |----------------|----------------| | バージョン確認 | docker version | | 実行環境確認 | docker info | ## Dockerコンポーネント Dockerはコア機能を提供する「Docker Engine」を中心に「イメージの作成→公開→コンテナ実行」を行うためのコンポーネント(部品)が提供されています 主なコンポーネントは次の通り <hr> #### **Docker Engine(Dockerのコア機能)** Docker イメージの生成やコンテナの軌道などを行うためのコア機能 Dockerコマンドの実行やDockerFileによるイメージの生成を行う <br><hr> #### **Docker Machine(Docker実行環境構築)** VirtualBoxをはじめ、AWSやAZUREなどのクラウド環境などにDockerの実行環境をコマンドで自動生成するツール <br><hr> #### **Docker Compose(複数コンテナの一元管理)** 複数コンテナの構成情報をコードで定義して、コマンドを実行することでアプリケーションの実行環境を構成するコンテナ群を一元管理するためのツール <br><hr> #### **Docker Swarm(クラスタ管理)** Docker Swarmは複数のホストをクラスタ化するためのツール クラスタの管理やAPIの提供を行う役割が「Manager」、Dockerコンテナを実行する役割が「Node」という <br><hr> #### **Docker Kitematic(DockerのGUIツール)** Dockerイメージの生成やコンテナの起動などを行うためのGUIツール グラフィカルなUIなので非エンジニアの方に最適 <br><hr> #### **Docker Registry(イメージの公開・共有)** コンテナの元となるイメージを公開・共有する為のレジストリ機能 Docker公式のレジストリサービスであるDocker Hubもこの機能を使用している <br><hr> #### **[Docker Hub](https://hub.docker.com/)(Docker公式のレジストリ)** CentOS・nginxなどの公式イメージはこのレジストリから取得する publicなので多くのユーザーによる自作のイメージが公開されている ## レイヤーについて ## Q&A ### ```failed to create network weel_server_weel_server: Error response from daemon: Pool overlaps with other one on this address spacee```とでる 以下のコマンドを実行し利用されていないネットワークを削除する ```$docker system prune```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up