Docker 數據卷及數據容器
這兩天開始學習docker,發現docker確實很強大,讓網站部署和維護的效率大大提高。遂準備將手頭維護的幾個小站,全部docker化。整理的過程中感覺到,docker可以以功能或者進程為單位進行部署和維護,不用再花時間在繁瑣的配置上面,但是docker和宿主之間的數據共享以及docker間的數據共享仍然是讓人頭疼和操心的地方。
幾個基本概念:
docker: 一種容器管理技術,這里也指既有的開發工具鏈。
container: 容器
image: 鏡像
volum:卷 [ 譯者:卷可以理解成計算機中的文件路徑 ]
容器中管理數據主要有兩種方式:
數據卷(Data Volumes)
數據卷容器(Data Volume Containers)
數據卷
數據卷是一個可供容器使用的特殊目錄,它繞過文件系統,可以提供很多有用的特性:
數據卷可以在容器之間共享和重用; 對數據卷的修改會立馬有效; 對數據卷的更新,不會影響鏡像; 卷會一直存在,直到沒有容器使用。數據卷的使用,類似于Linux下對目錄或文件進行mount操作。
掛載本地的目錄到容器里
[root@localhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEregistry latest 5c929a8b587a 29 hours ago 33.27 MBgenesis_centos latest 85bc3a58f134 5 days ago 277.6 MB192.168.1.179:5000/busybox latest 9967c5ad88de 12 days ago 1.093 MBbusybox latest 9967c5ad88de 12 days ago 1.093 MBcentos-6-x86 latest 8fca9486a39b 13 days ago 341.3 MBcentos_with_net latest 3e8ea8607f08 4 weeks ago 294.9 MBcentos latest 9baab0af79c4 6 weeks ago 196.7 MB[root@localhost ~]# ls /data/ls: 無法訪問/data/: 沒有那個文件或目錄[root@localhost ~]# mkdir /data/[root@localhost ~]# docker run -itd -v /data/:/data1 centos bash096460f831bfd72b2efc6ba6b7e7bb060152afa49506ef26e0fa3cb03974f8d5-v 用來指定掛載目錄 “:”前面的/data/為本地目錄 “:”后面的/data1/為容器里的目錄
[root@localhost ~]# touch /data/1.txt[root@localhost ~]# echo "test" > /data/1.txt[root@localhost ~]# docker exec -it 09646 bash[root@096460f831bf /]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/docker-253:0-1447735-096460f831bfd72b2efc6ba6b7e7bb060152afa49506ef26e0fa3cb03974f8d5 9.8G 231M 9.0G 3% /tmpfs 936M 0 936M 0% /devshm 64M 0 64M 0% /dev/shm/dev/mapper/VolGroup-lv_root 35G 6.0G 28G 18% /data1[root@096460f831bf /]# ls /data1/1.txt[root@096460f831bf /]# cat /data1/1.txttest[root@096460f831bf /]# touch /data1/2.txt[root@096460f831bf /]# exitexit[root@localhost ~]# ls /data/1.txt 2.txt
不管是把容器停掉、還是刪除,數據還是存在的
[root@localhost ~]# docker stop 0964609646[root@localhost ~]# ls /data/1.txt 2.txt[root@localhost ~]# docker rm 0964609646[root@localhost ~]# ls /data/1.txt 2.txt
新聞熱點
疑難解答