Docker容器内网通过独立IP直接访问的方法

Docker官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用。一般过程是:

1、Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器

2、宿主机可以打开防火墙让局域网其他设备通过访问宿主机的端口进而访问docker的端口

但在实际使用中并不是很方便。

以下在win10环境中队DockerDocker容器通过独立IP暴露给局域网的方法进行记录。

Docker的默认启动方式中,会产生一块虚拟网卡,然后容器内自行分配单独的网卡和IP。可以在宿主机上通过ipconfig命令看到这个虚拟网卡。

打开一个容器,可以看到容器ip地址为自动分配的。

通过宿主机无法ping通

通过配置路由表实现ip互通

查看route print

查看docker 的ip地址

暴露给宿主机的为10.0.75.1

添加路由

route -p add 172.17.0.0 MASK 255.255.255.0 10.0.75.2

重新ping容器地址

现在则可以直接通过ip访问。

由于docker默认采用bridge网络,每次容器启动时自动分配ip,我们可以创建自己的网络bridge1,在创建容器时指定ip,如需独立ip访问则另外增加路由。

route -p add 172.18.12.0 MASK 255.255.255.0 10.0.75.2

如果删除路由:

route delete 172.18.12.0

原文地址:https://www.cnblogs.com/brock0624/p/9788710.html

时间: 2024-10-08 13:37:11

Docker容器内网通过独立IP直接访问的方法的相关文章

Docker容器内不能联网的6种解决方案

Docker容器内不能联网的6种解决方案 注:下面的方法是在容器内能ping通公网IP的解决方案,如果连公网IP都ping不通,那主机可能也上不了网(尝试ping 8.8.8.8) 1.使用--net:host选项 sudo docker run --net:host --name ubuntu_bash -i -t ubuntu:latest /bin/bash 2.使用--dns选项 sudo docker run --dns 8.8.8.8 --dns 8.8.4.4 --name ubu

docker容器内应用检测失败总结

docker容器内应用检测失败故障总结 各位网友,各位同行大家: 今天在云平台中遇到了一个这样一个问题,在云平台上面docker容器中的应用,在监控客户端 中,显示应用检测失败的问题:以下是经常遇到的几个应用检测失败的常见解决办法如下所示: 问题描述:rds产品  docker容器中的应用检测失败:(备注:宿主机运行正常) 解决思路:1.一般情况下如果应用服务检测失败的话,首先查看一下这个应用的进程是否还在 可以使用命令ps -ef | grep +服务名称:查看一下服务的运行状态.查看一下服务

阿里云专有云平台docker容器内应用故障总结

阿里云专有云平台docker容器内应用检测失败故障总结 各位网友,各位同行,大家好! 今天在阿里云专有云平台中,遇到了一些关于docker容器内应用检测失败的问题,现把今天的解 觉问题的心得和解决思路,分享给大家: 问题描述:在docker容器中rhs服务应用显示检测失败:(这里我只说一个例子就好了,然后解 决的方法和思路说一下: 解决方案和思路:1.首先先查看一下检测失败的报警系统: 2.进入服务器的后端,使用ps -ef 检查服务的进程,是否已经存在,如果不存在, 希,可以将其服务的应用程序

centos:解决docker容器内挂载目录无权限 ls: cannot open directory .: Permission denied

docker运行一个容器后,将主机中当前目录下的文件夹挂载到容器的文件夹后 进入到docker容器内对应的挂载目录中,运行命令ls后提示: ls: cannot open directory .: Permission denied 解决: 在docker run一个容器时,加上 --privileged=true 给容器加特权即可. 原文地址:https://www.cnblogs.com/UniqueColor/p/9318815.html

Docker学习笔记(4-3)Docker容器内部署静态网站

设置容器的端口映射 如何访问容器的80端口<--设置端口映射 -P 为所有端口映射 -p 指定映射端口 docker run -p 80 -i -t ubuntu /bin/bash docker run -p 8080:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash #创建映射80端口的交互

[笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法

Docker容器之间的连接可以带来不少方便,下面记录下如何在自己容器内通过环境变量连接与之连接的Redis容器的方法. 先起一个Redis的Docker容器,命名为 redis,再起一个自己的Docker容器,使用"--link redis:redis"方式与redis容器连接. 在自己的容器内部,会有对应的环境变量,其中这里用的就是 REDIS_PORT = tcp://172.17.0.89:6379. 将其分拆为 tcp 和 172.17.0.89:6379,作为参数传入redi

3. docker容器内信息获取、命令的执行、容器的导入和导出

一.依附容器 依附操作attach通常用在由docker start或者docker restart启动的交互型容器中.由于docker start启动的交互型容器并没有具体终端可以依附,而容器本身是可以接收用户交互的,这时就需要通过attach命令来将终端依附到容器上. docker start docker_run:先启动docker_run容器. 启动后docker ps可以看到启动的容器,这是我们发现客户端显示的宿主机([[email protected] ~]#). 执行docker

docker 容器内服务自启动

centos6/7 有区别先说6 centos6: 方式一:rc.local + 容器内的启动脚本 1.chkconfig docker on #docker开机自启动2.[[email protected] yum.repos.d]# tail -1 /etc/rc.local #开机自启动容器 docker restart test 3.在容器写一个启动服务的脚本 放到 rc.local,开机直接run这个脚本 方式二:rc.local + dockerfile centos7: 启动方法都

Docker容器内多进程管理(草稿)

传统环境下同时运行多个进程非常简单,系统初始化启动一个init或者systemctl进程,其余的进程都由它来管理.在容器环境下没有init进程,启动一个Docker容器,只能让它运行一个前台程序.那么有办法解决这个问题吗? 目前主要有两个工具,一个是Supervisor,另一个是Monit.本篇先来介绍Supervisor,Monit会在之后的文章中再做详解. 原文地址:http://blog.51cto.com/sf1314/2128917