一、容器數據卷
docker 容器數據卷是容器在運行過程中持久化數據的一種方式,卷是目錄或文件,存在於一個或多個容器中,由docker 掛載到容器,但不屬於聯合文件系統,因此能夠繞過Union File System 提供一些用於持續存儲或共享數據的特性;卷的設計目的就是數據持久化,完全獨立於容器的生命周期,因此docker不會在容器刪除時,刪除其掛載的數據卷。
特點:
- 數據卷可在容器之間共享或重用數據。
- 卷中的更改可以直接生效。
- 數據卷中的更改,不會包含在鏡像中的更新。
- 數據卷的生命周期一直持續到沒有容器使用它為止。
二、 容器數據卷添加
- 直接命令添加
docker run -it -v /宿主機絕對路徑:/容器內目錄:權限 鏡像名
權限: ro (容器只能查看)例: 啟動一個 tomcat 容器 ,在容器 webapps 中增加一份文件,並且增加修改記錄。同時宿主機也做相同操作。
1.1 啟動Tomcat容器,執行完此命令后我們已經啟動一個tomcat 。
並且宿主機的/home/webapps目錄和容器中的 /usr/local/tomcat/webapps 目錄相關聯,當這兩個目錄中的文件會互相同步docker run -d -p 8080:8080 --name tomcat-v -v /home/webapps:/usr/local/tomcat/webapps tomcat
1.2 在宿主機的 /home/webapps 中創建一個 hello-host.txt 文件,在容器的 /usr/local/tomcat/webapps 目錄中也創建一個 hello-tomcat.txt文件,文件內容為文件名。
1.3 查看容器中的文件,和宿主機中的文件
容器中:
宿主機中:
1.4 通過 docker inspect 命令查看掛載信息
docker inspect 72f574d46676
- docker file 添加,使用 CentOS 演示
- 創建一個 Dockerfile 文件
- 編輯文件內容,寫入以下信息
FROM centos VOLUME ["/dataVlolumeContainer1","/dataVlolumeContainer1"] CMD echo "finished,-----------success" CMD /bin/bash
FROM 來自於一個父類的鏡像
VOLUME 給鏡像添加一個或多個容器卷
CMD 控制台執行的命令 - build 構建鏡像
docker build -f /home/my-docker-file/Dockerfile -t qizhi/centos .
參數:
-f 指定dockerfile 文件,默認情況下在執行命令的目錄下尋找 Dockerfile 文件
-t 指定鏡像名稱
. 在當前目錄下生成鏡像 - 運行我們自己構建的鏡像,並進入鏡像,查看我們自己生成鏡像時創建的兩個文件夾
啟動並進入容器:
docker run -it qizhi/centos /bin/bash
- 在容器我們構建的兩個容器卷中創建一個文件,並寫入一些文字。
- 在宿主機中查看我們在容器卷中創建的文件,和寫入的文件內容。
注: 可以使用 ctrl + q + P 退出容器,讓容器進入后台運行。退回宿主機中
使用 inspct 命令查看容器信息找到宿主機中相應的容器卷
docker inspect 1c56ca8581ea
- 查看宿主機中的文件內容
- 創建一個 Dockerfile 文件