★Docker 自分用チートシート



f:id:noel-blog:20200617145847p:plain
Dockerの概念図



knowledge.sakura.ad.jp

qiita.com




(1) docker runコマンドは3つのコマンドの合体

(2) docker images

(3) docker ps -a

(4) コンテナのステータス

(5) (起動している)コンテナへのシェル接続

(6) Docker Machine

(7) Docker Compose

(8) Docker Engine

(9) mysqlコンテナを立ち上げる

(10) Dockerイメージの削除




(1) docker runコマンドは3つのコマンドの合体

  1. docker pull: イメージの取得
  2. docker create: コンテナの作成
  3. docker start: コンテナの起動




(2) docker images

  • ダウンロード済みのDockerイメージを一覧表示する
[REPOSITORY] 
今までにダウンロードされイメージのリポジトリ名

[TAG]

[IMAGE ID]
イメージを一意に識別するためのID

[CREATED]
(多くの場合、他人によって)イメージが作成された日

[SIZE]




(3) docker ps -a

  • 停止したコンテナも含めて一覧表示する
[CONTAINER ID] 
コンテナを一意に識別するためのID

[IMAGE]
コンテナを立ち上げる際に材料にしたイメージ名


[COMMAND]

[CREATED]
(自分によって) コンテナが作成された日

[STATUS]
コンテナの状態

[PORTS]
(ホストIP[mac]):(ホスト・ポート番号[mac]) -> (コンテナ・ポート番号[linux])


(docker-composeで機能しているポートフォワーディングの例)
0.0.0.0:443->443/tcp, 0.0.0.0:56789->80/tcp   laradock_nginx_1
9000/tcp                                      laradock_php-fpm_1
0.0.0.0:2222->22/tcp                          laradock_workspace_1
2375-2376/tcp                                 laradock_docker-in-docker_1

(( 注意 ))
laradock_php-fpm_1コンテナのように、
「(矢印無しで) 9000/tcp」となっている場合、
9000番ポートを外部に接続(バインド?)していない。


[NAME]




(4) コンテナのステータス

[Up] コンテナが実行中の状態
[Running] コンテナが実行中の状態
[Exited] コンテナが停止した状態
[Created] コンテナが作成され、実行される前の状態



[Restarting]
[Removing]




(5) (起動している)コンテナへのシェル接続

  • docker exec -it [コンテナID or コンテナ名]
docker exec -it [CONTAINER ID] /bin/sh
docker exec -it [NAME] /bin/sh




(6) Docker Machine




(7) Docker Compose

# コンテナ群を起動
$ docker-compose up -d (コンテナ名: 1) (コンテナ名: 2)
(=> vagrant up)

# コンテナ群を停止
$ docker-compose stop
(=> vagrant halt)

初期設定

* データの保存先(APP_CODE_PATH_HOST, DATA_PATH_HOST)変更
* プロジェクト名称(COMPOSE_PROJECT_NAME)を変更




(8) Docker Engine




qiita.com




(9) mysqlコンテナを立ち上げる




少々変更が必要

>>> プロジェクトの方の.envにて

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

これは、Laradockの.envに合わせている

#### 合わせる対象 (Laradockの.env)

### MYSQL #################################################

MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

変更点

#DB_HOST=127.0.0.1
DB_HOST=mysql

#DB_DATABASE=laravel
DB_DATABASE=default

#DB_USERNAME=root
DB_USERNAME=default

#DB_PASSWORD=
DB_PASSWORD=secret
$ docker-compose up -d --build mysql




laradockの.envを変更したら再ビルド

$ docker-compose up -d --build workspace nginx postgres php-fpm




(10) Dockerイメージの削除




  • ローカルPCにある、Dockerイメージの一覧表示
$ docker image ls

REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE

****_json-server   latest    d4557563a4ba   3 weeks ago    922MB
****_app           latest    695e085a34a6   8 weeks ago    640MB
****_php                        7.4-fpm   60f4f2a9d3bb   4 months ago   405MB
****_mysql                      5.7       a70d36bc331a   4 months ago   449MB
****_nginx                      1.18      b9e1dc12387a   4 months ago   133MB
****_phpmyadmin/phpmyadmin      latest    badddfc395a5   5 months ago   469MB
  • Dockerコンテナの起動状態確認
$ docker ps -a

CONTAINER ID   IMAGE                          COMMAND                  CREATED      STATUS      PORTS                                                  NAMES
9ac187df9e56   nginx:1.18                     "/docker-entrypoint.…"   3 days ago   Up 3 days   0.0.0.0:8000->80/tcp, :::8000->80/tcp                  ***_nginx

7bc9600b5722   ***_app               "docker-php-entrypoi…"   3 days ago   Up 3 days   9000/tcp                                               ***_php

640ae7dbacf9   phpmyadmin/phpmyadmin:latest   "/docker-entrypoint.…"   3 days ago   Up 3 days   0.0.0.0:8080->80/tcp, :::8080->80/tcp                  ***_phpmyadmin_1

aade56db476b   mysql:5.7                      "docker-entrypoint.s…"   3 days ago   Up 3 days   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   ***_db-host

625623b55486   ***_json-server       "docker-entrypoint.s…"   3 days ago   Up 3 days   0.0.0.0:33000->33000/tcp, :::33000->33000/tcp          ***_json-mock-server

=> 今回は全て Up (起動中)。

  • docker-composeを利用しているので、docker-composeでも、コンテナの起動状態確認
$ docker-compose ps -a
          Name                         Command               State                          Ports                       
------------------------------------------------------------------------------------------------------------------------
***_db-host                     docker-entrypoint.sh --exp ...   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

***_json-mock-server            docker-entrypoint.sh sh -c ...   Up      0.0.0.0:33000->33000/tcp,:::33000->33000/tcp       

***_nginx                       /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp,:::8000->80/tcp  
             
***_php                         docker-php-entrypoint php-fpm    Up      9000/tcp                     
                      
***_phpmyadmin_1   /docker-entrypoint.sh apac ...   Up      0.0.0.0:8080->80/tcp,:::8080->80/tcp  
  • docker-compose stop
$ docker-compose stop


Stopping ***_nginx                     ... done
Stopping ***_php                       ... done
Stopping ***_phpmyadmin_1 ... done
Stopping ***_db-host                   ... done
Stopping ***_json-mock-server          ... done
  • docker-composeでコンテナ状態確認
$ docker-compose ps -a

          Name                         Command                State     Ports
-----------------------------------------------------------------------------
***_db-host                     docker-entrypoint.sh --exp ...   Exit 0          
***_json-mock-server            docker-entrypoint.sh sh -c ...   Exit 137        
***_nginx                       /docker-entrypoint.sh ngin ...   Exit 0          
***_php                         docker-php-entrypoint php-fpm    Exit 0          
***_phpmyadmin_1   /docker-entrypoint.sh apac ...   Exit 0  
  • dockerでも、コンテナ状態確認
$ docker ps -a

CONTAINER ID   IMAGE                          COMMAND                  CREATED      STATUS                            PORTS     NAMES
9ac187df9e56   nginx:1.18                     "/docker-entrypoint.…"   3 days ago   Exited (0) About a minute ago               nginx
7bc9600b5722   ***_app               "docker-php-entrypoi…"   3 days ago   Exited (0) About a minute ago               php
640ae7dbacf9   phpmyadmin/phpmyadmin:latest   "/docker-entrypoint.…"   3 days ago   Exited (0) About a minute ago               ***_phpmyadmin_1
aade56db476b   mysql:5.7                      "docker-entrypoint.s…"   3 days ago   Exited (0) About a minute ago               ***_db-host
625623b55486   ***_json-server       "docker-entrypoint.s…"   3 days ago   Exited (137) About a minute ago             ***_json-mock-server

[コンテナの停止] => [コンテナの削除] => [イメージの削除]

https://docs.docker.jp/engine/reference/commandline/stop.html

  • コンテナの停止 (docker stop {CONTAINER ID})
$ docker stop 9ac187df9e56

9ac187df9e56
  • コンテナの削除 (docker rm {CONTAINER ID})
$ docker rm 9ac187df9e56

9ac187df9e56
  • コンテナの削除 (docker-compose down)
$ docker-compose down

Removing php                       ... done
Removing ***_phpmyadmin_1 ... done
Removing ***_db-host                   ... done
Removing ***_json-mock-server          ... done
Removing network ***_default
  • コンテナイメージの削除[1つずつ] (docker rmi {IMAGE ID})
$ docker rmi ****_json-server 

Untagged: ****_json-server:latest
Deleted: sha256:d4557563a4ba1f218f8eaffe16f3b5e4340c8857abef31b63dbef23c103ce198
  • コンテナイメージの削除[全部] (docker rmi $(docker images -q)})
$ docker rmi $(docker images -q)

Untagged: ****_app:latest
Deleted: sha256:695e085a34a632ffb02b384c7dbef633d4c51a1aa4ce968199b9fec181ce2993

Untagged: php:7.4-fpm
Untagged: php@sha256:e9efa237664ac68793c62a7eb202a0383cce7e82ac43fb7f71347c23f1b6d3c7
Deleted: sha256:60f4f2a9d3bb379958f23250d368c7ea62c3b07e708fb0848046e595c6756fae

Untagged: mysql:5.7
Untagged: mysql@sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
Deleted: sha256:a70d36bc331a13d297f882d3d63137d24b804f29fa67158c40ad91d5050c39c5
Deleted: sha256:50c77bf7bcddd1f1d97789d80ac2404eec22c860c104e858620d2a2e321f0ef7
Deleted: sha256:14244329b83dfc8982398ee4104a548385652d2bffb957798ff86a419013efd6
Deleted: sha256:6d990477f90af28473eb601a9bca22253f6381e053c5a8edda0a4f027e124a3c
Deleted: sha256:ee0449796df204071589162fc16f8d65586312a40c68d1ba156c93c56f5e5ce8
Deleted: sha256:d08533f1e2acc40ad561a46fc6a76b54c739e6b24f077c183c5709e0a6885312
Deleted: sha256:4f9d91a4728e833d1062fb65a792f06e22e425f63824f260c8b5a64b776ddc38
Deleted: sha256:20bf4c759d1b0d0e6286d2145453af4e0e1b7ba3d4efa3b8bce46817ad4109de
Deleted: sha256:a9371bbdf16ac95cc72555c6ad42f79b9f03a82d964fe89d52bdc5f335a5f42a
Deleted: sha256:5b02130e449d94f51e8ff6e5f7d24802246198749ed9eb064631e63833cd8f1d
Deleted: sha256:ab74465b38bc1acb16c23091df32c5b7033ed55783386cb57acae8efff9f4b37

Untagged: nginx:1.18
Untagged: nginx@sha256:ebd0fd56eb30543a9195280eb81af2a9a8e6143496accd6a217c14b06acd1419
Deleted: sha256:b9e1dc12387ae52eee5da783128deb8bdee0dc3b29fc3874cd81cf2190f71099
Deleted: sha256:f9aebc0cc1e2955d8c13f7318fed90e0cf674b1d637fed5b9821de268ad22b31
Deleted: sha256:609646e0dffb93b45ed24af32ee975ef74cfa357efcb8fd8feb916ce7e8aa0a3
Deleted: sha256:bbf586edfcbe0ec880cd0459cb9445b11f01e1345291c5afb8c30685dd7371c3
Deleted: sha256:3401ac568a2e38058264bd753024073c2e97bfdf3cae99468161c68d5f183784

Untagged: phpmyadmin/phpmyadmin:latest
Untagged: phpmyadmin/phpmyadmin@sha256:7d98bb1eaaa15289624b36cb1b0259a4d6aed4b797a5466e95d6f2e2e3d9008e
Deleted: sha256:badddfc395a59f98b325411de4167d5d429fdbe8d9e07eb237353fdfbb6bb1f3
Deleted: sha256:560a568e8587a510815ff68b397e732ad0a7f96d244f88bf8ab4f68d7daf667f
Deleted: sha256:1f4cfd505b1e65ff695ffb28a80dce1805cf0ede4f151818c43c46960d7b019c
Deleted: sha256:8d2558ca2e4f0ed72be9e77eb4d9d4adfd7a50a7b23a8ee7edc346a60bcb4401
Deleted: sha256:cfe72120c9b4da34b1088e6457328234140a551fb5dd1f7171c7daf649329c8a
Deleted: sha256:d8f138debd6f1ec5a8eb8b322b7ebdad7fb4f9c3d72c00dceab133cb5c7005fa
Deleted: sha256:092caf8621eee90814c9aa724b007c91302d0aae1429906ea1d13a4c798d52b4
Deleted: sha256:f7b0b6034c89578c4b57e731f3985e384cc42dd7d7a7e7540bdd6e215d52781a
Deleted: sha256:3547ba207c92adc841cd8d6df8076e204fd85bb96a416bece1cb3bddbe436208
Deleted: sha256:71ed64c5d6a3b5eb7a5a0d2229bfa0cb93e88f3730bc7867f4ff1fbd64931d84
Deleted: sha256:1070af2779f10067bbd758dd5c6fa8efa51f6f96654f85c1153fe1dd5cf54427
Deleted: sha256:04f8b0f55683dc7a106acf0f44fdd709bbde535889710c877569a9fd1064d39d
Deleted: sha256:2ee746151beb7b0b3ae453bb83c6d0828ee5671a14f60160da05c663f6b4286a
Deleted: sha256:cb7a8356ede0b61bd6f540981c5b1d91b7e5385412e36684f65f904bbf590c92
Deleted: sha256:698904aae259d168b38dad3c8d8c6787b722e92f4b9dfcee0ee8a2ab8240f4c5

qiita.com