偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何在Docker容器和主機(jī)之間共享數(shù)據(jù)?

譯文
云計(jì)算
你在接觸Docker后可能很快發(fā)現(xiàn)一點(diǎn),容器不需要保存數(shù)據(jù)時(shí),該系統(tǒng)才完美地運(yùn)行。但如果你要部署需要能夠保​​存數(shù)據(jù)的服務(wù)(比如面對(duì)數(shù)據(jù)庫(kù)的應(yīng)用程序),該如何是好?

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

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

歡迎使用卷

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

不妨了解如何部署一個(gè)新容器,該容器包含一個(gè)連接到主機(jī)上特定目錄的卷,以便容器與卷中的數(shù)據(jù)保持同步。我會(huì)在Ubuntu Server 18.04上進(jìn)行演示,但只要平臺(tái)支持Docker,整個(gè)過(guò)程一樣(無(wú)論是哪個(gè)發(fā)行版)。假設(shè)你已啟動(dòng)并運(yùn)行Docker,并可以部署容器。

創(chuàng)建主機(jī)數(shù)據(jù)卷

***步是創(chuàng)建一個(gè)新目錄來(lái)放置卷。為此,打開終端窗口并執(zhí)行命令:

  1. mkdir ~/container-data 

你要確保剛創(chuàng)建的目錄位于Docker用戶可以訪問(wèn)的位置(擁有讀寫權(quán)限)。

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

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

上述命令分解如下:

  • docker run是主命令,表示我們將在新容器中運(yùn)行命令。
  • -dit中d表示分離模式,it確??梢詫ash或sh分配給偽終端。
  • -P向主機(jī)發(fā)布容器端口。
  • -name表示其后是新容器的名稱。
  • -v表示其后是卷。
  • ubuntu是用于容器的映像。

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

圖A. 我們已部署的容器

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

測(cè)試卷

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

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

使用以下命令訪問(wèn)剛部署的容器:

  1. docker attach ID 

其中ID是已部署容器的前四個(gè)字符。你現(xiàn)在應(yīng)該發(fā)現(xiàn)已在容器中的bash提示符下(圖C)。

圖C:新容器的bash提示符

執(zhí)行命令ls /,你會(huì)看到/data目錄已添加到Ubuntu容器。不妨用這個(gè)命令在該目錄中創(chuàng)建一個(gè)測(cè)試文件:

  1. touch /data/test 

創(chuàng)建該測(cè)試文件后,在主機(jī)上打開另一個(gè)終端窗口,執(zhí)行命令ls ~/container-data。應(yīng)該會(huì)在該目錄中看到測(cè)試文件(圖D)。

圖D:我們?cè)谌萜鲀?nèi)創(chuàng)建的測(cè)試文件可在主機(jī)上的卷中看到

你剛通過(guò)主機(jī)上的卷部署了含有持久存儲(chǔ)的容器。

數(shù)據(jù)庫(kù)卷

假設(shè)你想為數(shù)據(jù)庫(kù)創(chuàng)建卷。為此先部署MySQL數(shù)據(jù)庫(kù)Docker容器,指令它使用名為mysql-data的持久存儲(chǔ)卷作。使用這個(gè)命令來(lái)執(zhí)行此操作:

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

在上述命令中,-e參數(shù)選項(xiàng)符告知Docker其后是環(huán)境變量。

使用這個(gè)命令訪問(wèn)容器的bash提示符:

  1. docker exec -it ID /bin/bash 

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

使用這個(gè)命令列出容器的/var/lib/mysql目錄的內(nèi)容:

  1. ls /var/lib/mysql 

記下這些內(nèi)容,使用這個(gè)命令退出容器:

  1. exit 

現(xiàn)在,使用這個(gè)命令檢查主機(jī)已掛載卷的內(nèi)容:

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

你應(yīng)該看到兩個(gè)目錄中列出來(lái)的內(nèi)容一樣(圖E)。

圖E:我們的MySQL數(shù)據(jù)與主機(jī)卷同步

現(xiàn)在你擁有基于MySQL的容器,它包含掛載在主機(jī)上卷中的持久存儲(chǔ)。

這就是Docker容器和主機(jī)之間共享數(shù)據(jù)的整個(gè)方法。有了卷,這項(xiàng)任務(wù)不僅很簡(jiǎn)單,還異常靈活。

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

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO
相關(guān)推薦

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

2023-09-15 10:15:43

Docker網(wǎng)絡(luò)

2015-08-07 10:10:18

LinuxDocker容器

2017-03-07 09:17:51

AtomicDocker遠(yuǎn)程

2011-12-07 14:38:22

打印機(jī)常見(jiàn)問(wèn)題

2011-03-24 17:28:58

網(wǎng)絡(luò)數(shù)據(jù)庫(kù)

2014-10-11 11:30:43

CentOSDocker

2017-08-15 15:00:50

虛擬主機(jī)集群服務(wù)器

2025-01-07 12:58:28

2020-09-19 18:03:42

Docker

2017-11-28 09:21:53

LinuxWindowsDocker

2014-05-07 09:56:48

Docker管理Linux容器

2019-06-26 08:00:39

Docker容器運(yùn)行命令

2023-02-07 12:30:41

2023-01-28 21:31:03

系統(tǒng)運(yùn)維

2024-09-03 10:06:43

JavaMap項(xiàng)目
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)