Docker:网络配置

目录

一、网络模式简介

二、bridge模式以及host模式的命令演示

bridge模式

host模式

三、自定义网络


一、网络模式简介

Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定

1.bridge模式(默认模式)

docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴)

Docker:网络配置_第1张图片

 2.host模式

docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口
docker run -itd --net=host 961769676411
注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的

Docker:网络配置_第2张图片

 初识网络模式

#查看网络模式
ip a
ifconfig
#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge

bridge模式

 查看网络模式

Docker:网络配置_第3张图片

查看桥接模式下的网络状态

Docker:网络配置_第4张图片

 停止容器之后再查看

Docker:网络配置_第5张图片

 Docker:网络配置_第6张图片

 开启两个容器

 再查看

Docker:网络配置_第7张图片

 host模式

启动一个仅主机模式的容器

Docker:网络配置_第8张图片

 查看host模式下的网络状态

Docker:网络配置_第9张图片

避免影响 删掉之前的所有容器

docker rm -f $(docker ps -aq)

 再次查看

二、bridge模式以及host模式的命令演示

bridge模式

删除查看的所有容器

docker rm -f $(docker ps -aq)

docker run -di --name tomcat1 -p 8081:8080 f7f730b9e9eb
#--restart=always容器随着Docker引擎启动而启动
docker run -di --name tomcat2 --restart=always -p 8081:8080 f7f730b9e9eb

宿主机映射容器内部的端口

Docker:网络配置_第10张图片

 访问一下

Docker:网络配置_第11张图片

 如果访问失败,我们可以先检查一下,防火墙的状态,如果是开启的,我们需要把防火墙关闭

查看防火墙状态 systemctl status firewalld

开启/关闭防火墙  

#开启防火墙
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#设置开机启动
systemctl enable firewalld.service

Docker:网络配置_第12张图片

 查看网络状态

Docker:网络配置_第13张图片

host模式

docker run -di --name tomcat3 --net=host --restart=always f7f730b9e9eb
docker run -di --name tomcat5 -v /javaxl/software/mydocker/:/home/javaxl/docker --net=host --restart=always f7f730b9e9eb

Docker:网络配置_第14张图片

 docker exec -it t11 /bin/bash

我们是不能访问t11

三、自定义网络

在使用自定义网络之前

Docker:网络配置_第15张图片

 Docker:网络配置_第16张图片

 Docker:网络配置_第17张图片

 再重启启动t1 此时的IP会发生改变

Docker:网络配置_第18张图片

#创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork

#指定IP地址

docker run -it --name tomcat8 --net=mynetwork -v /javaxl/software/mydocker/:/home/javaxl/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash
#查看网络
docker network inspect mynetwork

 若是再创建自定义网络的时候报一下的错

Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed                                                             : iptables --wait -t nat -I DOCKER -i br-06ef2e8901ba -j RETURN: iptables: No chain/target/match by that                                                              name.
 (exit status 1))
 

 原因:如果在docker服务启动之后,再执行关闭系统防火墙的操作,那后续执行启动docker容器(docker-compose up -d)或者创建docker 网络(docker create network),会出现上面的报错。

解决方法:重启docker服务。

 再创建就能成功了

指定IP地址 命令根据自己的需要改

docker run -it --name tomcat8 --net=mynetwork -v /javaxl/software/mydocker/:/home/javaxl/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash

Docker:网络配置_第19张图片

 查看网络

Docker:网络配置_第20张图片

 Docker:网络配置_第21张图片

发现IP是固定的

你可能感兴趣的:(Docker,docker,容器,运维)