Docker_學習筆記系列之數據卷

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

# 並不會因第一個容器刪除,其餘容器的數據丟失,備份機制
相關文章
相關標籤/搜索