Docker入門與應用系列(四)網路管理

2022-07-04 01:48:11 字數 4205 閱讀 3164

在使用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...