1. 程式人生 > >『中級篇』數據持久化之Data Volume(34)

『中級篇』數據持久化之Data Volume(34)

vol view 什麽 ESS lan databases 和數 reat 網絡

>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文鏈接地址:『中級篇』數據持久化之Data Volume(34)

有些容器會自動產生一些數據,為了不讓數據隨著container的消失而消失,保證數據的安全性。例如:數據庫容器,數據表的表會產生一些數據,如果我吧container給刪除,數據就丟失。為了保證數據不丟失,有了Volume的存在。
源碼https://github.com/limingios/docker No.3 方便學習數據持久化存儲

以官方的例子
  • hub.docker.com 搜索mysql,查看對應的Dockerfile,VOLUME /var/lib/mysql

技術分享圖片

技術分享圖片

技術分享圖片

VOLUME的使用

從本次開始我開始用第三方SecureCRT了不再用cmd了

#鏡像加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
#創建一個mysql容器,MYSQL_ALLOW_EMPTY_PASSWORD使用空密碼
sudo docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
sudo docker ps

技術分享圖片

#查看volume
sudo docker volume ls
#容器的volume的Id
sudo docker volume inspect 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597

技術分享圖片

技術分享圖片

#創建一個mysql2,查看對應的volume
sudo docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 
sudo docker volume ls
sudo docker volume inspect 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597

技術分享圖片

  • 刪除container 看看volume是否會消失
    sudo docker ps
    sudo docker stop mysql1 mysql2
    sudo docker rm mysql1 mysql2
    sudo docker volume ls
    sudo docker ps

技術分享圖片

  • 現在的volume 名字不太友好啊,得起個別名
    sudo docker volume ls
    sudo docker volume rm 06bb873ed273c2957b3798b14ed5b90d2d15af3b921c2d6dd09fd25920eba75f
    sudo docker volume rm 47d003ff423ad06560cdc6e7892d420e7555753f447855fa1fd5ace8a07ab597
    sudo docker volume ls

    技術分享圖片

#volume的別名是mysql,只向的路徑是/var/lib/mysql
sudo docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql   
sudo docker volume ls

技術分享圖片

  • 驗證volume生效

    mysql容器放入數據,然後刪除容器,在創建一個掛在容器,看看數據存在不存在。

sudo docker exec -it mysql2 /bin/bash
mysql -u root
show databases;
create database docker;
show databases;
exit;
exit
sudo docker ps
sudo docker volume ls

技術分享圖片

技術分享圖片

sudo docker rm -f mysql2
sudo docker volume ls
#掛在之前的mysql的volme
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 
sudo docker ps
sudo docker exec -it mysql1 /bin/sh
mysql -u root
#查看mysql數據庫中的docker是否存在,結果存在
show databases;

技術分享圖片

PS:這個是數據持久化的一種方式通過volume的方式。


往期精彩
  1. docker導學(一)
  2. 容器的技術概述(二)
  3. docker的魅力初體驗-5分鐘安裝wordpress不走彎路(三)
  4. docker官網介紹(四)
  5. 如何在mac上安裝docker(五)
  6. 如何在window上安裝docker(六)
  7. 如何在mac上通過vagrant安裝虛擬機(七)
  8. 如何在window上通過vagrant安裝虛擬機(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通過Docker-Machine在阿裏雲上的使用(11)
  12. docker架構和底層技術(12)
  13. docker Image概述(13)
  14. 手動建立一個base Image(14)
  15. 什麽是Container(15)
  16. 構建自己的Docker鏡像(16)
  17. Dockerfile詳解(17)
  18. 鏡像的發布(18)
  19. Dockerfile實戰(19)
  20. 容器的操作(20)
  21. Dockerfile實戰CMD和ENTRTYPOINT的配合(21)
  22. 容器的資源限制(22)
  23. docker網絡(23)
  24. docker學習必會網絡基礎(24)
  25. Linux網絡命名空間(25)
  26. Docker Bridge詳解(26)
  27. 容器之間的Link(27)
  28. 容器的端口映射(28)
  29. 容器網絡之host和none(29)
  30. 多容器復雜應用的部署(30)
  31. overlay網絡和etcd實現多機的容器通信(31)
  32. docker的數據持久化存儲和數據共享(32)
  33. windows下vagrant 通過SecureCRT連接centos7(33)
    技術分享圖片

『中級篇』數據持久化之Data Volume(34)