1. 程式人生 > 其它 >Docker精髓詳解

Docker精髓詳解

容器資料卷

資料卷介紹

Docker將運用與執行的環境打包形成容器執行, Docker容器產生的資料,如果不通過docker commit生成新的映象,使得資料做為映象的一部分儲存下來, 那麼當容器刪除後,資料自然也就沒有了。 為了能儲存資料在Docker中我們使用卷。

比如:Mysql容器,刪除容器後,資料就不見了。為了使資料儲存下來,容器之間有一個數據共享的技術!Docker容器中產生的資料,同步到本地!這就是卷技術! 類似目錄的掛載,將我們的容器內的目錄,掛載在Linux上面!

總結:資料卷就是容器的持久化和同步操作,容器間也可以資料共享

使用資料卷

  • 方式一:直接使用命令進行掛載 -v
# 命令 -v
docker run -it -v 

# 測試  
docker run -it -v /home/ceshi:/home centos /bin/bash

# 檢視元資料 是否掛載成功
docker inspect ec7929b6f99c

The path /home/ceshi is not shared from the host and is not known to Docker.

sudo su root # 切換root使用者

掛載成功後,容器和主機的檔案會自動同步

具名和匿名掛載

  • 匿名掛載
    -v 容器內的路徑!
# -P : 隨機對映埠
docker run -d -P --name nginx03 -v /etc/nginx nginx

# 檢視所有的卷的情況
docker volume  ls

如下圖:沒有具體的名字對應

  • 具名掛載
 docker run -d -P --name nginx04 -v juming-nginx:/etc/nginx nginx

實戰:Mysql資料持久化

# Docker Hub上沒有適用於arm64架構的mysql映象。
# M1晶片是arm64架構,也稱作aarch64架構,只能執行arm64/aarch64架構的程式。
docker pull mysql:5.7

docker pull mysql/mysql-server

docker run -d -p 3310:3306 -v /tmp/docker/mysql/conf:/etc/mysql/conf.d -v /tmp/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql/mysql-server

啟動我們的mysql
-d 後臺執行
-p 埠對映
-v 卷掛載
-e 環境配置
--name 容器的名字