在使用docker run建立docker容器時,可以用--net選項指定容器的網路模式,docker有以下5種網路模式:
1. bridge模式
2. host模式
使用docker run --net=host指定,這種模式docker server將不為docker容器建立網路協議棧,即不會建立獨立的network namespace,docker容器中的程序處於宿主機的網路環境中,相當於docker容器的宿主機共用同乙個network namespace,使用宿主機的網絡卡、ip、埠等資訊。此模式沒有網路隔離性,同時會引起網路資源的競爭與衝突。
docker run -it --rm --name=centos-test --net=host centos:7 /bin/bash# --rm :當進入到容器後,退出時將刪除該容器
yum -y install net-tools
[root@localhost ~]# ifconfig
docker0: flags=4099mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:f9:fe:32:41 txqueuelen 0 (ethernet)
rx packets 0 bytes 0 (0.0 b)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 0 bytes 0 (0.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777736: flags=4163mtu 1500
inet 172.16.200.208 netmask 255.255.255.0 broadcast 172.16.200.255
inet6 fe80::20c:29ff:fefc:9a4b prefixlen 64 scopeid 0x20ether 00:0c:29:fc:9a:4b txqueuelen 1000 (ethernet)
rx packets 47243 bytes 18062368 (17.2 mib)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 17177 bytes 2678186 (2.5 mib)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10loop txqueuelen 0 (local loopback)
rx packets 112 bytes 6172 (6.0 kib)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 112 bytes 6172 (6.0 kib)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
使用host模式container 和宿主機的ip一樣
3.container模式
# 1. 啟動乙個現有容器[bigberg@localhost ~]$ docker-enter my-test
last login: mon feb 26 03:42:28 utc 2018
[root@0cd0fd089ea0 ~]# ifconfig
eth0: flags=4163mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (ethernet)
rx packets 16 bytes 1296 (1.2 kib)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 0 bytes 0 (0.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (local loopback)
rx packets 0 bytes 0 (0.0 b)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 0 bytes 0 (0.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 新建乙個容器
[bigberg@localhost ~]$ docker run -it --net=container:my-test --name=my-test2 centos:7 /bin/bash
[root@0cd0fd089ea0 /]# ifconfig
eth0: flags=4163mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (ethernet)
rx packets 9021 bytes 13565843 (12.9 mib)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 7500 bytes 503022 (491.2 kib)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (local loopback)
rx packets 0 bytes 0 (0.0 b)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 0 bytes 0 (0.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到兩個容器eth0的ip位址一樣
4.none模式
使用docker run --net=none指定,在這種模式下,docker容器擁有自己的network namespace,但是,並不為docker容器進行任何網路配置。也就是說,這個docker容器沒有網絡卡、ip、路由等資訊。需要我們自己為docker容器新增網絡卡、配置ip等。這種模式如果不進行特定的配置是無法正常使用的,但它也給了使用者最大的自由度來自定義容器的網路環境。
[bigberg@localhost ~]$ docker run --rm -it --net=none --name=test01 test/centos:v1.0 /bin/bash[root@006f8d383dd3 /]# ifconfig
lo: flags=73mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (local loopback)
rx packets 0 bytes 0 (0.0 b)
rx errors 0 dropped 0 overruns 0 frame 0
tx packets 0 bytes 0 (0.0 b)
tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5.overlay模式
overlay網路特點:
Docker入門系列 Docker應用部署(九)
mysql部署 在docker容器中部署mysql,並通過外部mysql客戶端操作mysql server 部署mysql 1.搜尋mysql像 docker search mysql 2.拉取mysql映象 docker pull mysql 5.6 3.建立容器,設定埠對映 目錄對映 在 roo...
Docker系列 exec與attach(四)
不論是開發者是運維人員,都經常有需要進入容器的訴求。目前看,主要的方法不外乎以下幾種 1.使用ssh登陸進容器 2.使用nsenter nsinit等第三方工具 3.使用docker本身提供的工具 方法1需要在容器中啟動sshd,存在開銷和攻擊面增大的問題。同時也違反了docker所倡導 的乙個容器...
docker應用入門
一 docker產生的意義 1 解決環境配置難題 在軟體開發中最大的麻煩事之一,就是環境配置。為了跑我們的程式需要裝各種外掛程式,作業系統差異 不同的版本外掛程式都可能對程式產生影響。於是只能說 程式在我電腦上跑是正常的。2 解決資源占用過多,啟動慢的問題 環境移植 虛擬機器 virtual mac...