Docker精髓詳解
阿新 • • 發佈:2021-10-20
容器資料卷
資料卷介紹
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 容器的名字