docker 數據卷目的是實現宿主機和容器,容器與容器之間數據共享node
特色:python
數據雙向共享,改變任何一方其餘都會改變nginx
容器停掉或刪掉不會影響宿主機數據,保證了數據的持久化和安全性,是複製屬性docker
若是僅僅容器之間數據共享,則全部容器刪除數據也就沒了,但只要有一個,數據就還在centos
支持映射多個目錄,加多個-v便可tomcat
1.查看數據卷映射信息安全
docker volume ls [root@python-node01 ~]# docker volume ls DRIVER VOLUME NAME local portainer_data
2.掛載的方式ide
# 1. 匿名掛載:只指定容器裏的路徑,不指定宿主機路徑,默認會根據配置放到宿主機指定位置 docker -d --name test01 -v /container_path nginx # 經過查看容器詳細,可找到掛載到宿主機位置 docker inspect 容器id # 2. 具名掛載:就是指定宿主機目錄名字,默認在/var/lib/docker/volumes/名字 docker -d --name test02 -v 設定宿主機目錄名字不是路徑:容器路徑 nginx # 可經過docker volume inspect 查看目錄掛載的詳細信息 docker volume inspect 宿主機目錄名字 # 3. 路徑掛載 docker -d --name test03 -v 宿主機映射路徑:容器映射路徑 鏡像名或id # 擴展設定容器路徑的容器裏使用該目錄的權限,如只讀ro或可讀寫rw,默承認讀寫,在宿主機不受限制 docker -d --name test04 -v /temp/test04:/container_path:ro
3.宿主機與容器映射同步code
# 1. 啓動容器時直接使用 docker run -d --name 自定義容器名 -p 宿主機端口:容器端口 -v 宿主機映射路徑:容器映射路徑 鏡像名或id # 2. 經過dockerfile實現,內容以下 FROM centos # 容器內目錄掛載,默認在容器根目錄下建立,以下面容器裏掛載2個目錄,下面爲匿名掛載,沒有指定外部路徑 # 缺陷只能匿名掛載,無法指定宿主機路徑 volume ["volume01","volume02"]
4.容器與容器映射同步繼承
# 啓動第一個容器 docker -d --name container01 -v /home/testpath:/container_path tomcat # 啓動第二個容器,並繼承第一個容器的映射,由於繼承因此第二個都不須要指定映射目錄 docker -d --name container02 --volumes-from container02 tomcat # 並不會因第一個容器刪除,其餘容器的數據丟失,備份機制