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
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
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)
1.4.Bridge
- docker设计的NAT网络模型
- docker默认的网络模型
默认就是