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