一、創(chuàng)建容器時(shí)候的選項(xiàng)

--network xx:指定容器使用的網(wǎng)絡(luò)類(lèi)型
--hostname xx:指定容器使用的主機(jī)名
--dns x.x.x.x:指定容器使用的DNS地址
--dns-search xxx:指定搜索域,默認(rèn)搜索域是宿主機(jī)
--add-host 域名:地址 在hosts文件添加記錄
二、創(chuàng)建封閉式網(wǎng)絡(luò)容器
創(chuàng)建容器的時(shí)候,默認(rèn)用none網(wǎng)絡(luò)
可以再創(chuàng)建容器的時(shí)候,用network選項(xiàng)來(lái)指定容器的類(lèi)型是 none
創(chuàng)建容器
[root@host1?~]#?docker?run?--name?t1?-it?--rm?\ >?--network?none?--hostname?t1?--dns?114.114.114.114?\ >?--dns-search?linux.io?\ >?--add-host?www.baidu.com:1.2.3.4 >?busybox此時(shí)這個(gè)容器是沒(méi)有地址的
三、暴露容器地址到網(wǎng)絡(luò)
安裝容器的目的是讓用戶訪問(wèn)容器的服務(wù)
而容器通常是以nat方式工作,也就是隱藏在docker0網(wǎng)橋后,用戶無(wú)法訪問(wèn)
因此需要將容器暴露在網(wǎng)絡(luò)中才可以
1、將容器端口指定暴露到宿主機(jī)的動(dòng)態(tài)端口
案例:?jiǎn)?dòng)一個(gè)apache,并將其80端口暴露出來(lái)
[root@host1?~]#?docker?run?--name?httpd1?-it?-p?80?--rm?busybox WARNING:?IPv4?forwarding?is?disabled.?Networking?will?not?work. /?#? /?#?mkdir?/html /?#?echo?"<h2>test?page</h2>">>/html/index.html /?#? /?#?httpd?-h?/html/ /?#? /?#?netstat?-an Active?Internet?connections?(servers?and?established) Proto?Recv-Q?Send-Q?Local?Address???????????Foreign?Address?????????State??????? tcp????????0??????0?:::80???????????????????:::*????????????????????LISTEN此時(shí),就可以在宿主機(jī)訪問(wèn)了
[root@host1?~]#?curl?172.17.0.2 test?page在其他主機(jī)上想訪問(wèn)這個(gè)nginx的頁(yè)面,需要宿主機(jī)上的個(gè)動(dòng)態(tài)端口
將docker的端口暴漏到外面,需要iptables規(guī)則來(lái)實(shí)現(xiàn)的,所以查看nat表規(guī)則如下
docker命令可以查看端口映射關(guān)系
[root@host1?~]#?docker?port?httpd1 80/tcp?->?0.0.0.0:32770在其他主機(jī)上訪問(wèn)這個(gè)主機(jī)上的容器

當(dāng)這個(gè)容器被刪除了,這個(gè)端口映射規(guī)則自動(dòng)刪除
2、將容器端口指定暴露到宿主機(jī)的指定端口
案例:創(chuàng)建apache容器,將80端口映射到宿主機(jī)的8081端口
[root@host1?~]#?docker?run?--name?httpd1?-it?-p?80:8081?--rm?busybox /?#[root@host1?~]#?docker?port?httpd1 8081/tcp?->?0.0.0.0:803、將容器的指定端口暴漏到宿主機(jī)指定IP的動(dòng)態(tài)端口
方法1中的效果是將容器的端口映射到宿主機(jī)的隨機(jī)端口,這個(gè)端口會(huì)綁定在宿主機(jī)的所有IP上面。
-p 宿主機(jī)ip::容器端口
4、將容器的指定端口暴漏到宿主機(jī)指定IP的指定端口
方法3中的效果是將容器的端口映射到宿主機(jī)的指定端口,這個(gè)端口會(huì)綁定在宿主機(jī)的所有IP上面。
-p 宿主機(jī)ip:宿主機(jī)端口:容器端口
【如果需要暴漏出多個(gè)端口,那么就可以使用多次-p選項(xiàng)】
四、創(chuàng)建聯(lián)盟式網(wǎng)絡(luò)容器
聯(lián)盟式容器,其實(shí)就是讓多個(gè)容器共享網(wǎng)絡(luò)等三個(gè)名稱空間
1、將容加入其它容器的名稱空間
先創(chuàng)建容器
[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?busybox? /?#? /?#?ip?addr? 1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000 ????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00 ????inet?127.0.0.1/8?scope?host?lo ???????valid_lft?forever?preferred_lft?forever 13:?eth0@if14:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue? ????link/ether?02:42:ac:11:00:02?brd?ff:ff:ff:ff:ff:ff ????inet?172.17.0.2/16?brd?172.17.255.255?scope?global?eth0 ???????valid_lft?forever?preferred_lft?forever /?#? /?#?hostname 2ce8cf2a2f28 /?#? /?#?mkdir?/html /?#?echo?"test?page">/html/index.html /?#?httpd?-h?/html/ /?#? /?#?wget?-O?-?-q?127.0.0.1 test?page /?#再創(chuàng)建一個(gè)容器,并加入上個(gè)容器的名稱空間中
[root@host1?~]#?docker?run?--name?httpd2?--network?container:httpd1?--rm?-it?busybox /?#? /?#?ip?addr 1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000 ????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00 ????inet?127.0.0.1/8?scope?host?lo ???????valid_lft?forever?preferred_lft?forever 13:?eth0@if14:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue? ????link/ether?02:42:ac:11:00:02?brd?ff:ff:ff:ff:ff:ff ????inet?172.17.0.2/16?brd?172.17.255.255?scope?global?eth0 ???????valid_lft?forever?preferred_lft?forever /?#? /?#?hostname 2ce8cf2a2f28 /?#? /?#?wget?-O?-?-q?127.0.0.1 test?page /?#兩個(gè)容器的主機(jī)名、地址、IPC都是相同的
在一個(gè)容器里啟動(dòng)進(jìn)程,在另一個(gè)容器里是可以用127.0.0.1來(lái)訪問(wèn)
但是兩個(gè)容器的文件系統(tǒng)不是共享的,比如在一個(gè)主機(jī)中創(chuàng)建的文件或者目錄,在另一個(gè)主機(jī)中是訪問(wèn)不到的
2、將容器加入到宿主機(jī)的名稱空間
[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?--network?host?busybox? /?#?ip?addr 1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000 ????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00 ????inet?127.0.0.1/8?scope?host?lo ???????valid_lft?forever?preferred_lft?forever ????inet6?::1/128?scope?host? ???????valid_lft?forever?preferred_lft?forever 2:?ens33:?<BROADCAST,MULTICAST,UP,LOWER_UP>?mtu?1500?qdisc?pfifo_fast?qlen?1000 ????link/ether?00:0c:29:3f:bf:cf?brd?ff:ff:ff:ff:ff:ff ????inet?192.168.114.132/24?brd?192.168.114.255?scope?global?dynamic?ens33 ???????valid_lft?1653sec?preferred_lft?1653sec ????inet6?fe80::b487:3618:3453:eabe/64?scope?link? ???????valid_lft?forever?preferred_lft?forever 3:?ens37:?<BROADCAST,MULTICAST,UP,LOWER_UP>?mtu?1500?qdisc?pfifo_fast?qlen?1000 ????link/ether?00:0c:29:3f:bf:d9?brd?ff:ff:ff:ff:ff:ff ????inet?192.168.64.130/24?brd?192.168.64.255?scope?global?dynamic?ens37 ???????valid_lft?1648sec?preferred_lft?1648sec ????inet?172.16.100.5/24?brd?172.16.100.255?scope?global?ens37 ???????valid_lft?forever?preferred_lft?forever ????inet6?fe80::e81:e5e0:505:f39b/64?scope?link? ???????valid_lft?forever?preferred_lft?forever 4:?docker0:?<NO-CARRIER,BROADCAST,MULTICAST,UP>?mtu?1500?qdisc?noqueue? ????link/ether?02:42:37:b9:09:55?brd?ff:ff:ff:ff:ff:ff ????inet?172.17.0.1/16?brd?172.17.255.255?scope?global?docker0 ???????valid_lft?forever?preferred_lft?forever ????inet6?fe80::42:37ff:feb9:955/64?scope?link? ???????valid_lft?forever?preferred_lft?forever /?#? /?#? /?#?hostname host1 /?#五、修改的默認(rèn)網(wǎng)絡(luò)和網(wǎng)橋
1、修改Docker0
docker0網(wǎng)橋的默認(rèn)地址是172.17的
修改這個(gè)需要修改配置文件:/etc/docker/daemon.json

bip是知道docker0的ip地址
2、創(chuàng)建自定義網(wǎng)橋
創(chuàng)建一個(gè)網(wǎng)橋,名稱為mybr0
[root@host1?~]#?docker?network?create?\ >?--subnet?"30.0.0.0/8"?--gateway?"30.0.0.1"?\ >?mybr0[root@host1?~]#?docker?network?ls NETWORK?ID??????????NAME????????????????DRIVER??????????????SCOPE 5e905c47ac51????????bridge??????????????bridge??????????????local 386d8dc4beb8????????host????????????????host????????????????local 256a8b6832cb????????mybr0???????????????bridge??????????????local eb7b7cf29f29????????none????????????????null????????????????localmybr0是網(wǎng)絡(luò)名稱,不是網(wǎng)絡(luò)接口名稱
創(chuàng)建容器使用這個(gè)網(wǎng)橋設(shè)備
[root@host1?~]#?docker?run?--name?httpd1?-it?--rm?--network?mybr0?busybox? /?#? /?#? /?#?ip?addr 1:?lo:?<LOOPBACK,UP,LOWER_UP>?mtu?65536?qdisc?noqueue?qlen?1000 ????link/loopback?00:00:00:00:00:00?brd?00:00:00:00:00:00 ????inet?127.0.0.1/8?scope?host?lo ???????valid_lft?forever?preferred_lft?forever 16:?eth0@if17:?<BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN>?mtu?1500?qdisc?noqueue? ????link/ether?02:42:1e:00:00:02?brd?ff:ff:ff:ff:ff:ff ????inet?30.0.0.2/8?brd?30.255.255.255?scope?global?eth0 ???????valid_lft?forever?preferred_lft?forever /?#擴(kuò)展:在一個(gè)主機(jī)上做了兩個(gè)網(wǎng)橋(其實(shí)就相當(dāng)于兩個(gè)虛擬交換機(jī)),然后每個(gè)交換機(jī)上安裝一個(gè)容器,這兩個(gè)容器不在同一個(gè)網(wǎng)段
??
想實(shí)現(xiàn)兩個(gè)容器通信,其實(shí)只需要在宿主機(jī)上啟動(dòng)路由轉(zhuǎn)發(fā)功能就可以了,原因 有兩個(gè)
容器的網(wǎng)關(guān)指向了虛擬交換機(jī)地址
虛擬交換機(jī)本身就在宿主機(jī)上
有一點(diǎn)需要注意,默認(rèn)會(huì)在防火墻上添加一些規(guī)則阻止這種情況下的容器之間的通信,所以,要想實(shí)現(xiàn)容器之間的通信,需要去修改itpables規(guī)則。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:Docker系列6:Docker網(wǎng)絡(luò)管理-創(chuàng)新互聯(lián)
本文地址:http://chinadenli.net/article4/diiioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、標(biāo)簽優(yōu)化、商城網(wǎng)站、虛擬主機(jī)、企業(yè)建站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容