Docker整理ノート(三)

3012 ワード

DockerストレージボリュームDockerストレージは多層連合マウント方式で実現され、上層読み書き(マーキング方式)、下層読み取り専用、書き込み時にコピーされる.利点:最下位ミラーは変更しない欠点:i/0効率の低下データ共有できないコンテナ削除はストレージボリュームを失う(volume):コンテナ自体のストレージが限られており、閉じた後にデータが失われるため、ローカルディスクまたは共有ディスクのファイルシステムをコンテナにバインドすることができるため、コンテナが閉じてもデータはローカルに永続的に保存されます.Aマウントボリュームのバインド手動指定B docker管理ボリュームdockerデフォルト指定
例:-vファイルシステムパス:containerパスファイルシステムを指定しない場合はデフォルトdocker管理ボリューム方式
[root@docker ~]# docker run -it --name  b2   -v  /data   busybox
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
/data # 


containerの詳細を表示すると、マウント状況が表示されます:docker inspect b 2
        "Mounts": [
            {
                "Type": "volume",
                "Name": "fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1",
                "Source": "/var/lib/docker/volumes/fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }


このディレクトリで正しいかどうかをテストします.
[root@docker ~]# docker run -it --name  b2   -v  /data   busybox
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
/data # touch a.sh
/data # ls
a.sh
/data # 


本物に行ってみてください.
[root@docker ~]# cd /var/lib/docker/volumes/fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1/_data
[root@docker _data]# ls
a.sh


つまり、コンテナが削除されても、新しいコンテナを作成したときにデータファイルを再指定すれば、Webサービスを開始すれば、Webを復元できます.
同じボリュームを複数のコンテナで使用することもできます:方法1:
[root@docker ~]# docker  run  --name b3   -it --rm  -v   /data/a:/etc  busybox 
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd /etc/ 
/etc # touch  a.sh
/etc # ls
a.sh         hostname     hosts        resolv.conf
/etc # 


[root@docker ~]# docker run  --name b1  -it --rm -v /data/a:/data  busybox 
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
a.sh         hostname     hosts        resolv.conf
/data # 


方法2:コンテナを作成するには、別のコンテナストレージボリュームと同じ設定を指定します:–volimes-fromテンプレートコンテナ
[root@docker ~]# docker run  --name b4    -it  --rm   --volumes-from  b3  busybox 
/ # ls etc/ 
a.sh         hostname     hosts        resolv.conf
/ # 


以前のアライアンスネットワークを加えてlntmモデルを作成することができ、nginx tomcat mysqlはnetwork ipc mount UTSを共有し、彼らの間でloネットワークカードを通じて情報を伝達することができます.
情報を表示する場合は、ansibleのテンプレートのように「辞書」を指定して表示することもできます.
[root@docker ~]# docker inspect    -f {{.NetworkSettings}} zw 
{{ 1a9913b0c8a7b841da601ec61021898c062584dec87501cfc9aab00b850450e6 false  0 map[] /var/run/docker/netns/1a9913b0c8a7 [] []} {   0  0  } map[bridge:0xc420184b40]}


Docker file