Docker从入门到进阶之进阶操作(1)—— 对Docker的网络进行管理

发布于:2022-11-05 ⋅ 阅读:(526) ⋅ 点赞:(0)

那么今天就玩点进阶操作,对Docker的网络进行管理

1.容器网络

1.1.映射网络【文末免费分享自动化测试进阶资源】

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
使用 docker ps 可以看到,本地主机的 49153 被映射到了容器的 80 端口。此时访问本机的 49153 端口即可访问容器 内 web 应用提供的界面。


# 指定映射
docker run -dit --name nginxweb1 -p 8081:80 nginx

# 随机映射
docker run -dit --name nginxweb4 -P nginx

# 查看所有容器
docker ps -a
复制代码

1.2.主机网络

可以使用 --network=host 参数来直接使用宿主机网络

docker run -dit --network=host --name nginx-host nginx
复制代码

1.3.容器互联

1.3.1 新建网桥

-d 参数指定 Docker 网络类型,有 bridge overlay 。其中 overlay 网络 类型用于 Swarm mode,在本小节中你可以忽略它。

docker network create -d bridge new-net
复制代码

1.3.2 容器互联创建容器

docker run -dit --name box1 --network new-net busybox
docker run -dit --name box2 --network new-net busybox
复制代码

1.3.3 容器互联测试

# 进入box1容器
docker exec -it box1 sh

# ping测试
ping box2
复制代码

2.自定义docker0网络

当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交 换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1 ,掩码为 255.255.0.0 。此后启动的容器内的网口也会自动分配一个同一网段( 172.17.0.0/16 )的 地址。 当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以 收到相同的数据包)。这对接口一端在容器内,即 eth0 ;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开 头(例如 vethAQI2QT )。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所 有容器之间一个虚拟共享网络。

2.1 移除原有网络

2.1.1 安装btctl命令

yum install -y bridge-utils
复制代码

2.1.2 查询网桥信息

brctl  show
复制代码

2.1..3 关闭docker服务

systemctl stop docker
复制代码

2.1.4 停止docker0网桥

ip link set dev docker0 down
复制代码

2.1.5 删除docker0网桥

brctl delbr docker0
复制代码

2.1.6 查询所有网桥信息

brctl show
复制代码

2.2 自定义新网络

2.2.1 创建新网桥bridge0

brctl addbr bridge0
复制代码

2.2.2 查询创建的bridge0

brctl show
复制代码

2.2.3 设置新网桥的网络段地址

ip addr add 192.168.0.1/24 dev bridge0
复制代码

2.2.4 启动bridge0网桥

ip link set dev bridge0 up
复制代码

2.2.5 查询bridge0网桥信息

ifconfig bridge0
复制代码

7.4.2.6、添加新网桥到配置文件

vi /etc/sysconfig/docker
# 添加 -b=bridge0 到 OPTIONS 中
OPTIONS='-b=bridge0'
复制代码

2.2.7 加载配置文件,重启docker服务

systemctl daemon-reload
systemctl restart docker
复制代码

2.3 使用新网络部署应用测试docker0网络

2.3.1 创建一个nginx容器

docker run -dit --name nginx-net nginx
复制代码

2.3.2 查看容器的状态

docker ps -a
复制代码

2.3.3 查看容器的bridge

docker inspect -f {{.NetworkSettings.Networks.bridge}} nginx-net
复制代码


 绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

自动化测试视频教程

面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

​​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到