Docker采用bridge网络的Container无法连接外网的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker采用bridge网络的Container无法连接外网的问题相关的知识,希望对你有一定的参考价值。
参考技术A CentOS 7、 8 中,Docker采用bridge网络的Container无法连接外网的问题原因:系统默认采用firewelld管理防火墙规则参考: https://github.com/firewalld/firewalld/issues/195
docker 创建容器时指定容器ip
Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。
在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的。
我们可以创建自己的bridge网络 : mynet,创建容器的时候指定网络为mynet并指定ip即可。
查看网络模式
docker network ls
创建一个新的bridge网络
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 mynet
查看网络信息
docker network inspect mynet
创建容器并指定容器ip
docker run -e TZ="Asia/Shanghai" --privileged -itd -h hadoop01.com --name hadoop01 --network=mynet --ip 172.18.12.1 centos /usr/sbin/init
运行容器
docker exec -it hadoop01 /bin/bash
centos最小化安装没有ifconfig命令,可通过yum进行安装
yum install -y net-tools
安装ssh服务
yum install -y openssh-server
yum install -y openssh-clients
systemctl start sshd.service
新增非root用户
useradd brock
passwd brock
通过本地客户端访问(通过创建容器时指定端口或配置独立ip)
docker run -e TZ="Asia/Shanghai" -p 6001:22 --privileged -itd -h hadoop01.com --name hadoop01 --network=mynet --ip 172.18.12.1 centos /usr/sbin/init
或
route -p add 172.18.12.0 MASK 255.255.255.0 10.0.75.2
以上是关于Docker采用bridge网络的Container无法连接外网的问题的主要内容,如果未能解决你的问题,请参考以下文章