docker有四种网络模式,分别为Bridge、Host、Container、None。Bridge为docker的默认网络模式。这里我分享下Bridge、Host、Container模式下容器的创建及启动。
Bridge模式:当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。这样容器间就可以相互通信。
![553b544c1cc361db01c1441545c159df.png](https://i-blog.csdnimg.cn/blog_migrate/49cc8ba2764d0fc2b3241b23212de623.jpeg)
docker0
创建容器后,查看容器信息
![6cd5bca1ce83f19281781f509fcb6d8a.png](https://i-blog.csdnimg.cn/blog_migrate/e7e559a3182884b0090d998c6e49c1e8.jpeg)
容器信息
Bridge模式很好理解,而且在创建容器时,也不用指定,因为他是默认的。
Host模式:如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。这里我拿tomcat测试下
![d0c9823a42ca57be7aaceda7b4112547.png](https://i-blog.csdnimg.cn/blog_migrate/87e695d3f9d076d97593c63afa0cd092.jpeg)
拉取tomcat8
由于host模式下使用的是宿主机的IP和端口,所以要注意宿主机有没有把端口开启的问题。如何打开端口,比如8080端口。
![e89fa9c2f0b84fbfa0604439ca615f74.png](https://i-blog.csdnimg.cn/blog_migrate/2a09f6ddf4dbbebfdf44f6a8091219c0.jpeg)
开启8080端口
firewall-cmd --add-port=8080/tcp --permanentfirewall-cmd --reload
通过host创建容器
docker run -d --net=host --name to1 94e31e5297d1
94e31e5297d1为tomcat8的镜像ID
![40c7c9e54278aec15962cb37dd76e0c7.png](https://i-blog.csdnimg.cn/blog_migrate/c73438a1cedafbf5a7a42695da83b524.jpeg)
host模式下创建容器
![05f0dd56019d174b44e55261b301cd1f.png](https://i-blog.csdnimg.cn/blog_migrate/8515f361eac3f05bae97da29e22a3278.jpeg)
container模式:这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围。
这里我拿nginx和tomcat为例,先创建一个nginx容器,并开启80、8080端口
docker run -d --name nginx -p 80:80 -p 8080:8080 7743d9092020
7743d9092020为nginx镜像ID
![ea14058a79b84f0439c656c948b5a18b.png](https://i-blog.csdnimg.cn/blog_migrate/1c0e929350373d52fbf4e5302050f5dd.jpeg)
创建nginx容器
分别访问80和8080端口
![cbec6003cfb4bde5aa96ed5a55c6bf75.png](https://i-blog.csdnimg.cn/blog_migrate/1fbff4dcd5fb4dec440b7e1c47cbef40.jpeg)
80端口
![fc34139960fea65c8ade14250c05d844.png](https://i-blog.csdnimg.cn/blog_migrate/98dba838b769986f91c2e02487dc70e1.jpeg)
8080端口
8080不好使,是因为我们还没有开启。使用container创建tomcat8容器。
docker run -d --name to1 --net=container:nginx 94e31e5297d1
nginx:是我上面nginx的名称
94e31e5297d1:是tomcat8镜像ID
![01c5c47a64c3a9a07ccd8f108fe3afc0.png](https://i-blog.csdnimg.cn/blog_migrate/9284d5f8e41bbd9ac41498e4ab1a6ba7.jpeg)
container创建tomcat8容器
![e0265a50913c7e7d7c6ccef2e8578741.png](https://i-blog.csdnimg.cn/blog_migrate/3bdbf059e238ed5b266a487f1516d707.jpeg)
访问8080
以上就是3种模式的基本用法、后期分享更多docker方面的内容