コンテナの確認
docker ps -a
ekosh@kekosh-mbp python % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61e626614dac continuumio/miniconda3 "/bin/bash" 10 hours ago Exited (0) 10 hours ago elated_boyd
1d6cf6b1489b continuumio/miniconda3 "/bin/bash" 10 hours ago Exited (0) 10 hours ago lucid_pascal
71f13efbdf47 hello-world "/hello" 12 hours ago Exited (0) 12 hours ago boring_burnell
d19acf3bb6bb 6b362a9f73eb "cowsay hello!" 2 months ago Exited (0) 2 months ago competent_hofstadter
b7b8c84c7252 6b362a9f73eb "hello" 2 months ago Created nifty_matsumoto
648b7c18dd75 6b362a9f73eb "cowsay Hello!" 2 months ago Exited (0) 2 months ago inspiring_bassi
b3e145e1cafe 6b362a9f73eb "cowsay goodbye!" 2 months ago Exited (0) 2 months ago goofy_thompson
60b883ba5862 6b362a9f73eb "cowsay Helloclear" 2 months ago Exited (0) 2 months ago epic_solomon
7978c44ef364 6b362a9f73eb "cowsay Hellodocker …" 2 months ago Exited (0) 2 months ago
特定のコンテナを削除
docker rm [Container ID]
kekosh@kekosh-mbp python % docker rm f101ba4df6f0
f101ba4df6f0
一括削除
docker rm $(docker ps -aq)
- -a : すべてを対象にする
- -q : 画面にIDのみ表示する。
- dockerコマンド $(コマンド):カッコ内のコマンド結果を変数としてdockerコマンドを実行する。(ループ処理)
kekosh@kekosh-mbp python % docker rm $(docker ps -aq)
61e626614dac
1d6cf6b1489b
71f13efbdf47
d19acf3bb6bb
b7b8c84c7252
648b7c18dd75
b3e145e1cafe
60b883ba5862
7978c44ef364
e44c6a002484
0d927b281231
6f0b0267ba22
adbc5e5e443d
取得済みDockerイメージの確認
docker images
kekosh@kekosh-mbp python % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
python-minicon init b9701ee9911d 10 hours ago 429MB
continuumio/miniconda3 latest b4adc22212f1 4 months ago 429MB
hello-world latest fce289e99eb9 18 months ago 1.84kB
kekosh/my_whalesay ver1 6b362a9f73eb 5 years ago 247MB
imageの削除
docker rmi [imageID]
イメージの削除
イメージを削除するためには先にイメージに紐付いているコンテナを削除する必要がある。
kekosh@kekosh-mbp python % docker rmi b9701ee9911d
Untagged: python-minicon:init
Deleted: sha256:b9701ee9911df562ba01ef99b7dfa4a3b2a3efc4bf9a059931281e5b86d3fa05
Deleted: sha256:79009b24f386f696f524b05869e52a1b0e644fda48683932c418e6b6a96ead4a
dockerイメージのインストール
docker pull [イメージ名]
<サンプル>
kekosh@kekosh-mbp python % docker pull django
Using default tag: latest
latest: Pulling from library/django
75a822cd7888: Pull complete
e4665cede9d1: Pull complete
202a45aa091c: Pull complete
7799136eb561: Pull complete
7a7f9ca3fd40: Pull complete
412f2d081014: Pull complete
Digest: sha256:5bfd3f442952463f5bc97188b7f43cfcd6c2f631a017ee2a6fca3cb8992501e8
Status: Downloaded newer image for django:latest
docker.io/library/django:latest
※イメージを自作しない場合は、「Docker Hub」で探す。
https://hub.docker.com/
イメージからコンテナを作成
docker run [-i -t (オプション)] imageID(またはイメージ名)
<サンプル:Anaconda公式イメージのコンテナを起動>
kekosh@kekosh-mbp python % docker run -i -t continuumio/anaconda3
(base) root@923d9b66994b:/#
- 最後に「/bin/bash」を指定してすることで、コンテナ起動直後からターミナルでコンテナ側のbash入力状態になる。(「(base)」の行)
- 作成するコンテナに別名を付ける場合は、「--name "別名"」を run のあとに付ける。
- 共有フォルダをマウントする場合は、「-v ホストのマウントフォルダ:コンテナのマウントフォルダ」
- 共有フォルダをマウントする場合は、事前に docker>Preference>FILE SHARING でマウントするホストレィレクトリを指定する必要がある。
kekosh@kekosh-mbp docker % docker run --name continuumio -v /Users/kekosh/work/docker:/home/continuumio -i -t bdb4a7e92a49
コンテナとローカルのポートを繋げる場合
Dockerで開発したWebアプリをの動作を確認する場合、ローカルのブラウザから確認できないとどうにもならない。
そのため、コンテナのポートとローカルのポートをつなげる。(つなげるという表現は正しくないけど理解のためにこの表現にする。)
kekosh@kekosh-mbp ~ % docker run --name pyworks -v /Users/kekosh/work/docker:/home -i -t -p 5000:5000 bdb4a7e92a49 /bin/bash
- -p ローカルのポート:ホストのポート で指定する。
- ポート番号は両者で異なっても問題ない。
コンテナを起動
docker start [ContainerID]
kekosh@kekosh-mbp ~ % docker start 923d9b66994b
923d9b66994b
#STATUSがUPになっている。
kekosh@kekosh-mbp ~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
923d9b66994b continuumio/anaconda3 "/bin/bash" 9 hours ago Up 12 seconds zen_ride
この状況ではコンテナが起動しただけでアクセスはできていないので、アクセスしてセッションを作成するコマンドを実行する必要がある。
コンテナにアクセス(ターミナルを接続状態)にする。
docker exec -it [ContainerID] [/bin/bash]
- /bin/bashの部分は実行したいコマンドに置き換え可能。
kekosh@kekosh-mbp ~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
923d9b66994b continuumio/anaconda3 "/bin/bash" 9 hours ago Up 4 minutes zen_ride
#コンテナにアクセスする。(-itはとりあえず指定しておく)
#「(base)」という表示がターミナルに出たらコンテナにアクセスできている。
kekosh@kekosh-mbp ~ % docker exec -it 923d9b66994b /bin/bash
(base) root@923d9b66994b:/#
コンテナの停止
コンテナを停止する。
docker stop [ContainerID]
#起動中のコンテナ(ターゲット)を確認
kekosh@kekosh-mbp ~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
923d9b66994b continuumio/anaconda3 "/bin/bash" 8 hours ago Up About a minute zen_ride
#コンテナを停止
kekosh@kekosh-mbp ~ % docker stop 923d9b66994b
923d9b66994b
#コンテナを停止すると、STATUSが「Exit」になる。
kekosh@kekosh-mbp ~ % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
923d9b66994b continuumio/anaconda3 "/bin/bash" 8 hours ago Exited (0) 2 minutes ago zen_ride
コンテナからのログアウト
Ctrl + Q または P
- デタッチと呼ぶ。
- コンソールの例えばpythonから抜ける感覚で「exit」 としてしまうとコンテナ自体が停止(シャットダウン)されてしまうので注意。
-- 追記 --
- Ctrl + D でも同様の結果になる。
- exitで抜けてもコンテナが停止しない。
#ここでCtrl+Qを押下
(base) root@923d9b66994b:/#
ホスト側フォルダとコンテナのフォルダをマウントする。
コンテナ上の所定ディレクトリに作成したファイルがホスト側にも残る。
docker run -it -v ホスト側マウントディレクトリ:コンテナ側ディレクトリ イメージID 起動時コマンド
kekosh@kekosh-mbp ~ % docker run -it -v /Users/kekosh/work/docker/continuumio:/home/work bdb4a7e92a49 /bin/bash
(base) root@2db318e47b40:/#
参考
https://qiita.com/Yarimizu14/items/52f4859027165a805630
マウントしたディレクトリの確認
docker inspect [コンテナ名]
kekosh@kekosh-mbp docker % docker inspect pyworks
[
{
"Id": xxxxxxxxxxxxxxxxxx,
"Created": "2020-08-08T06:22:29.0645659Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
〜〜〜〜〜 省略 〜〜〜〜〜〜〜
"Mounts": [
{
"Type": "bind",
"Source": "/Users/kekosh/work/docker",
"Destination": "/home",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],