docker容器數(shù)據(jù)卷怎么使用

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

我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、港北ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的港北網(wǎng)站制作公司

容器數(shù)據(jù)卷

    什么是容器數(shù)據(jù)卷

docker的理念回顧

將應(yīng)用和環(huán)境打包成一個鏡像!

數(shù)據(jù)?如果數(shù)據(jù)都在容器中,那么我們?nèi)萜鲃h除,那么數(shù)據(jù)就會丟失!    需求:數(shù)據(jù)可以持久化

如MySQL,容器刪了,就要跑路了!    需求:MySQL數(shù)據(jù)可以存儲在本地!

容器之間可以有一個數(shù)據(jù)共享的技術(shù)! Docker容器中產(chǎn)生的數(shù)據(jù),同步到本地!

這就是卷技術(shù)!其實就是目錄的掛載,將我們?nèi)萜鲀?nèi)的目錄掛載到Linux上面!

docker容器數(shù)據(jù)卷怎么使用

總結(jié)一句話:容器的持久化和同步操作!容器間也是可以數(shù)據(jù)共享的!

使用數(shù)據(jù)卷

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

docker run -it -v 主機目錄 : 容器內(nèi)目錄

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

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

docker容器數(shù)據(jù)卷怎么使用

測試文件的同步

docker容器數(shù)據(jù)卷怎么使用

再來測試!

1、停止容器

2、宿主機上修改文件

3、啟動容器

4、容器內(nèi)的數(shù)據(jù)依舊是同步的!

docker容器數(shù)據(jù)卷怎么使用

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

實戰(zhàn):安裝MySQL

思考:MySQL的數(shù)據(jù)持久化的問題!

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

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

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

# 啟動我們的
-d 后臺運行
-p 端口映射
-v 數(shù)據(jù)卷掛載
-e 環(huán)境配置
--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--連接到服務(wù)器的3310 --  3310 和容器內(nèi)的 3306 映射,這個時候我們就可以連接上了!

# 在本地測試創(chuàng)建一個數(shù)據(jù)庫,查看一下我們映射的路徑是否ok!

假設(shè)我們將容器刪除

docker容器數(shù)據(jù)卷怎么使用

發(fā)現(xiàn),我們掛載到本地的數(shù)據(jù)卷依舊沒有丟失,這就實現(xiàn)了容器數(shù)據(jù)持久化功能!

具名和匿名掛載

# 匿名掛載
-v  容器內(nèi)路徑!
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

# 這里發(fā)現(xiàn),這種就是匿名掛載,我們在 -v 只寫了容器內(nèi)的路徑,沒有寫容器外的路徑!

# 具名掛載
[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  卷名:容器內(nèi)路徑
# 查看一下這個卷

docker容器數(shù)據(jù)卷怎么使用

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

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

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

拓展:

# 通過 -v 容器內(nèi)路徑,ro rw 改變讀寫權(quán)限
ro    readonly    # 只讀
rw    readwrite    # 可讀可寫

# 一旦設(shè)置了這個容器的權(quán)限,容器對我們掛載出來的內(nèi)容就有限定了!
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就說明這個容器只能通過宿主機來操作,容器內(nèi)部是無法操作!

初識Dockerfile

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

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

# 創(chuàng)建一個dockerfile文件,名字可以隨意,建議起名為 Dockerfile
# 文件中的內(nèi)容

FROM centos

VOLUME ["volume01","volume02"]

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

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

docker容器數(shù)據(jù)卷怎么使用

# 啟動自己寫的容器

docker容器數(shù)據(jù)卷怎么使用

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

docker容器數(shù)據(jù)卷怎么使用

查看一下卷掛載的路徑

docker容器數(shù)據(jù)卷怎么使用

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

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

假設(shè)構(gòu)建鏡像時候沒有掛載卷,要手動鏡像掛載 -v 卷名 : 容器內(nèi)路徑!

數(shù)據(jù)卷容器

如兩個mysql同步數(shù)據(jù)

docker容器數(shù)據(jù)卷怎么使用

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

docker容器數(shù)據(jù)卷怎么使用

docker容器數(shù)據(jù)卷怎么使用

docker容器數(shù)據(jù)卷怎么使用

docker容器數(shù)據(jù)卷怎么使用

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

# 測試的結(jié)果,依舊可以訪問

docker容器數(shù)據(jù)卷怎么使用

多個mysql實現(xiàn)數(shù)據(jù)共享

[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

# 這個時候可以實現(xiàn)兩個容器數(shù)據(jù)同步!

“docker容器數(shù)據(jù)卷怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

分享文章:docker容器數(shù)據(jù)卷怎么使用
文章網(wǎng)址:http://muchs.cn/article40/gciceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站營銷、建站公司、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計、網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)