Docker Volumn容器間共享數據的實現_docker

來源:腳本之家  責任編輯:小易  

sshd方法可能是最簡單的連接容器的方法,而且大多數用戶習慣通過ssh連接虛擬機。另外,連接容器時你也不需要一定使用root權限。不過,對于是否一個容器是否應當管理不止一個進程仍然存在許多爭議。這種方法最終使得每個容器了多了一個sshd進程,這從根本上來說不是進程虛擬化的所提倡的。另外三種方法都需要root權限。到0.8.1版本為止,Docker都是使用LXC來管理容器的。正是由于這個原因,使用lxc-attach連接容器就非常容易。不過從版本0.9.0開始Docker服務就必須使用-e lxc選項啟動才能在內部支持LXC管理容器。不過,由于設置了這個選項,Docker將再次依賴LXC,而LXC可能隨著發布或者安裝的不同可能被剔除www.13333515.buzz防采集請勿采集本網。

volume是什么

從util-linux版本2.23開始,nsenter工具就包含在其中。它用來訪問另一個進程的名字空間。nsenter要正常工作需要有root權限。很不幸,Ubuntu 14.4仍然使用的是util-linux版本2.20。安裝最新版本的util-linux(2.24)版,請按照以下步驟: 為了連接到容器,你還需要找到容器的第一個進程的PID。

volume在英文中是容量的意思, 在docker中是數據卷的意思,是用來保存數據的容器

Docker 是屬于容器服務的一種,是一個開源的應用容器引擎。傳統的容器技術沒有成為主流的原因,是因為其未能提供標準化的應用運行時環境,而以Docker為代表的新一代容器技術,從一開始就以提供標準化的運行時環境為目標,真正做到“build once,run anywhere”(一次建立,到處運行)。docker

為什么要進行數據共享

Docker容器連接 端口映射并不是唯一把 docker 連接到另一個容器的方法。docker有一個連接系統允許將多個容器連接在一起,共享連接信息。docker連接會創建一個父子關系,其中父容器可以看到子容器的信息。

在集群中有多臺tomcat,對于集群中的tomcat部署的代碼是同一份代碼的副本,如果頁面文件發生變化,意味著每個容器中的頁面文件都要進行更新,在大規模的集群中這樣的工作量會被無限放大,這時候就需要用到數據共享解決此問題,所謂數據共享指的是多個容器共享一個數據副本,在docker環境中我們該如何實現?

首先你要把容器運行起來,在使用docker attach+容器名/ID就進入容器了。docker pull下來的可能無法進入,自己可以Pull一個centos的鏡像,并使用這個鏡像創建一個容器,再使用docker attach+容器名/ID進入。

數據共享原理

在宿主機的硬盤上開辟一個空間,用來存放共享的數據,多個容器共享這個目錄

實現數據共享的解決方案

說到數據共享我們其實很容易想到linux中的mount命令,通過掛載一共享目錄來

[x] 使用參數 -v 宿主機目錄:/容器內容目錄 將共享的文件放在宿主機的某個文件中,然后多個容器之前共享這一個目錄,實現數據共享,這需要在啟動時

[x] 使用參數 -v 宿主機目錄:/容器內容目錄共享容器掛載宿主機共享目錄,然后通過掛載共享容器實現數據共享

容器直接掛載共享目錄

資源列表

準備2個tomcat容器:

tomcat8000 tomcat8001

詳細步驟

創建共享數據

創建共享目錄:mkdir -p /usr/local/docker/volumn/pages/

在共享目錄中增加共享文件: index.html,內容如下

我是一個volumn 共享目錄 albk!

創建tomcat8000tomcat8001

docker run -d --name tomcat8000 -p 8000:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcatdocker run -d --name tomcat8001 -p 8001:8080 -v /usr/local/docker/volumn:/usr/local/tomcat/webapps tomcat

啟動容器時將宿主機的/usr/local/docker/volumn目錄,掛載到tomcat容器的/usr/local/tomcat/webapps 這個目錄,這樣就可以實現數據共享

驗證容器是否正常啟動

docke ps

docker exec -it a05a987b6da0 /bin/bash

查看一下webapps目錄下,是否掛載成功

瀏覽器訪問

http://宿主機ip:8000/pages/index.html

http://宿主機ip:8001/pages/index.html

修改共享文件

echo "我是一個volumn 共享目錄 albk! 被修改了" > index.html

瀏覽器再次驗證

可以看到我們修改的內容,已經實時生效了,不需要重新部署tomcat容器,但是這樣實現每次容器啟動的時候,參數會很長,很容易出錯,在集群較小的時候可以這樣,但是規模大的時候,這也是不少的工作量,下面我們看一下另一種方法

共享容器掛載創建一個共享容器 webpages,通過上述的方法,使用-v 掛載共享目錄

docker create --name webpages -v /usr/local/docker/volumn/pages:/usr/local/tomcat/webapp tomcat /bin/true

掛載共享容器

docker run --name tomcat8000 -d -p 8000:8080 --volumes-from webpages tomcat docker run --name tomcat8001 -d -p 8001:8080 --volumes-from webpages tomcat

驗證過程和上面的一樣,容器webpages實際作用就是定義了一個掛載點,修改內容的時候,只需要修改共享容器的共享目錄即可

總結

如果容器少的話用-v 如果容器多的話, 可以使用-volumes-from 本質與-v是一樣的,具體使用哪個根據實際情況而定

安裝Docker借助apt-get命令,安裝Docker是件輕而易舉的事。sudo apt-get install docker.io為了允許非根用戶也可以運行Docker,將你自己添加到docker群組。下面這個命令會允許當前用戶運行Docker,無需根用戶權限。sudo usermod-a-G docker$USER退出,然后重新登錄,以激活群組成員的變化。下一步,編輯Docker配置文件,以便更新Docker二進制代碼的位置。sudo vi/etc/default/docker.io DOCKER="/usr/bin/docker.io重啟Docker服務。sudo service docker.io restart管理Docker容器如果你想啟動Ubuntu操作系統的一個新的Docker容器,首先需要獲取Ubuntu Docker映像文件。下面這個命令會通過網絡下載Docker映像文件。docker pull ubuntu你可以以一種交互模式來開啟Ubuntu Docker,如下所示。最后一個參數“/bin/bash”是一旦啟動就將在容器里面執行的命令,這里是一個簡單的bash外殼命令。docker run-i-t ubuntu/bin/bash更多詳細信息你可以參考官方手冊https://docs.docker.com/內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • docker創建容器時目錄權限踩坑
  • docker compose自定義網絡實現固定容器ip地址
  • vmware中的ubuntu docker安裝(容器搭建)
  • docker for windows 容器內網通過獨立ip直接訪問的方法
  • 刪除docker里建立容器的操作方法
  • 詳解docker中安裝配置oracle數據庫
  • 使用docker部署spring boot的實現方法
  • docker安裝運行apache2服務器做圖片服務器的方法
  • docker中mysql初始化及啟動失敗問題解決方案
  • docker容器掛載宿主主機目錄的操作方法
  • 詳解docker 配置國內免費registry mirror
  • centos7下安裝與卸載docker應用容器引擎的方法
  • docker中dockerfile方式建立鏡像helloworld
  • docker系列之使用docker compose編排容器
  • docker registry安裝簡單命令實現
  • 如何進入 Docker 容器
  • 如何進入 Docker 容器
  • 如何進入 Docker 容器
  • 如何進入 Docker 容器
  • 如何進入 Docker 容器
  • docker和容器的區別?百度知道
  • 如何連接Docker各容器
  • 如何進入 Docker 容器
  • 如何查看docker 里某個容器的的啟動命令
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云計算技術云其它首頁服務器云和虛擬化dockerdocker創建容器時目錄權限踩坑docker compose自定義網絡實現固定容器ip地址vmware中的ubuntu docker安裝(容器搭建)docker for windows 容器內網通過獨立ip直接訪問的方法刪除docker里建立容器的操作方法詳解docker中安裝配置oracle數據庫使用docker部署spring boot的實現方法docker安裝運行apache2服務器做圖片服務器的方法docker中mysql初始化及啟動失敗問題解決方案docker容器掛載宿主主機目錄的操作方法詳解docker 配置國內免費registry mirrorcentos7下安裝與卸載docker應用容器引擎的方法docker中dockerfile方式建立鏡像helloworlddocker系列之使用docker compose編排容器docker registry安裝簡單命令實現docker 清理命令集錦docker 給運行中的容器設置端口映ubuntu14.04+docker的安裝及使用docker獲取鏡像報錯docker: errodocker.service啟動失敗:unit ndocker容器如何優雅的終止詳解centos7 安裝docker 解決啟動不了詳解docker國內鏡像拉取和鏡像加淺談docker-compose網絡設置之nedocker如何固定ip設置的方法centos7搭建docker私人倉庫的方法(kuberkubernetes1.5.2升級到kubernetes1.10一些搭建docker內網私服的方法(docker-regis常用的docker基本命令及用法匯總docker compose 網絡設置詳解用docker作為paas的替代方案是否完美無缺docker拉取鏡像的完整步驟docker 多主機網絡通信詳細介紹如何利用docker容器實現代理轉發與數據備linux下docker安裝和使用教程
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果