中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker容器數據卷怎么使用

發布時間:2021-12-13 11:49:25 來源:億速云 閱讀:144 作者:iii 欄目:云計算

本篇內容介紹了“docker容器數據卷怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

容器數據卷

    什么是容器數據卷

docker的理念回顧

將應用和環境打包成一個鏡像!

數據?如果數據都在容器中,那么我們容器刪除,那么數據就會丟失!    需求:數據可以持久化

MySQL,容器刪了,就要跑路了!    需求:MySQL數據可以存儲在本地!

容器之間可以有一個數據共享的技術! Docker容器中產生的數據,同步到本地!

這就是卷技術!其實就是目錄的掛載,將我們容器內的目錄掛載到Linux上面!

docker容器數據卷怎么使用

總結一句話:容器的持久化和同步操作!容器間也是可以數據共享的!

使用數據卷

方式一:直接使用命令來掛載  -v

docker run -it -v 主機目錄 : 容器內目錄

# 測試
[root@dockertest ~]# docker run -it -v /home/ceshi:/home centos /bin/bash

# 啟動起來后我們可以通過 docker inspect 容器id 查看掛載信息
1
1

docker容器數據卷怎么使用

測試文件的同步

docker容器數據卷怎么使用

再來測試!

1、停止容器

2、宿主機上修改文件

3、啟動容器

4、容器內的數據依舊是同步的!

docker容器數據卷怎么使用

好處:我們以后修改只需要在本地修改即可,容器內會自動同步!

實戰:安裝MySQL

思考:MySQL的數據持久化的問題!

# 獲取鏡像
[root@dockertest network-scripts]# docker pull mysql:5.7

# 運行容器。需要做數據掛載!    # 安裝啟動mysql 需要配置密碼,這是要注意的一點。

# 官方測試:    docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

# 啟動我們的
-d 后臺運行
-p 端口映射
-v 數據卷掛載
-e 環境配置
--name 容器名字
[root@dockertest network-scripts]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
e669cf988dabeea812faa544be2511fe4a5ad0c250022afbd10081f304fe26d7

# 啟動成功之后,我們在本地使用 sqlyog 來連接測試一下
# sqlyog--連接到服務器的3310 --  3310 和容器內的 3306 映射,這個時候我們就可以連接上了!

# 在本地測試創建一個數據庫,查看一下我們映射的路徑是否ok!

假設我們將容器刪除

docker容器數據卷怎么使用

發現,我們掛載到本地的數據卷依舊沒有丟失,這就實現了容器數據持久化功能!

具名和匿名掛載

# 匿名掛載
-v  容器內路徑!
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看所有的 volume 的情況
[root@dockertest network-scripts]# docker volume ls
DRIVER    VOLUME NAME
local     1b3548d552bdac0cd277157af18c5925903c509940bff9390326a29c1cc83fa2
local     310d040dc6743c5b7b68e2c3cae0399b8103a0144a63c6b1749694f69a17cd91
local     f472a5ba40dc3d7ad4768ee56ea1cff57132fd6f847bb72fd4431c7bd499cede

# 這里發現,這種就是匿名掛載,我們在 -v 只寫了容器內的路徑,沒有寫容器外的路徑!

# 具名掛載
[root@dockertest network-scripts]# docker run -d -P --name nginx02 -v qls-nginx:/etc/nginx nginx
acbf53630d19aa7fc614ac54e61c36e3dcbd4d9d914de640fc15f7f841d4959e
[root@dockertest network-scripts]# docker volume ls
DRIVER    VOLUME NAME
local     1b3548d552bdac0cd277157af18c5925903c509940bff9390326a29c1cc83fa2
local     310d040dc6743c5b7b68e2c3cae0399b8103a0144a63c6b1749694f69a17cd91
local     f472a5ba40dc3d7ad4768ee56ea1cff57132fd6f847bb72fd4431c7bd499cede
local     qls-nginx

# 通過 -v  卷名:容器內路徑
# 查看一下這個卷

docker容器數據卷怎么使用

所有的docker容器內的卷,沒有指定目錄的情況下都是在  /var/lib/docker/volumes/xxxx/_data

我們通過具名掛載可以方便的找到我們的卷,大多數情況使用 具名掛載

# 如何確定是具名掛載還是匿名掛載,還是指定路徑掛載!
-v    容器內路徑    # 匿名掛載
-v    卷名:容器內路徑    # 具名掛載
-v    /宿主機路徑 :: 容器內路徑    # 指定路徑掛載!

拓展:

# 通過 -v 容器內路徑,ro rw 改變讀寫權限
ro    readonly    # 只讀
rw    readwrite    # 可讀可寫

# 一旦設置了這個容器的權限,容器對我們掛載出來的內容就有限定了!
docker run -d -P --name nginx02 -v qls-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v qls-nginx:/etc/nginx:rw nginx

# ro    只要看到ro就說明這個容器只能通過宿主機來操作,容器內部是無法操作!

初識Dockerfile

Dockerfile 就是用來構建 docker 鏡像的構建文件!命令腳本!先體驗一下!(commit可以構建,這里講的時方式二)

通過這個腳本可以生成鏡像,鏡像時一層一層的,所以腳本是一個一個的命令,每個命令都是一層。

# 創建一個dockerfile文件,名字可以隨意,建議起名為 Dockerfile
# 文件中的內容

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end----"
CMD /bin/bash

# 這里的每個命令,就是鏡像的一層。
                

docker容器數據卷怎么使用

# 啟動自己寫的容器

docker容器數據卷怎么使用

這個卷一定和外部有一個同步的目錄!

docker容器數據卷怎么使用

查看一下卷掛載的路徑

docker容器數據卷怎么使用

測試一下剛才的文件是否同步出去了

這種方式使用的很多,因為我們通常會構建自己的鏡像!

假設構建鏡像時候沒有掛載卷,要手動鏡像掛載 -v 卷名 : 容器內路徑!

數據卷容器

如兩個mysql同步數據

docker容器數據卷怎么使用

# 啟動3個容器,通過我們剛才自己寫的鏡像啟動

docker容器數據卷怎么使用

docker容器數據卷怎么使用

docker容器數據卷怎么使用

docker容器數據卷怎么使用

# 測試:可以刪除docker01,查看一下docker02和03 是否還可以訪問這個文件

# 測試的結果,依舊可以訪問

docker容器數據卷怎么使用

多個mysql實現數據共享

[root@dockertest network-scripts]# docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

[root@dockertest network-scripts]# docker run -d -p 3310:3306l -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7

# 這個時候可以實現兩個容器數據同步!

“docker容器數據卷怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

重庆市| 平乐县| 双峰县| 泊头市| 寿宁县| 徐水县| 四川省| 杭州市| 元江| 襄城县| 白城市| 清河县| 六盘水市| 肥乡县| 南京市| 梁平县| 呼图壁县| 郎溪县| 忻城县| 扎赉特旗| 从江县| 常德市| 钟山县| 大邑县| 从化市| 阜南县| 临江市| 西藏| 阳原县| 沿河| 大新县| 芦溪县| 靖边县| 澄迈县| 辽阳县| 孟连| 温州市| 探索| 汶上县| 黔西县| 唐山市|