docker容器的網路連線

2021-07-11 18:34:13 字數 4757 閱讀 2335

樓主因為剛開始學docker,

如果這個時候就接觸大量的概念

,理論知識

,肯定會反感的

,咱們先來實踐

sudo apt-get install -y bridge-utils

這個命令安裝乙個網橋管理程式.

首先解決一下在容器中好多命令whereis

不到的情況

,先說一下問題

,樓主使用

root@syx-vb:~# docker run -it --name "test" ubuntu /bin/bash

構建了乙個容器,

但是進入容器之後樓主想看一下這個容器的

ip位址,檢視

ip位址的話

,我在地鐵上的一本雜誌上看到過,使用

ifconfig,

想不多坐地鐵還是挺有用的

.結果樓主萬萬沒想到的

:

bash: ifconfig: command not found

於是樓主想whereis

一下ifconfig(

這也是在那本雜誌上看見的).

root@syx-vb:~# whereis ifconfig

ifconfig:

呵呵!!!

樓主開始了漫長的搜尋和詢問.

有個大神告訴樓主

,可能是因為樓主的腦子不適合學

docker,

讓樓主放棄

...

第二個大神說讓樓主試一下其他的命令可不可用,

樓主試了

ping命令,

發現和ifconfig

出現的情況相同

,覺得人生真的一點意思也沒有

!!!

第三個大神告訴樓主先執行:

因為資料容器啥都沒有是正常的,

這個啥都沒有樓主覺得應該包括命令

...所以先試試大神說的這個命令

,樓主不知道怎麼

apt-get update
回事,

不管怎麼樣

,樓主的宿主機也好

,容器也好

,只要一從網上

pull東西,

就成了龜速

,問了問別人

,發現別人都很快

!!!why,

樓主不服

.為啥人家弄的

dockerfile,buile

一下 只需要

5s左右

,樓主才兩句命令列就需要半個小時

!!!如果有大神能看到樓主的抱怨

,希望能告訴樓主解決方案

!!!謝謝了

,真的給你跪下都沒問題

.在研究為啥容器中部分命令無法使用的時候,

樓主有學了好多的東西

,比如使用virtualbox

檔案共享

,刪除容器

,移動檔案的命令

.樓主加了乙個

docker群,

在裡面不敢大神說話

,害怕賤驢技窮

...大神們說

winscp,xshell,xftp

的東西,

我只能默默的看著他們裝

b,大神們讓樓主把容器匯出來給他們看一下

.

docker容器在預設情況下是可以互相連線的

.演示一下:

1.先構建乙個自己的dockerfile:

from ubuntu

run apt-get install -y ping

run apt-get update

run apt-get install -y nginx

run apt-get isntall -y curl

expose 80

cmd /bin/bash

2.使用自己的dockerfile

構建乙個映象

docker build -t=「syx/docker_images」 .

注意一下,這個.

表示當前目錄下的

dockerfile

3.使用自己的映象構建兩個容器並檢視兩個容器的ip

位址:

docker run -it --name 「syx/contain1」 syx/docker_images

ifconfig

docker run -it --name 「syx/contain2」 syx/docker_images

ifconfig

執行nginx

服務

4.在容器2

上使用ping

命令測試能夠

ping

同容器1.

5.或者在容器2

上使用curl

命令:

curl http://容器1的ip位址

備註一下,

因為樓主的

ping

命令無法使用

,所以樓主這個實驗是做不成了

,只能把相關的過程發出來

,等到樓主以後搞定了為啥

ping

命令不能使用了

,在來給大家說說在實驗過程中出現的問題

.

這個實驗的目的是證明在同乙個宿主機上兩個容器是可以相互訪問的.

但是當停止乙個容器再重啟乙個容器的時候

,容器的

ip位址是變化的

.

互聯的情況就不多少了,

主要看一拒絕互聯的情況:

vim /etc/default/docker

新增:

docker_opts=」  -icc=false」

重啟docker

服務

在少數情況下,

我們需要允許特定容器之間的互聯

:

vim /etc/default/docker

新增:

docker_opts=」--icc=false --iptables=true 」

重啟docker服務

此時執行乙個新的容器:

docker run -it --name syx/newcontain --link=contain1:webtest syx/docker_images

這個時候使用

curl webtest(需要先啟動

syx/contain1

的nginx服務)

如果不能連線,

需要先將

iptables

的設定清空

:

sudo iptables -f

重啟docker

服務

重啟docker容器,

這個時候使用

attach syx/contain1,

啟動nginx,attach syx/newcontain,

使用curl webtest

應該可以和

syx/contain

互聯了.

如果這個時候使用syx/contain2

去curl syx/contain1

是不能實現互聯的

.

為什麼會出現這種情況呢,

因為我們使用

--link選項.

ps -ef | grep docker

檢視docker

守護程序是否執行.

前面說的那個iptables

選項是與

linux

核心整合的包過濾防護牆系統

.幾乎所有的

linux

都會包含

iptables

的功能.

可以使用whereis iptables

檢視一下

iptables

的位置.

具體的iptables

的介紹,

因為樓主沒明白

,所以不在這裡瞎bb了

.

Docker容器的網路連線

yw1989 ubuntu ifconfig docker0 link encap ethernet hwaddr 02 42 97 61 42 9f inet addr 172.17.0.1 bcast 0.0.0.0 mask 255.255.0.0inet6 addr fe80 42 97ff...

docker容器間的網路連線

bridge network 相關命令 容器間的連線方式目前了解到的有兩種。legacy linking 使用容器名進行連線,實際上它建立了乙個橋接的網路,在這個網路裡,容器之間可以相互通訊。bridge network 這種方式建立了乙個自定義的橋接網路,它的型別是isolated network...

Docker 內部之間的網路連線

1.1 docker networking 可以將容器連線到不同的宿主機器上。1.2 通過 docker networking 連線的容器可以在無需更新連線的情況下,對停止 啟動或者重啟容器。而使用docker link 可能需要修改一些配置,或者重啟相應的容器來維護docker之間的連線。1.3 ...