1.docker的四种网类型

  • 语法格式
    • docker run -it --network 网络类型 镜像

1.1.None

  • 不为容器配置任何网络功能,–net=noe
1.指定网络类型为none
[root@docker01 ~]# docker run -it --network none centos69_ssh_df:v3 /bin/bash

2.查看是否有网络
[root@6e47719e0c83 /]# ifconfig 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@6e47719e0c83 /]# 

3.查看容器的属性会看到network没有指定ip
[root@docker01 ~]# docker inspect cranky_agnesi 

Docker的四种网络模型(十)_ipad

1.2.Container

  • 与另一个运行中的容器共享Network(k8s常用网络模型)
  • 共享网络时,哪台机器开启了服务,只有自己能看到服务的进程,而共享的另一台机器就看不到谁开启的服务,只能看到自己的服务和所有的端口
  • 共享网络后,去使用共享网络的机器的主机名、ip地址都会和被共享端配置一模一样
  • 先到先得
1.首先启动一个有网络的容器
[root@docker01 ~]# docker run -itd centos69_ssh_df:v3 /bin/bash
347c5934f47b46d8cc54e305313c8c9b84604370aac41bd61535b37a861f002c

[root@docker01 ~]# docker inspect frosty_turing | grep 'IPAddress'
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.6",
                    "IPAddress": "172.17.0.6",

2.接着启动需要使用共享网络的容器
[root@docker01 ~]# docker run -it --network container:frosty_turing centos69_ssh_df:v3 /bin/bash

3.查看容器的ip和主机名,会发现和刚刚启动的容器的主机名、ip都相同
[root@347c5934f47b /]# hostname -I
172.17.0.6

Docker的四种网络模型(十)_docker_02

1.3.Host

  • 与宿主机共享network
  • 与宿主机的主机名、IP一直,利用率最高
  • 与contain的原理一样,只能看到自己开启的哪些服务,别的机器开启的自己看不到
1.与宿主机共享网络
[root@docker01 ~]# docker run -itd --network host centos69_ssh_df:v3 /bin/bash
3a67ea4dd241d88be2cdc5f6b14db09298e00bd1cdbcbf0fdf4342716f25aba8

2.进入容器
[root@docker01 ~]# docker exec -it sweet_sinoussi /bin/bash

3.配置一个sshd
[root@docker01 /]# vi /etc/ssh/sshd_config 
[root@docker01 /]# /etc/init.d/sshd start
Starting sshd:                                             [  OK  ]
[root@docker01 /]# netstat -lnpt | grep 24
tcp        0      0 0.0.0.0:24                  0.0.0.0:*                   LISTEN      42/sshd             
tcp        0      0 :::24                       :::*                        LISTEN      42/sshd             
[root@docker01 /]# exit
exit

4.测试
[root@docker01 ~]# ssh 127.0.0.1 -p 24
root@127.0.0.1's password: 
[root@docker01 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)

Docker的四种网络模型(十)_bash_03

1.4.Bridge

  • docker设计的NAT网络模型
  • docker默认的网络模型
默认就是