成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在Docker容器和主機之間共享數據?

譯文
云計算
你在接觸Docker后可能很快發現一點,容器不需要保存數據時,該系統才完美地運行。但如果你要部署需要能夠保​​存數據的服務(比如面對數據庫的應用程序),該如何是好?

【51CTO.com快譯】有了Docker容器,貴公司可以大規模、迅速地提供應用程序和服務。又由于部署容器化應用程序如此簡單,你可以很快上手。

你在接觸Docker后可能很快發現一點,一旦部署完畢,容器在如何保存和包含數據方面很有限,而這種限制在于容器文件系統中。Docker容器使用聯合文件系統(UFS),UFS接觸的是一系列只讀層,這些層包括最上面的最終讀寫層。容器不需要保存數據時,該系統才***地運行。但如果你要部署需要能夠保​​存數據的服務(比如面對數據庫的應用程序),該如何是好?

歡迎使用卷

Docker卷是駐留在主機文件系統上的目錄(或文件集合),它不是容器的UFS的一部分。正是在這些卷中,容器才能夠保存數據。使用docker volume命令,可以輕松管理卷以擴展容器,讓它遠遠超出其基本功能。

不妨了解如何部署一個新容器,該容器包含一個連接到主機上特定目錄的卷,以便容器與卷中的數據保持同步。我會在Ubuntu Server 18.04上進行演示,但只要平臺支持Docker,整個過程一樣(無論是哪個發行版)。假設你已啟動并運行Docker,并可以部署容器。

創建主機數據卷

***步是創建一個新目錄來放置卷。為此,打開終端窗口并執行命令:

  1. mkdir ~/container-data 

你要確保剛創建的目錄位于Docker用戶可以訪問的位置(擁有讀寫權限)。

一旦創建了該目錄,就可以在里面安裝卷了。假設你要部署一個基于官方Ubuntu映像的容器,該容器含有一個名為/data的目錄。想部署將內部的/data目錄連接到主機目錄〜/ container-data中卷的這樣一個容器,你要執行命令:

  1. docker run -dit -P --name ubuntu-test -v ~/container-data:/data ubuntu 

上述命令分解如下:

  • docker run是主命令,表示我們將在新容器中運行命令。
  • -dit中d表示分離模式,it確保可以將bash或sh分配給偽終端。
  • -P向主機發布容器端口。
  • -name表示其后是新容器的名稱。
  • -v表示其后是卷。
  • ubuntu是用于容器的映像。

命令完成后,你將獲得容器ID(圖A)。確保記住該ID的前四個字符,你需要它才能訪問容器bash提示符。

圖A. 我們已部署的容器

現在你已部署了一個基于官方Ubuntu映像的容器,該容器含有/ data目錄,該目錄掛載到~/container-data中的主機卷上。

測試卷

不妨測試一下這個卷。如果你忘了容器的ID,執行命令docker ps -a以查看(圖B)。

圖B:我們剛部署的容器列表

使用以下命令訪問剛部署的容器:

  1. docker attach ID 

其中ID是已部署容器的前四個字符。你現在應該發現已在容器中的bash提示符下(圖C)。

圖C:新容器的bash提示符

執行命令ls /,你會看到/data目錄已添加到Ubuntu容器。不妨用這個命令在該目錄中創建一個測試文件:

  1. touch /data/test 

創建該測試文件后,在主機上打開另一個終端窗口,執行命令ls ~/container-data。應該會在該目錄中看到測試文件(圖D)。

圖D:我們在容器內創建的測試文件可在主機上的卷中看到

你剛通過主機上的卷部署了含有持久存儲的容器。

數據庫卷

假設你想為數據庫創建卷。為此先部署MySQL數據庫Docker容器,指令它使用名為mysql-data的持久存儲卷作。使用這個命令來執行此操作:

  1. docker run --name mysql-test -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passwd -d mysql:latest 

在上述命令中,-e參數選項符告知Docker其后是環境變量。

使用這個命令訪問容器的bash提示符:

  1. docker exec -it ID /bin/bash 

其中ID是剛部署容器的ID的前四個字符。

使用這個命令列出容器的/var/lib/mysql目錄的內容:

  1. ls /var/lib/mysql 

記下這些內容,使用這個命令退出容器:

  1. exit 

現在,使用這個命令檢查主機已掛載卷的內容:

  1. sudo ls /var/lib/docker/volumes/mysql-data/_data 

你應該看到兩個目錄中列出來的內容一樣(圖E)。

圖E:我們的MySQL數據與主機卷同步

現在你擁有基于MySQL的容器,它包含掛載在主機上卷中的持久存儲。

這就是Docker容器和主機之間共享數據的整個方法。有了卷,這項任務不僅很簡單,還異常靈活。

原文標題:Docker Basics: How to Share Data Between a Docker Container and Host,作者:Jack Wallen

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:趙寧寧 來源: 51CTO
相關推薦

2018-05-04 08:57:00

LinuxWindows共享文件

2018-06-26 08:55:35

LinuxWindows共享文件

2022-05-03 10:08:53

WindowsLinux文件共享

2023-07-23 08:21:16

LinuxKVMWindows

2022-07-21 11:31:28

UbuntuWindowsLinux

2011-12-07 14:38:22

打印機常見問題

2023-09-15 10:15:43

Docker網絡

2015-08-07 10:10:18

LinuxDocker容器

2017-03-07 09:17:51

AtomicDocker遠程

2011-03-24 17:28:58

網絡數據庫

2025-01-07 12:58:28

2014-05-07 09:56:48

Docker管理Linux容器

2020-09-19 18:03:42

Docker

2014-10-11 11:30:43

CentOSDocker

2017-08-15 15:00:50

虛擬主機集群服務器

2017-11-28 09:21:53

LinuxWindowsDocker

2017-04-19 22:00:40

UbuntuLinux Mint桌面共享

2019-06-26 08:00:39

Docker容器運行命令

2023-02-07 12:30:41

2023-01-28 21:31:03

系統運維
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97精品超碰一区二区三区 | 国产一区免费 | 久久香蕉精品视频 | 日韩精品在线免费 | 日本三级电影免费观看 | 亚洲乱码一区二区三区在线观看 | 成人在线不卡 | 亚洲一区二区在线 | 日韩精品无码一区二区三区 | 在线免费观看毛片 | av在线黄 | 伊人二区 | 亚洲一区二区三区四区五区中文 | 国产区精品 | 亚洲区一区二 | av天天干 | 在线观看日韩精品视频 | 国产欧美精品区一区二区三区 | 国产小视频在线 | 中文字幕视频在线免费 | 亚洲综合在线网 | 亚洲欧美综合精品另类天天更新 | 国产精品美女一区二区 | 91在线免费视频 | 日韩免费一二三区 | 国产视频二区 | 免费午夜视频 | 日本午夜一区 | 99精品99| 国产成人网 | 国产精品成人一区二区三区 | 欧美一区二区三区,视频 | 天天操天天射天天舔 | 日韩一二区 | 在线观看国产精品视频 | 日日操av | 国产精品自拍av | 国产精品毛片一区二区在线看 | 日本不卡一区二区 | 欧美一区二区三区在线 | 成人在线免费视频 |