亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Docker數據卷操作如何實現

發布時間:2022-05-26 16:43:46 來源:億速云 閱讀:94 作者:iii 欄目:大數據

這篇“Docker數據卷操作如何實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Docker數據卷操作如何實現”文章吧。

數據卷入門

在前面的案例中,如果我們需要將數據從宿主機拷貝到容器中,一般都是使用 docker 的拷貝命令,這樣性能還是稍微有點差,沒有辦法能夠達到讓這種拷貝達到本地磁盤 i/o 性能呢?有!

數據卷可以繞過拷貝系統,在多個容器之間、容器和宿主機之間共享目錄或者文件,數據卷繞過了拷貝系統,可以達到本地磁盤 i/o 性能。

以前面使用的 nginx 鏡像為例,在運行該容器時,可以指定一個數據卷,命令如下:

docker run -itd --name nginx -v /usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

運行效果如下:

Docker數據卷操作如何實現

此時,我們創建了一個數據卷并且掛載到容器的 /usr/share/nginx/html/ 目錄下,小伙伴們知道,該目錄實際上是 nginx 保存 html 目錄,在這里掛載數據卷,一會我們只需要修改本地的映射位置,就能實現頁面的修改了。

接下來使用 docker inspect 命令查看剛剛創建的容器的具體情況,找到數據卷映射目錄,如下:

Docker數據卷操作如何實現

可以看到,docker默認將宿主機的 /var/lib/docker/volumes/0746bdcfc045b237a6fe2288a3af9d7b80136cacb3e965db65a212627e217d75/_data 目錄作為source目錄,接下來,進入到該目錄中,如下:

Docker數據卷操作如何實現

此時發現該目錄下的文件內容與容器中 /usr/share/nginx/html/ 目錄下的文件內容一致,這是因為掛載一個空的數據卷到容器中的一個非空目錄中,那么這個目錄下的文件會被復制到數據卷中(如果掛載一個非空的數據卷到容器中的一個目錄中,那么容器中的目錄中會顯示數據卷中的數據。如果原來容器中的目錄中有數據,那么這些原始數據會被隱藏掉)。

小貼士:

由于 mac 中的 docker 有點特殊,上文提到的 /var/lib/xxxx 目錄,如果是在 linux 環境下,則直接進入即可,如果是在 mac 中,需要首先執行如下命令,在新進入的命令行中進入到 /var/lib/xxx 目錄下:

screen ~/library/containers/com.docker.docker/data/vms/0/tty

接下來修改改文件中的index.html文件內容,如下:

echo "hello volumes">index.html

修改完成后,再回到瀏覽器中,輸入 http://localhost查看nginx中index.html 頁面中的數據,發現已經發生改變。說明宿主機中的文件共享到容器中去了。

結合宿主機目錄

上文中對于數據卷的用法還不是最佳方案,一般來說,我們可能需要明確指定將宿主機中的一個目錄掛載到容器中,這種指定方式如下:

docker run -itd --name nginx -v /users/sang/blog/docker/docker/:/usr/share/nginx/html/ -p 80:80 bc26f1ed35cf

這樣便是將宿主機中的 /users/sang/blog/docker/docker/ 目錄掛載到容器的 /usr/share/nginx/html/ 目錄下。接下來讀者只需要在 /users/sang/blog/docker/docker/ 目錄下添加 html 文件,或者修改 html 文件,都能在 nginx 訪問中立馬看到效果。

這種用法對于開發測試非常方便,不用重新部署,重啟容器等。

注意:宿主機地址是一個絕對路徑

 更多操作

dockerfile中的數據卷

如果開發者使用了 dockerfile 去構建鏡像,也可以在構建鏡像時聲明數據卷,例如下面這樣:

from nginx
add https://www.baidu.com/img/bd_logo1.png /usr/share/nginx/html/
run echo "hello docker volume!">/usr/share/nginx/html/index.html
volume /usr/share/nginx/html/

這樣就配置了一個匿名數據卷,運行過程中,將數據寫入到 /usr/share/nginx/html/ 目錄中,就可以實現容器存儲層的無狀態變化。

查看所有數據卷

使用如下命令可以查看所有數據卷:

docker volume ls

如圖:

Docker數據卷操作如何實現

查看數據卷詳情

根據 volume name 可以查看數據詳情,如下:

docker volume inspect

執行結果如下圖:

Docker數據卷操作如何實現

刪除數據卷

可以使用 docker volume rm 命令刪除一個數據卷,也可以使用 docker volume prune 批量刪除數據卷,如下:

Docker數據卷操作如何實現

Docker數據卷操作如何實現

批量刪除時,未能刪除掉所有的數據卷,還剩一個,這是因為該數據卷還在使用中,將相關的容器停止并移除,再次刪除數據卷就可以成功刪除了,如圖:

Docker數據卷操作如何實現

數據卷容器

數據卷容器是一個專門用來掛載數據卷的容器,該容器主要是供其他容器引用和使用。所謂的數據卷容器,實際上就是一個普通的容器,舉例如下:

  • 創建數據卷容器

使用如下方式創建數據卷容器:

docker run -itd -v /usr/share/nginx/html/ --name mydata ubuntu

命令執行效果如下圖:

Docker數據卷操作如何實現

  • 引用容器

使用如下命令引用數據卷容器:

docker run -itd --volumes-from mydata -p 80:80 --name nginx1 nginx
docker run -itd --volumes-from mydata -p 81:80 --name nginx2 nginx

此時, nginx1 和 nginx2 都掛載了同一個數據卷到 /usr/share/nginx/html/ 目錄下,三個容器中,任意一個修改了該目錄下的文件,其他兩個都能看到變化。

此時,使用 docker inspect 命令查看容器的詳情,發現三個容器關于數據卷的描述都是一致的,如下圖:

Docker數據卷操作如何實現

以上就是關于“Docker數據卷操作如何實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

揭东县| 景东| 隆回县| 农安县| 杭州市| 阿拉善左旗| 伊川县| 清新县| 隆回县| 万全县| 方城县| 额尔古纳市| 米泉市| 建瓯市| 自治县| 宁明县| 巴林左旗| 曲阜市| 都兰县| 孟连| 景谷| 平泉县| 永清县| 霸州市| 苗栗县| 浦东新区| 延寿县| 满洲里市| 科尔| 云南省| 江都市| 肇东市| 海原县| 郧西县| 大同县| 金沙县| 江源县| 开平市| 科技| 阿坝县| 饶阳县|