首页 > 编程知识 正文

docker的哪种网络模式会为容器分配一个虚拟的ip地址,docker容器跨主机通信

时间:2023-05-06 16:02:27 阅读:211614 作者:2486

目前安装,本地电脑(windows10)-vmware虚拟机(centos 7)-docker容器

网络地址

想在本地电脑上访问到docker容器内服务,需要三者之间互相ping通,涉及3个IP地址
1、本地电脑IP,也即宿主机IP。通过在本地cmd采用ipconfig命令查看
2、虚拟机IP,也即宿主服务器IP。通过在虚拟机上ip addr命令查看
3、docker容器IP,通过在虚拟机上ip addr命令查看
需要注意一点,在本地CMD输入ipconfig后显示的虚拟机IP,并不是真正的IP地址,而且主机的IP地址会不断变化,网线或者WLAN。

上图172.17.0.1为容器IP,马赛克部分为虚拟机IP

网络是否通

访问服务时,需要本地、虚拟机、容器三者两两直接都ping的通
本地ping虚拟机:在cmd中,ping 虚拟机IP
本地ping容器
虚拟机ping容器:在虚拟机中,ping 容器IP
虚拟机ping本地
容器ping本地: 在容器中,ping 本地IP
容器ping虚拟机
上述有任何一项不通,就需要配置网络

一些错误及网络配置

1、Job for docker.service failed…docker启动失败,docker只有client,没有server。
解决:
打开vi /etc/sysconfig/selinux,将selinux 属性值改为disabled,原来是enforing。
2、“net/http: TLS handshake timeout”错误,docker pull镜像太慢
解决:
打开/etc/docker/,若没有daemon.json文档,则新建一个

3、docker容器与centos虚拟机连接,给docker容器分配静态IP
打开/etc/sysconfig/network-scripts/,打开容器的网络,ifcfg-e…命名的,

上图中1处改为static,再添加下列四项
IPADDR=虚拟机的IP
NETMASK=255.255.255.0
GATEWAY=虚拟机IP.2 (将虚拟机IP的最后一位变为2,下同)
DNS1=119.29.29.29
然后重启虚拟机网络,service network restart
试试虚拟机ping容器,与容器ping虚拟机。

4、本机与虚拟机网络连接
vmware安装centos虚拟机时,选择的是NAT方式。
打开vmware,依次打开编辑-虚拟网络编辑器

选择VMnet8,点击NAT设置,修改需要管理员权限

将网关IP设置成与虚拟机IP同一网段,可为虚拟机IP.2
在本机CMD窗口,ping 虚拟机IP
在虚拟机窗口,ping 本机IP
若还是不行,在本机打开网络适配器设置,选择VMnet8网络,

接着右键属性-Internet协议版本4-

使用下面的IP地址,将IP地址设置为 虚拟机IP.1
5、本机与docker容器连接
两者互相都ping不通时,以管理员身份打开CMD,运行
route add -p 172.17.0.0 mask 255.255.0.0 虚拟机IP
将docker容器的内部端口映射到本地的端口

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。