鍍金池/ 教程/ Linux/ 數(shù)據(jù)卷
利用數(shù)據(jù)卷容器來備份、恢復、遷移數(shù)據(jù)卷
Docker 網絡實現(xiàn)
實戰(zhàn) Django
YAML 模板文件
名字空間
控制組
編輯網絡配置文件
列出
進入容器
Compose 命令說明
創(chuàng)建 Tomcat/Weblogic 集群
守護態(tài)運行
快速配置指南
其它安全特性
示例:創(chuàng)建一個點到點連接
CentOS 系列安裝 Docker
數(shù)據(jù)卷容器
鏡像
指令
創(chuàng)建鏡像
Docker 容器
創(chuàng)建鏡像
常用倉庫
總結
什么是 Docker
存出和載入鏡像
使用
獲取鏡像
容器互聯(lián)
為什么要使用 Docker?
使用 Wordpress 入門 Fig
啟動
容器訪問控制
私有倉庫
使用
基本架構
自定義網橋
環(huán)境變量參考
實戰(zhàn) Rail
服務端的防護
刪除
鏡像的實現(xiàn)原理
多臺物理主機之間的容器互聯(lián)
Docker 倉庫
簡介
數(shù)據(jù)卷
命令參考
使用 Supervisor 來管理進程
移除
基本結構
命令查詢
終止容器
聯(lián)合文件系統(tǒng)
安裝
簡介
配置 DNS
內核能力機制
導出和導入容器
配置 docker0 網橋
倉庫配置文件
內核名字空間
標準化開發(fā)測試和生產環(huán)境
外部訪問容器
fig.yml 參考
Ubuntu 系列安裝 Docker
有用資源
安裝
端口映射實現(xiàn)
安裝 Fig
工具和示例
簡介
控制組
容器格式
Docker Hub

數(shù)據(jù)卷

數(shù)據(jù)卷是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性:

  • 數(shù)據(jù)卷可以在容器之間共享和重用
  • 對數(shù)據(jù)卷的修改會立馬生效
  • 對數(shù)據(jù)卷的更新,不會影響鏡像
  • 卷會一直存在,直到沒有容器使用 *數(shù)據(jù)卷的使用,類似于 Linux 下對目錄或文件進行 mount。

創(chuàng)建一個數(shù)據(jù)卷

在用 docker run 命令的時候,使用 -v 標記來創(chuàng)建一個數(shù)據(jù)卷并掛載到容器里。在一次 run 中多次使用可以掛載多個數(shù)據(jù)卷。

下面創(chuàng)建一個 web 容器,并加載一個數(shù)據(jù)卷到容器的 /webapp 目錄。

$ sudo docker run -d -P --name web -v /webapp training/webapp python app.py

注意:也可以在 Dockerfile 中使用 VOLUME 來添加一個或者多個新的卷到由該鏡像創(chuàng)建的任意容器。

掛載一個主機目錄作為數(shù)據(jù)卷

使用 -v 標記也可以指定掛載一個本地主機的目錄到容器中去。

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

上面的命令加載主機的 /src/webapp 目錄到容器的 /opt/webapp 目錄。這個功能在進行測試的時候十分方便,比如用戶可以放置一些程序到本地目錄中,來查看容器是否正常工作。本地目錄的路徑必須是絕對路徑,如果目錄不存在 Docker 會自動為你創(chuàng)建它。

注意:Dockerfile 中不支持這種用法,這是因為 Dockerfile 是為了移植和分享用的。然而,不同操作系統(tǒng)的路徑格式不一樣,所以目前還不能支持。

Docker 掛載數(shù)據(jù)卷的默認權限是讀寫,用戶也可以通過 :ro 指定為只讀。

$ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:ro
training/webapp python app.py

加了 :ro 之后,就掛載為只讀了。

掛載一個本地主機文件作為數(shù)據(jù)卷

-v 標記也可以從主機掛載單個文件到容器中

$ sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

這樣就可以記錄在容器輸入過的命令了。

注意:如果直接掛載一個文件,很多文件編輯工具,包括 vi 或者 sed --in-place,可能會造成文件 inode 的改變,從 Docker 1.1 .0起,這會導致報錯誤信息。所以最簡單的辦法就直接掛載文件的父目錄。