1. 程式人生 > >使Docker提供對外服務的網路配置(橋接與埠)

使Docker提供對外服務的網路配置(橋接與埠)

前沿:

        docker 啟動容器後,如何對外服務?   希望大家看了這篇文章後有些幫助。 

docker的有關網路問題沒怎麼搞清楚,請教了下鄧磊同學,感謝 !

Docker生成的容器,一般會給你生成一個ip地址,這個ip地址是和docker0的地址是一個ip段的。

通過ip a命令 ,咱們可以看到docker0的ip和子網的範圍 。 大家會發現除了docker0 還有一個vethc 數字的網絡卡,這個也算是虛擬網絡卡綁在橋接上的。

wKiom1PsaNfirzmfAAU8lwiyqYc483.jpg

我們建立一個容器,並且暴露22埠。 這個22埠的意思是對外暴露了22埠,系統會從49000-49900埠範圍內給你分配一個埠。

docker run 指明埠有兩種的方式,一種是-P ,他是識別容器裡的dockerfile宣告的埠關係。 還有一個是-p 這個是小屁屁,他就可以直白點了。  比如 -p  6379,是對外暴露了6379。   6379:6379 是外面是6379,裡面也是6379 。

[email protected]:~# docker run -d  -p 22 --name="redis_test" rastasheep/ubuntu-sshd 

ed7887b93aa452323ee96339d889bebc36ad25a479c660ba89e97d2c5869f105

[email protected]:~# 

[email protected]:~# docker ps -a

CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS              PORTS                   NAMES

ed7887b93aa4        rastasheep/ubuntu-sshd:latest   /usr/sbin/sshd -D   7 seconds ago       Up 7 seconds        0.0.0.0:49153->22/tcp   redis_test          

[email protected]:~# 

wKioL1PsaqiC9a-XAAdUMGvZeLM044.jpg

原來我以為docker是寫了一個socker做了埠的對映功能,看文件才知道,他就是呼叫了一個 iptable的埠對映。 

iptables -t nat -L

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 原文:http://rfyiamcool.blog.51cto.com/1030776/1540074 Chain PREROUTING (policy ACCEPT) target     prot opt source               destination          DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL Chain INPUT (policy ACCEPT) target     prot opt source               destination          Chain OUTPUT (policy ACCEPT) target     prot opt source               destination          DOCKER     all  --  anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL Chain POSTROUTING (policy ACCEPT) target     prot opt source               destination          MASQUERADE  all  --  localhost/16        !localhost/16         Chain DOCKER (2 references) target     prot opt source               destination          DNAT       tcp  --  anywhere             anywhere             tcp dpt:49153 to:172.17.0.2:22 [email protected]:~#

有主機的ip,和容器的ip,那你還怕啥 !  想對映什麼,自己對映。

1 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80

docker之間的容器預設是互通的,也就是兩個容器可以互相的通訊。 如果想控制容器之間的通訊,可以利用 docker  的 --icc 屬性控制。

wKioL1Psd2HwJdOfAAQ3awyJ1Gg532.jpg

好了,我們在說下橋接的方式。 如果你覺得麻煩,每次都需要做埠的對映,或者是修改對映,那你可以考慮下用橋接網絡卡的模式。 貌似一些論壇上的牛人不太推薦用橋接,估計是為了安全的問題。  畢竟nat的話,對外是安全的,對外的服務也只是暴露出埠而已。  而橋接的話,會暴露ip出去。 

暫停docker服務

sudo service docker stop

用ip命令使docker0網絡卡down掉

sudo ip link set dev docker0 down

刪除網絡卡

sudo brctl delbr docker0

建立一個網絡卡 名字是bridge0

sudo brctl addbr bridge0

ip地址和子網

ip addr add 192.168.5.1/24 dev bridge0

啟動橋接網絡卡

sudo ip link set dev bridge0 up

寫入配置

echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker

sudo service docker start

這樣的橋接方式有個問題就是,他的ip是docker自己檢測搞給你的,貌似不是dhcp獲取空閒的,然後賦予給容器的。我昨天再次做測試的時候,有一個ip被佔用的,但是他還是分噴給了一個被佔用的ip地址。 這樣的話就衝突了。 如果ip端和公司內部或者是線上重疊的話,可能會造成ip地址的衝突。 橋接後遇到ip地址衝突是個人結論 ,也可能是我這邊環境導致的這類問題!

相關推薦

使Docker提供對外服務網路配置()

前沿:         docker 啟動容器後,如何對外服務?   希望大家看了這篇文章後有些幫助。  docker的有關網路問題沒怎麼搞清楚,請教了下鄧磊同學,感謝 ! Docker生成的容器,一般會給你生成一個ip地址,這個ip地址是和docker0的地址

Linux入門-網路配置-模式NAT的區別

首先,在說到VMware的網路模型之前,先說一下VMware的幾個虛擬裝置:VMnet0:這是VMware用於虛擬橋接網路下的虛擬交換機; VMnet1:這是VMware用於虛擬Host-Only網路下的虛擬交換機; VMnet8:這是VMware用於虛擬NAT

Docker配置網路

為了使本地網路中的機器和Docker容器更方便的通訊,我們經常會有將Docker容器配置到和主機同一網段的需求。這個需求其實很容易實現,我們只要將Docker容器和宿主機的網絡卡橋接起來,再給Docker容器配上IP就可以了。 Centos 6按照下面的方法操

centos7 docker宿主機配置物理網絡終極實戰

centos7、docker、橋接centos7 docker宿主機配置橋接物理網絡終極實戰1、停止docker daemon,並刪除docker0systemctl stop docker.service ip link set dev docker0 down brctl delbr docker02、

docker數據卷備份恢復以及配置網絡

not curl log cast 單位 分享 bfc eid exit 筆記內容:docker數據卷備份恢復以及網絡相關筆記日期:2018-02-06 25.9 數據卷備份恢復 25.10 docker網絡模式 25.11 opration not permitted錯

docker(五)配置網絡

docker配置橋接網絡 復制網卡配置文件ifcfg-ens33為ifcfg-br0,修改ifcfg-br0 [root@apenglinux-002 ~]# cd /etc/sysconfig/network-scripts/ [root@apenglinux-002 network-scripts]# c

Docker 訪問宿主服務路由配置及link實現容器間訪問

宿主機器不能直接ping容器IP,容器本身內部如果設定的127.0.0.1亦指其容器本身,如果容器需要訪問宿主,此時不能簡單的使用127.0.0.1而應該使用宿主的內網IP地址或公網地址。 構建和執行服務和資料庫容器 通過Dockerfile構建: docker build -t r

【Linux】為CentOS配置網路方法

第一步      點開虛擬機器的設定,網路連線選擇橋接方式,其他勾選按照下圖,如下圖做相關的設定:   第二步         開啟網路連線,找到當前主機在上網的:   

從內部自用到對外服務配置管理的演進和設計優化實踐

本文整理自阿里巴巴中介軟體技術專家彥林在中國開源年會上的分享,通過此文,您將瞭解到: 微服務給配置管理所帶來的變化 配置管理演進過程中的設計思考 配置管理開源後的新探索 配置中心控制檯設計實踐 “為什麼相對於傳統的軟體開發模式,微服務要強調配置中心,是出於什麼樣的訴求需要我們

linux下kvm配置網路問題

1、DHCP網橋命令:vim /etc/network/interfaces程式碼:auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto br0 iface br0 inet dhcp br

ubuntu下使用qemu安裝虛擬機器並配置網路

一、虛擬機器的建立:        1.ubuntu下安裝好qemu後,使用如下命令建立虛擬機器:     qemu-img create -f qcow2 voltdb.img 10g     -

Docker 使用指南 (三)—— 網路配置

本次實驗環境:騰訊雲伺服器 CentOS 6.7 x86_64 Docker 配置容器的步驟是: 1.建立一對虛擬介面 2.在主Docker主機內部給它一個唯一的名稱,比如veth65f9,繫結它到docker0或者Docker使用的任何網橋上 3.讓其他的介面翻

centos虛擬機網絡配置--模式

fig rtu emctl 條件 xshell min art systemctl virt 必要條件: 虛擬機鏡像centos7 CentOS-7-x86_64-Minimal-1708_2.iso 工具virtualBox5.2.6 主機系統windows8.

VMware - 虛擬機器三種網路模式 NAT 僅主機 區別

vmware為我們提供了三種網路工作模式,它們分別是:Bridged(橋接模式)、NAT(網路地址轉換模式)、Host-Only(僅主機模式)。 開啟vmware虛擬機器,我們可以在選項欄的“編輯”下的“虛擬網路編輯器”中看到VMnet0(橋接模式)、VMnet1(僅主機模式)、VMnet8(N

6、linux網路基於模式

1、vm虛擬機器的設定 E:選擇橋接模式 E:橋接模式選擇對應的本機網絡卡   2、修改對應的網路配置檔案 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 E:編輯網絡卡配置檔案 BOOTPROTO=static

vmware 虛擬機器三種網路模式 NAT 僅主機 區別

vmware為我們提供了三種網路工作模式,它們分別是:Bridged(橋接模式)、NAT(網路地址轉換模式)、Host-Only(僅主機模式)。 開啟vmware虛擬機器,我們可以在選項欄的“編輯”下的“虛擬網路編輯器”中看到VMnet0(橋接模式)、VMnet1(僅主機模

vmware上安裝centos網路設定模式

目的很簡單,就是讓虛擬機器上的centos系統可以被外界訪問,我在這裡設定的是靜態ip。在同一個區域網內,主要記錄一下橋接模式的配置。 需要注意的有幾點: 1、虛擬機器上Linux系統setting  設定。在虛擬機器選單下選擇你要設定的系統 右鍵-->設定sett

virtualbox下ubuntu16.04虛擬機器網絡卡配置方式上網

首先,本人被這個坑了好久,浪費了好多時間在網絡卡配置,不太懂他的原理,然後走了好多彎路。所以在這裡記錄下: 我之所以選擇好virtualbox,是因為它的安裝包小,免費,啟動快,vmvare workstation是收費的,當然可以破解,vmvare play

Linux下為KVM 配置裝置,給網配製ip地址

在安裝一個擁有虛擬化功能的Linux作業系統(此處以CentOS為例),一般我們有兩種方法: 1.在光碟安裝的時候安裝好虛擬化包或者PXE伺服器上配置好虛擬化包 2.手動在沒有安裝虛擬化元件的系統中安裝虛擬化元件   如果我們搭建的環境是必須使用虛擬化的,或者說虛擬化是我們搭建這套環境的主要目的之一,那麼

虛擬機器三種網路模式&模式設定步驟

虛擬機器網路模式 無論是vmware、virtual box,virtual pc等虛擬機器軟體,一般來說,虛擬機器有三種網路模式: 橋接NATHost-Only 哪一種網路是適合自己的虛擬機器呢? 橋接 橋接網路是指本地物理網絡卡和虛擬網絡卡通過VMnet0虛