generated at
Docker素振り
適当に素振りできる環境があると良い


$ docker pull python:latest
$ docker images




$ docker run --name py -t python
pythonという名前のImageから、pyという名前でContainerを作成
敢えて -i を付けないで実行してみた
謎の挙動になる
止められなくなった

一度でもrunするとContainerが作成される
$ docker ps -a で確認できる

$ docker start py
作成済みのContainerを起動
何のoptionも付けてないと特に何も起こらないが、 docker ps すると確かに起動していることがわかる

$ docker exec py ls
execで外からコマンドを実行できる
ここではlsコマンドを実行している
-it をつけようがつけまいが挙動はほぼ変わりない

$ docker exec -it py bash
起動済みのContainerに対してbashコマンドを実行し、中にはいる
こっちは -it を付けないと特に何も起こらない

$ docker stop py
停止

$ docker rm py
Container削除



Volumeを試す
↓一応動いているけどrunとかのコマンドの実行の仕方がやや雑だと思うmrsekut
まずはVolumeなしで、いつ残っていていつ残っていないかを見る
$ docker exec -it py bash
home内にtxtを残す
# cd home
# echo logging... > log.txt
いったんexitして、再び $ docker exec -it py bash する
まだ残っている
いったん docker stop して、再び docker start してみる
まだ残っている
いったん docker rm してから、Containerを再作成する
消えている
Volumeを使う
logを残す
$ docker run --name py -v pylogs:/home -it python
$ docker start 41
$ docker exec -it py bash
# cd home/
# echo logging... > log.txt
# exit
$ docker volume ls
volume確認
docker rm でContainer消す
$ docker run --name py -v pylogs:/home -it python
再度Containerを作成
$ docker start 47
$ docker exec -it py bash
# cat home/logs.txt
残っている!!
ホストのディレクトリをmountする
$ cd Desktop
$ mkdir logs
ここでGUIのDockerを開いて、 Prefences> Resources > FILE SHARING と進み、
右下の + ボタンで今作ったディレクトリ /User/mrsekut/Desktop/logs を追加
apply & restartする
これをやらないと docker run した時にエラーになる
The path /logs is not shared from the host and is not known to Docker.
$ docker run --name py -v $PWD/logs:/home -it python
ちなみにcurrent dirは /User/mrsekut/Desktop
$ docker start c9
$ docker exec -it py bash
# cd home/
# mkdir logs
# echo logging... > logs/logs.txt
別のターミナルで $ cat ./logs/logs.txt と見ると中身が共有されていることがわかる