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とかのコマンドの実行の仕方がやや雑だと思う

まずは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
と見ると中身が共有されていることがわかる