日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

利用 Docker 在不同宿主机做 CentOS 系统容器 | 原力计划

發(fā)布時間:2024/8/23 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 Docker 在不同宿主机做 CentOS 系统容器 | 原力计划 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 |?于先森2017

責編 | 伍杏玲

出品 | CSDN博客

最近公司新接到一個項目,慣例是通過技術(shù)架構(gòu)、業(yè)務(wù)需求、用戶量還有以往的經(jīng)驗大概評估出一份資源配置表格提供給客戶,讓客戶參考采購的服務(wù)器資源。但這次客戶根本沒有根據(jù)我們提供的參考表格來,而是直接就提供給我們一些高配置的服務(wù)器實例,實例數(shù)與我們預(yù)期的少了很多,但配置相對的提高了很多,本著客戶是上帝的原則,我們只能自己針對服務(wù)器做虛擬化。

我為什么選擇用Docker虛擬化服務(wù)器?

之前一直是在Windows系統(tǒng)上做虛擬機,在Linux系統(tǒng)上虛擬化服務(wù)器還是第一次,更何況這個Linux系統(tǒng)是沒有圖形界面的。在虛擬化服務(wù)器之前我也查詢資料做過很多技術(shù)比較,最終選擇使用Docker來虛擬化服務(wù)器,具體總結(jié)優(yōu)勢無非以下幾點:

1、Docker創(chuàng)建的容器啟動速度快,秒級啟動。

Docker管理容器操作(start、stop、rm、restart等等) 都是以秒或毫秒為單位的。

2、Docker可以基于創(chuàng)建的鏡像進行彈性擴展。

創(chuàng)建容器并且根據(jù)自己的需求配置好容器后提交鏡像到倉庫,等到需要擴展容器的時候可拉取鏡像啟動相同的容器。

3、Docker創(chuàng)建的容器較輕量級

我可以在一臺服務(wù)器上啟動很多容器,如果只是用到某個服務(wù)的話,你無需虛擬整套系統(tǒng)版本。當然本文目的是虛擬出一整套系統(tǒng)的運行環(huán)境,所以就另當別論了。

4、Docker開源免費

開源的,免費的,低成本的,這就不用我多說了。

Docker的安裝

Docker的安裝這個其實我不必多說什么,網(wǎng)上一搜一大堆。但是有幾點我需要說明下:

1、Docker存儲數(shù)據(jù)位置及鏡像存儲位置

默認情況下Docker是將數(shù)據(jù)存儲在/var/lib/docker路徑下的,如果你系統(tǒng)盤的磁盤空間比較小,那你就需要修改Docker的數(shù)據(jù)存儲路徑了,可通過如下命令查看:

sudo?docker?info?|?grep?"Docker?Root?Dir"

修改方法就是先停掉Docker服務(wù),然后在/etc/docker/路徑下創(chuàng)建一個daemon.json文件,在文件里加入如下文本:

{"graph":?"/home/docker"}

重啟Docker,再次查看Docker存儲路徑是否已經(jīng)修改,如果不成功請自行百度查找,修改方法不止這一種。

2、拉取私有倉庫鏡像

這個私有倉庫不是Docker收費版的那個,而是針對自己公司搭建的私有倉庫。當你想拉取私有倉庫鏡像的時候,你需要配置私有倉庫的IP和端口號,目的是讓Docker信任你的私有倉庫。具體步驟還是先關(guān)閉Docker服務(wù),然后修改daemon.json文件,如下:

{"graph":?"/home/docker","insecure-registries":["192.168.10.123:5000"]}

重啟Docker,此時你就可以拉取你私有倉庫的鏡像了。

Docker容器在不同宿主機間通信

在說這個之前我先大概說下Docker網(wǎng)絡(luò)配置,Docker安裝后會自動創(chuàng)建3種網(wǎng)絡(luò):bridge、host、none,這三種網(wǎng)絡(luò)模式的詳細講解我就不說了,因為太占篇幅,我就大概講下我的理解吧。如下:

1、bridge模式

我理解就是Docker守護進程啟動時會在宿主機上創(chuàng)建一個docker0虛擬網(wǎng)橋,這個網(wǎng)橋的作用就相當于一個交互機,該宿主機上的所有容器都是通過這個虛擬網(wǎng)橋連接外部網(wǎng)絡(luò)的,docker0虛擬網(wǎng)橋的IP就相當于該宿主機上所有容器的默認網(wǎng)關(guān)。

當創(chuàng)建一個新容器時Docker會在宿主機上創(chuàng)建一對虛擬網(wǎng)卡veth pair設(shè)備,并且將veth pair設(shè)備的一端放在新創(chuàng)建的容器中,并命名為eth0(容器的網(wǎng)卡),另一端放在宿主機中,以vethxxx這樣類似的名字命名,并將這個網(wǎng)絡(luò)設(shè)備加入到docker0網(wǎng)橋中。

該模式是Docker創(chuàng)建容器的默認模式,如果想讓外部網(wǎng)絡(luò)訪問到容器中的服務(wù),就是需針對端口做映射,歸根究底它實際是在iptables做了DNAT規(guī)則,實現(xiàn)端口轉(zhuǎn)發(fā)功能。本文也是使用的這個模式。

根據(jù)我使用這么長時間的經(jīng)驗來看,這種模式的缺點就是需要事先規(guī)劃好容器哪些端口該做映射。網(wǎng)上也有教在容器創(chuàng)建好后給容器增添映射端口,但是有的不靠譜兒,有的則是需要修改Docker生成的配置文件,但是如果像我這種構(gòu)建的是整套系統(tǒng)運行環(huán)境,修改配置后重啟可能有些服務(wù)就需要重新配置了,比如集群相關(guān)的服務(wù)。

2、host模式

這種模式其實就是和宿主機共用一套網(wǎng)路環(huán)境,它使用的IP就是宿主機的IP,它使用的端口也是宿主機的端口,網(wǎng)絡(luò)的隔離性不好,我沒有使用它的根本原因也正是它的隔離性,因為我所使用的宿主機上是存在兩臺系統(tǒng)運行環(huán)境的,或多或少的會出現(xiàn)端口沖突問題。

3、none模式

這種模式下的容器沒有網(wǎng)卡、IP、路由等信息。需要我們自己為Docker容器添加網(wǎng)卡、配置IP等。也就是說它沒有辦法聯(lián)網(wǎng),我至今還沒有用過,可能這樣更安全吧。

以上就是我對Docker安裝后創(chuàng)建的三種網(wǎng)絡(luò)模式的理解,還有兩種模式(container模式和user-defined模式)可以自行查找了解。

3.1、不同宿主機間容器通信原理圖

上圖為不同宿主機間容器通信的的原理圖,說實話這張圖在網(wǎng)上都被用爛了,但是沒得辦法,誰讓咱確實是按照這么做的呢,對于上圖的講解我也是直接照搬網(wǎng)上查到的,如下:

1)數(shù)據(jù)從源容器中發(fā)出后,經(jīng)由所在主機的docker0虛擬網(wǎng)卡轉(zhuǎn)發(fā)到flannel0虛擬網(wǎng)卡,這是個P2P的虛擬網(wǎng)卡,flanneld服務(wù)監(jiān)聽在網(wǎng)卡的另外一端。

2)Flannel通過Etcd服務(wù)維護了一張節(jié)點間的路由表,在稍后的配置部分我們會介紹其中的內(nèi)容。

3)源主機的flanneld服務(wù)將原本的數(shù)據(jù)內(nèi)容UDP封裝后根據(jù)自己的路由表投遞給目的節(jié)點的flanneld服務(wù),數(shù)據(jù)到達以后被解包,然后直接進入目的節(jié)點的flannel0虛擬網(wǎng)卡,

然后被轉(zhuǎn)發(fā)到目的主機的docker0虛擬網(wǎng)卡,最后就像本機容器通信一下的有docker0路由到達目標容器。

這樣整個數(shù)據(jù)包的傳遞就完成了,這里需要解釋三個問題:

1)UDP封裝是怎么回事?

在UDP的數(shù)據(jù)內(nèi)容部分其實是另一個ICMP(也就是ping命令)的數(shù)據(jù)包。原始數(shù)據(jù)是在起始節(jié)點的Flannel服務(wù)上進行UDP封裝的,投遞到目的節(jié)點后就被另一端的Flannel服務(wù)

還原成了原始的數(shù)據(jù)包,兩邊的Docker服務(wù)都感覺不到這個過程的存在。

2)為什么每個節(jié)點上的Docker會使用不同的IP地址段?

這個事情看起來很詭異,但真相十分簡單。其實只是單純的因為Flannel通過Etcd分配了每個節(jié)點可用的IP地址段后,偷偷的修改了Docker的啟動參數(shù)。

在運行了Flannel服務(wù)的節(jié)點上可以查看到Docker服務(wù)進程運行參數(shù)(ps aux|grep docker|grep “bip”),例如“–bip=182.48.56.1/24”這個參數(shù),它限制了所在節(jié)點容器獲得的IP范圍。這個IP范圍是由Flannel自動分配的,由Flannel通過保存在Etcd服務(wù)中的記錄確保它們不會重復(fù)。

3)為什么在發(fā)送節(jié)點上的數(shù)據(jù)會從docker0路由到flannel0虛擬網(wǎng)卡,在目的節(jié)點會從flannel0路由到docker0虛擬網(wǎng)卡?

例如現(xiàn)在有一個數(shù)據(jù)包要從IP為172.17.18.2的容器發(fā)到IP為172.17.46.2的容器。根據(jù)數(shù)據(jù)發(fā)送節(jié)點的路由表,它只與172.17.0.0/16匹配這條記錄匹配,因此數(shù)據(jù)從docker0出來以后就被投遞到了flannel0。同理在目標節(jié)點,由于投遞的地址是一個容器,因此目的地址一定會落在docker0對于的172.17.46.0/24這個記錄上,自然的被投遞到了docker0網(wǎng)卡。

3.2、不同宿主機間容器通信安裝部署

雖然安裝部署方法也是在網(wǎng)上找的,但是網(wǎng)上給出的方法大方向是沒問題的就是一些細節(jié)講的還不是很清楚,導(dǎo)致我部署的時候還是出現(xiàn)很多問題。下面我會將我安裝部署的過程和遇到的問題整理到本文中。

3.2.1、宿主機環(huán)境準備

我準備了四臺宿主機,如下:

四臺宿主機都需要設(shè)置hosts:

[root@master?~]#?vim?/etc/hosts 192.168.10.1?master 192.168.10.1?etcd 192.168.10.2?slave1 192.168.10.3?slave2 192.168.10.4?slave3

3.2.2、安裝Etcd

本來想搭建etcd的多主機集群的,但是想了下只是在預(yù)生產(chǎn)使用而且只是處在前期搭建狀態(tài)還沒有正式使用,所以etcd我只在192.168.10.1服務(wù)器上搭建了單個主機的,如果后期出現(xiàn)問題,我會修改為多主機集群。

1、安裝etcd服務(wù)

yum?install?etcd?-y

2、修改etcd配置文件

[root@master?~]#?vim?/etc/etcd/etcd.conf #ETCD_CORS="" ETCD_DATA_DIR="/var/lib/etcd/default.etcd"?#數(shù)據(jù)存放路徑 #ETCD_WAL_DIR="" #ETCD_LISTEN_PEER_URLS="http://localhost:2380" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001"?#監(jiān)聽客戶端地址 #ETCD_MAX_SNAPSHOTS="5" #ETCD_MAX_WALS="5" ETCD_NAME="master"?#部署節(jié)點的名稱 #ETCD_SNAPSHOT_COUNT="100000" #ETCD_HEARTBEAT_INTERVAL="100" #ETCD_ELECTION_TIMEOUT="1000" #ETCD_QUOTA_BACKEND_BYTES="0" #ETCD_MAX_REQUEST_BYTES="1572864" #ETCD_GRPC_KEEPALIVE_MIN_TIME="5s" #ETCD_GRPC_KEEPALIVE_INTERVAL="2h0m0s" #ETCD_GRPC_KEEPALIVE_TIMEOUT="20s" # #[Clustering] #ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380" ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"?#通知客戶端地址 #ETCD_DISCOVERY=""

3、啟動etcd服務(wù)

[root@master?~]#?systemctl?start?etcd.service [root@master?~]#?systemctl?enable?etcd.service

4、查看etcd服務(wù)是否啟動成功

[root@master?~]#?netstat?-tnlp?|?grep?-E??"4001|2380"tcp????????0??????0?127.0.0.1:2380??????????0.0.0.0:*???????????????LISTEN??????22733/etcd??????????tcp6???????0??????0?:::4001?????????????????:::*????????????????????LISTEN??????22733/etcd??????????[root@master?~]#?ps?-ef?|?grep?etcdetcd??????22733??????1??1?4月17?????????03:33:44?/usr/bin/etcd?--name=master?--data-dir=/var/lib/etcd/default.etcd?--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001root?????162335??????1??0?4月22?????????00:04:37?/usr/bin/flanneld?-etcd-endpoints=http://etcd:2379?-etcd-prefix=/atomic.io/networkroot?????333684?333652??0?19:58?pts/2????00:00:00?vi?/etc/etcd/etcd.confroot?????334263?333652??0?20:00?pts/2????00:00:00?vi?/etc/etcd/etcd.confroot?????338219?333652??0?20:14?pts/2????00:00:00?grep?--color=auto?etcd[root@master?~]#?etcdctl?-C?http://etcd:4001?cluster-healthmember?8e9e05c52164694d?is?healthy:?got?healthy?result?from?http://etcd:2379cluster?is?healthy[root@master?~]#?etcdctl?-C?http://etcd:2379?cluster-healthmember?8e9e05c52164694d?is?healthy:?got?healthy?result?from?http://etcd:2379cluster?is?healthy[root@master?~]#?

5、在etcd中配置flannel需要用到的鍵值

[root@master?~]#?etcdctl?mk?/atomic.io/network/config?'{?"Network":?"172.18.0.0/16"?}'{?"Network":?"172.18.0.0/16"?}

3.2.3、安裝Flannel

flannel是所有宿主機需要安裝的中間件,而且前文中提到的hosts文件一定要設(shè)置好。

1、安裝flannel服務(wù)

yum?install?flannel?-y

2、修改flannel配置文件

[root@master?~]#??vim?/etc/sysconfig/flanneld #?Flanneld?configuration?options?? #?etcd?url?location.??Point?this?to?the?server?where?etcd?runs FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"?#etcd客戶端端口 #?etcd?config?key.??This?is?the?configuration?key?that?flannel?queries #?For?address?range?assignment FLANNEL_ETCD_PREFIX="/atomic.io/network"?#這個參數(shù)的值需要是etcd保存的key值,不然flannel啟動不了 #?Any?additional?options?that?you?want?to?pass #FLANNEL_OPTIONS=""

flanneld配置文件中的FLANNEL_ETCD_PREFIX參數(shù)與上文中保存在etcd中的一個鍵值是相對應(yīng)的,但要注意FLANNEL_ETCD_PREFIX參數(shù)的值沒有后邊的/config。

3、啟動flanneld服務(wù)

[root@master?~]#?systemctl?start?flanneld.service [root@master?~]#?systemctl?enable?flanneld.service

4、查看flanneld服務(wù)是否啟動成功

[root@master?~]#?ps?-ef|grep?flanneld root?????162335??????1??0?4月22?????????00:04:38?/usr/bin/flanneld?-etcd-endpoints=http://etcd:2379?-etcd-prefix=/atomic.io/network root?????345092?333652??0?20:37?pts/2????00:00:00?vim?/etc/sysconfig/flanneld root?????345496?333652??0?20:39?pts/2????00:00:00?vim?/etc/sysconfig/flanneld root?????345545?333652??0?20:39?pts/2????00:00:00?vim?/etc/sysconfig/flanneld root?????347078?333652??0?20:44?pts/2????00:00:00?vim?/etc/sysconfig/flanneld root?????350147?333652??0?20:54?pts/2????00:00:00?grep?--color=auto?flanneld [root@master?~]#?ifconfig?flannel0 flannel0:?flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>??mtu?1472inet?172.18.92.0??netmask?255.255.0.0??destination?172.18.92.0inet6?fe80::244d:d95c:a79f:af2d??prefixlen?64??scopeid?0x20<link>unspec?00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00??txqueuelen?500??(UNSPEC)RX?packets?2691026??bytes?142959067?(136.3?MiB)RX?errors?0??dropped?0??overruns?0??frame?0TX?packets?2690704??bytes?152477868?(145.4?MiB)TX?errors?0??dropped?0?overruns?0??carrier?0??collisions?0

此時可看到flannel生成的flannel0網(wǎng)卡的IP是在etcd保存的網(wǎng)段內(nèi)的,說明flannel網(wǎng)絡(luò)配置完成。

3.2.4、配置docker0虛擬網(wǎng)橋

安裝啟動flanneld后重啟Docker服務(wù),查看Docker服務(wù)生成的docker0網(wǎng)橋IP是否已經(jīng)位于flanneld生成flannel0網(wǎng)卡的網(wǎng)段之中,比如flannel0網(wǎng)卡的IP是:172.18.92.0,docker0的IP是:172.18.92.1,則配置成功。如果IP地址的前三段有一段不同,則說明需要重新對docker0虛擬網(wǎng)橋進行配置,配置方法如下:

1、停掉Docker服務(wù),修改docker.service配置文件

[root@master?~]#?systemctl?stop?docker [root@master?~]#?vim?/usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd?-H?fd://?--containerd=/run/containerd/containerd.sock?--bip=172.18.92.1/24

如上就是需要在docker.service文件中的ExecStart參數(shù)后添加–bip=172.18.92.1/24,bip的值請查看/run/flannel/subnet.env文件的FLANNEL_SUBNET值,這兩個需要保持一致。

2、重啟Docker

[root@master?~]#?systemctl?daemon-reload [root@master?~]#?systemctl?restart?docker

3、docker0是否配置成功

[root@master?~]#?ifconfig?flannel0 flannel0:?flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>??mtu?1472inet?172.18.92.0??netmask?255.255.0.0??destination?172.18.92.0inet6?fe80::244d:d95c:a79f:af2d??prefixlen?64??scopeid?0x20<link>unspec?00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00??txqueuelen?500??(UNSPEC)RX?packets?2701666??bytes?143511551?(136.8?MiB)RX?errors?0??dropped?0??overruns?0??frame?0TX?packets?2701343??bytes?153069980?(145.9?MiB)TX?errors?0??dropped?0?overruns?0??carrier?0??collisions?0 [root@master?~]#?ifconfig?docker0 docker0:?flags=4163<UP,BROADCAST,RUNNING,MULTICAST>??mtu?1500inet?172.18.92.1??netmask?255.255.255.0??broadcast?172.18.92.255inet6?fe80::42:cff:fe75:d72??prefixlen?64??scopeid?0x20<link>ether?02:42:0c:75:0d:72??txqueuelen?0??(Ethernet)RX?packets?4010425??bytes?230843638?(220.1?MiB)RX?errors?0??dropped?0??overruns?0??frame?0TX?packets?3057671??bytes?995135672?(949.0?MiB)TX?errors?0??dropped?0?overruns?0??carrier?0??collisions?0

如上docker0處于flannel0的網(wǎng)段內(nèi),說明配置已經(jīng)成功。

3.2.5、驗證宿主機間容器是否通信

如果以上步驟都已配置成功,此時就需要驗證不通宿主機間容器是否通信了,驗證方法就是在每個宿主機創(chuàng)建個容器,然后在容器中ping其他宿主機中容器的Ip,如果能夠ping通,則說明已經(jīng)完成。如果Ping不通也不要驚慌,因為可能是底層的iptables造成的,所以解決辦法是在各宿主機上執(zhí)行下面操作:

[root@master?~]#?iptables?-P?INPUT?ACCEPT [root@master?~]#?iptables?-P?FORWARD?ACCEPT [root@master?~]#?iptables?-F [root@master?~]#?iptables?-L?-n

以上只完成后再次測試容器間是否能夠相互ping通,還是不可以的話就需要排查是否那個環(huán)節(jié)疏忽出現(xiàn)問題了。docker通過Flannel可以實現(xiàn)各容器間的相互通信,即宿主機和容器,容器和容器之間都能相互通信。

制作CentOS系統(tǒng)版本容器

1、拉取centos:7.6.1810系統(tǒng)版本的鏡像

[root@master?~]#?docker?pull?centos:7.6.1810

2、創(chuàng)建容器

[root@master?~]#?docker?run?-itd?--name?pre-centos?--privileged=true?-p?10022:22?centos:7.6.1810?init

我對該命令中的參數(shù)具體講解下:

-i:以交互模式運行容器,通常與 -t 同時使用。

-t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用。

-d:后臺運行容器,并返回容器ID,如果不加這個參數(shù),當退出容器時,這個容器也就停止了。

–privileged:默認是false,我們這里改成了true,使用該參數(shù)容器中的root擁有真正的root權(quán)限,否則容器的root用戶只是宿主機的一個普通用戶權(quán)限,有些命令如:systemctl、service是使用不了的。

-p:就是映射端口的作用

還有一個問題需要注意,就是該命令后的init,加上它賦值給容器真正的root權(quán)限才會生效,如果使用/bin/bash是不會生效的。

3、進入創(chuàng)建好的容器

[root@master?~]#?docker?exec?-it?1fc31e49daxc?bash

1fc31e49daxc 參數(shù)為新創(chuàng)建容器的CONTAINER ID。

4、安裝啟動ssh

[root@1fc31e49daxc?~]#?yum?-y?install?openssh-server [root@1fc31e49daxc?~]#?systemctl?start?sshd

容器中安裝配置ssh,就是希望外部工具能夠通過容器映射宿主機的10022端口直接訪問到容器里。

5、修改ssh配置文件

[root@1fc31e49daxc?~]#?vi?/etc/ssh/sshd_config#配置信息去掉如下注釋Port?22ListenAddress?0.0.0.0ListenAddress?::permitrootlogin?yesUsePAM?yes?改為?UsePAM?noGSSAPICleanupCredentials?no?改為?GSSAPICleanupCredentials?yesUsePrivilegeSeparation?sandbox?改為?UsePrivilegeSeparation?no

6、重啟ssh

[root@1fc31e49daxc?~]#?/usr/sbin/sshd?-D

7、設(shè)置linux容器的密碼

[root@1fc31e49daxc?~]#?passwd?root

8、退出容器并將容器提交成鏡像

[root@1fc31e49daxc?~]#?exit [root@master?~]#??docker?commit?1fc31e49daxc?pre-centos:1.0

9、將鏡像打成標簽提交私有倉庫

[root@master?~]#??docker?tag?8a1960ed7c4c?192.168.12.10:5000/yuliang/pre-centos:1.0 [root@master?~]#??docker?push?8a1960ed7c4c?

8a1960ed7c4c 為IMAGE ID,修改標簽后的鏡像與提交的鏡像IMAGE ID是一樣的。

10、拉取私有倉庫鏡像

[root@slave1?~]#??docker?pull?192.168.12.10:5000/yuliang/pre-centos:1.0

11、創(chuàng)建新的容器

[root@slave1?~]#??docker?run?-itd?--name?pre-centos?--privileged=true?-m?30G?-p?10022:22??-p?3357:3306?-p?8024:8024?-p?8025:8025??192.168.12.10:5000/yuliang/pre-centos:1.0?/usr/sbin/init

其中有一個新的參數(shù)-m需要講一下,其實它就是限制容器使用的內(nèi)存,默認情況下容器使用的資源是根據(jù)宿主機來定的,宿主機有多少資源它就能夠用多少資源。容器的磁盤空間除外,容器的磁盤空間是根據(jù)Docker存儲數(shù)據(jù)路徑所在宿主機的那個磁盤大小定的,也就是說Docker存儲數(shù)據(jù)路徑所在磁盤有100G,容器也只能夠使用100G的磁盤。而內(nèi)存和CPU在默認情況下宿主機有多少資源它就能夠用多少資源。這個容器我使用了-m來限制容器只能使用30G內(nèi)存。

(注:再次提醒事先規(guī)劃好容器使用的端口在創(chuàng)建容器,如果容器已經(jīng)創(chuàng)建成功后想添加端口請查看這篇文章:為已創(chuàng)建的容器添加映射端口)

12、測試容器是否正常運行

[root@slave1?~]#??docker?ps [root@slave1?~]#??docker?exec?-it?a38321832cfd?bash

13、查看容器信息

[root@slave1?~]#??docker?inspect?a38321832cfd?

這條命令執(zhí)行后顯示的信息就是該a38321832cfd容器構(gòu)建時候的全部信息,包括IP、端口映射等等。

14、訪問容器

1、如果是在做過容器間通信的宿主機上連接訪問可通過以下命令:

[root@master?~]#?ssh?root@172.18.91.2

注意使用的容器的22端口。

2、如果是在沒有做過容器間通信的服務(wù)器上連接訪問則需要通過以下命令:

[root@ecs-12?~]#?ssh?-p?10022?root@192.168.10.2

3、如果是使用外部工具訪問容器,需要用到也是宿主機的10022端口和宿主機的IP。

上文參考:

https://blog.csdn.net/tototuzuoquan/article/details/82119043

總結(jié)

以上關(guān)于如何做不同宿主機間容器通信和使用Docker創(chuàng)建虛擬機服務(wù)器我已經(jīng)講解的很清楚了,文中有些我是在網(wǎng)上找來的也添加了出處,在網(wǎng)上找來的內(nèi)容我也有實際認認真真的研究過并且加以改進我才敢在我們的預(yù)生產(chǎn)環(huán)境使用。因為現(xiàn)在還沒到真正的測試實驗階段,所以我不敢打包票說這些內(nèi)容一定沒有問題。

后續(xù)我會將遇到的問題整理進這篇文章的,如果我沒有添加則說明確實沒有問題了。看到這篇文章的人發(fā)現(xiàn)文中有問題可隨時給我留言。最后說一句話,有些事情看著很容易,實際做起來你會發(fā)現(xiàn)也很容易,但得需要你去做啊。

版權(quán)聲明:本文為CSDN博主「于先森2017」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/yuliang123345/article/details/105799892

更多精彩推薦 ?全國程序員工資最新統(tǒng)計來了,平均 14,542 元! ?老師,你確定Java注釋不會被執(zhí)行嗎? ?華為副總裁回應(yīng)應(yīng)用刪除用戶圖片;美國擬允許華為參與 5G 標準建設(shè);Firefox 76.0 發(fā)布 | 極客頭條 ?螞蟻金服高要求的領(lǐng)域建模能力,對研發(fā)來說到底指什么? ?一文看懂主流區(qū)塊鏈攻擊底層邏輯 | 博文精選 ?餓了么交易系統(tǒng)5年演化史 你點的每個“在看”,我都認真當成了喜歡

總結(jié)

以上是生活随笔為你收集整理的利用 Docker 在不同宿主机做 CentOS 系统容器 | 原力计划的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。