自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Docker容器之間拷貝數(shù)據(jù):原理與操作示例

云計(jì)算
在容器之間拷貝數(shù)據(jù)是Docker一個(gè)重要而且基本的功能。拷貝數(shù)據(jù)到其他容器的功能可以在真實(shí)場(chǎng)景中,如當(dāng)服務(wù)器遇到不可預(yù)見(jiàn)的“災(zāi)難”(注:斷電,宕機(jī))時(shí),起到備份數(shù)據(jù)的作用。

[[124788]]

Docker容器可以類比成一個(gè)目錄,它可以將一個(gè)應(yīng)用程序運(yùn)行時(shí)所依賴的所有環(huán)境(注:此應(yīng)用依賴的其他的服務(wù)或程序等)打包在一起運(yùn)行;同時(shí)可 以隨意的對(duì)它進(jìn)行“啟動(dòng)”、“停止”、“移動(dòng)”或者“刪除”等操作。Docker容器在Linux的命名空間(Namespace)機(jī)制下被激活,這樣就 可以使得運(yùn)行在同一服務(wù)器上的不同Docker容器能在網(wǎng)絡(luò)(Networking)與存儲(chǔ)(storage)層面上被“隔離”(isolation)的 運(yùn)行。每個(gè)Docker容器都是在一個(gè)Docker鏡像(image)的基礎(chǔ)上創(chuàng)建而來(lái);而一個(gè)Docker鏡像可以支持創(chuàng)建、運(yùn)行多個(gè)Docker容 器,這主要取決于服務(wù)器的硬件性能。所以,Docker容器是Docker運(yùn)行時(shí)的表現(xiàn)形式。

什么是Docker鏡像?

Docker 容器是基于一個(gè)Docker鏡像創(chuàng)建的,而Docker鏡像本身則可以通過(guò)Docker命令行工具或者Dockerfiles來(lái)生成。Docker鏡像既可以包含操作系統(tǒng)基礎(chǔ)設(shè)施(fundamentals)也可以包含一個(gè)預(yù)先搭建好的可以直接啟動(dòng)的應(yīng)用程序棧。Docker鏡像可以被看做是一個(gè)只讀的模 板,這個(gè)模板中包含了很多“層”;而任何基于這個(gè)Docker鏡像的新增操作或者更新操作都會(huì)導(dǎo)致一個(gè)基于當(dāng)前層的新的層被創(chuàng)建出來(lái),這個(gè)新創(chuàng)建的層是直接疊加在當(dāng)前層之上的而非覆蓋整個(gè)Docker鏡像(注:創(chuàng)建新層的過(guò)程就是創(chuàng)建新容器的過(guò)程)。這就是一個(gè)新的Docker容器是怎么被創(chuàng)建出來(lái)的。

從一個(gè)容器拷貝數(shù)據(jù)到另一個(gè)容器:

在容器之間拷貝數(shù)據(jù)是Docker一個(gè)重要而且基本的功能。拷貝數(shù)據(jù)到其他容器的功能可以在真實(shí)場(chǎng)景中,如當(dāng)服務(wù)器遇到不可預(yù)見(jiàn)的“災(zāi)難”(注:斷電,宕機(jī))時(shí),起到備份數(shù)據(jù)的作用。

使用容器的數(shù)據(jù)卷:

數(shù)據(jù)卷(data volume,注:位置在/var/lib/docker/volumes)是容器可以訪問(wèn),但是位置不在root文件系統(tǒng)中的一個(gè)目錄。為了能讓容器之間可以共享數(shù)據(jù),Docker讓“卷”(volume)可以繞過(guò)Docker鏡像的層疊機(jī)制。容器中所有對(duì)鏡像的改變?nèi)慷贾苯哟鎯?chǔ)。每個(gè)容器都有固定的運(yùn)行目錄在/var/lib/docker目錄下;而每個(gè)容器卷的數(shù)據(jù)則默認(rèn)單獨(dú)存儲(chǔ)在/var/lib/docker/volumes/目錄底下。 docker run命令的-v選項(xiàng)能夠?qū)崿F(xiàn)容器間數(shù)據(jù)卷中數(shù)據(jù)的互相拷貝。

操作示例

在這個(gè)例子中,我們假設(shè)基于鏡像mymod/dvc:v1創(chuàng)建并運(yùn)行了兩個(gè)容器:dvc1與dvc2,以下是啟動(dòng)這兩個(gè)鏡像的命令:

  1. docker run –d –name dvc1 mymod/dvc:v1 
  2.  
  3. docker run –d –name dvc2 mymod/dvc:v1

以下命令將創(chuàng)建并啟動(dòng)一個(gè)新的容器(也是基于mymod/dvc: v1鏡像)但是掛載dvc1的數(shù)據(jù)卷,并使用cp命令拷貝容器dvc1中的數(shù)據(jù)到宿主機(jī)(host)上。

  1. [root@host ~]# docker run –rm –v /var/tmp:/host:rw \ –volumes- from dvc1 cp –r/var/www/html/host/dvc1_files 
  2.  
  3. [注:經(jīng)過(guò)測(cè)試以上命令應(yīng)該改為以下形式才能運(yùn)行] 
  4.  
  5. [root@host ~]# docker run –rm –v /var/tmp:/host:rw –volumes-from dvc1 mymod/dvc: v1 cp –r /var/www/html/host/dvc1_files 

新建的容器以讀-寫(xiě)權(quán)限掛載宿主機(jī)的/var/temp目錄為/host目錄,然后掛載所有dvc1的數(shù)據(jù)卷,包含dvc1中的/var/www/html 目錄,然后拷貝/var/www/html的文件目錄到/host/dvc1_files下,対映宿主機(jī)/var/temp目錄。

現(xiàn)在我們用以下命令拷貝dvc1容器的數(shù)據(jù)到其他的容器中:

  1. [root@host ~]# docker run –rm –v /var/tmp:/host:ro –volumes-from dvc2 \ cp –a –T /host/dvc1_files /var/www/html 

新建的容器將宿主機(jī)的/var/tmp目錄以只讀的形式映射到dvc2容器的/host目錄中,同時(shí)加載dvc2容器的所有數(shù)據(jù)卷,然后將/host /dvc1_files(對(duì)應(yīng)宿主機(jī)/var/tmp/dvc1_files)目錄的結(jié)構(gòu)拷貝到dvc2容器的/var/www/html目錄下。

同樣的目標(biāo)可以在Dockerfile中使用ADD命令實(shí)現(xiàn)。ADD有兩個(gè)參數(shù)一個(gè)是源容器一個(gè)是目的容器。ADD命令可以實(shí)現(xiàn)從源容器拷貝文件或者數(shù)據(jù)到目的容器的目標(biāo),而不用管各個(gè)容器的文件系統(tǒng)差異。

結(jié)論

Docker 肯定會(huì)提供更好的方式來(lái)“培養(yǎng)”容器化服務(wù)部署,以支持更廣泛的部署平臺(tái);同時(shí)開(kāi)發(fā)社區(qū)也期望Docker構(gòu)建服務(wù)層級(jí)(service layer)。而Docker的做法是:開(kāi)發(fā)容器核心容量,開(kāi)發(fā)跨容器服務(wù)管理與通信功能。我們?cè)谶@篇文章中所闡述的是數(shù)據(jù)可以在容器間被復(fù)制與冗余,這可以用來(lái)應(yīng)付各種數(shù)據(jù)的損毀與恢復(fù)。Docker還提供了使用方便的容器間差異分析功能,這可以讓容器更好的支持排錯(cuò)(debugging)、快速共享部 署環(huán)境以達(dá)到快速的部署的目標(biāo)。Docker可以將容器部署環(huán)境從開(kāi)發(fā)或者QA階段直接提交到AWS部署環(huán)境。用戶可以通過(guò)Docker的數(shù)據(jù)卷在容器間共享數(shù)據(jù);可以將宿主機(jī)的目錄直接掛載到容器中或者甚至可以從容器中導(dǎo)出數(shù)據(jù)存檔,所以,Docker非常方便。

本文出自:http://dockerone.com/article/54

責(zé)任編輯:Ophira 來(lái)源: dockerone
相關(guān)推薦

2012-06-18 16:30:26

WindowsLinux

2020-05-18 10:52:00

前端JavaScript html

2017-09-21 08:56:50

數(shù)據(jù)管理主流

2024-01-10 09:48:52

Docker工具

2019-11-13 14:58:39

JavaScriptNumbers程序員

2018-07-23 09:02:18

容器KubernetesAmazon

2019-07-08 08:59:41

Docker容器主機(jī)

2017-11-28 09:21:53

LinuxWindowsDocker

2022-03-10 08:24:17

Docker容器SaaS

2022-11-07 11:37:27

深拷貝淺拷貝底層

2018-11-16 15:35:10

Spring事務(wù)Java

2023-05-30 14:56:18

Docker開(kāi)發(fā)容器

2021-05-16 15:28:59

沙箱容器惡意軟件

2011-08-31 13:22:37

PhoneGapAndroidjavascript

2021-12-25 23:25:04

LinuxDocker容器

2015-08-19 14:54:25

2011-07-01 10:52:49

C++構(gòu)造函數(shù)賦值操作

2014-12-15 10:23:12

CentOSDocker

2024-04-10 08:45:51

Vue 3Proxy對(duì)象監(jiān)測(cè)數(shù)據(jù)

2019-09-05 19:28:23

Docker程序員MySQL
點(diǎn)贊
收藏

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