docker容器如何访问docker宿主机和容器上某个端口服务

没有更多推荐了,
不良信息举报
举报内容:
11 :外网如何访问 docker 容器内的服务?
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Docker端口映射实现网络访问的方法
转载 &发布时间:日 09:35:09 & 作者:亦非我所愿丶
本篇文章主要介绍了Docker端口映射实现网络访问的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Docker运行容器之后却发现没IP,没端口,那要如何访问容器呢?
下面我来介绍下docker通过端口映射来实现网络访问
一、从外部访问容器应用
在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射。
先来说说p和P吧
-p 可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器
-P 它会随机映射一个端口至容器内部开放的网络端口(范围不详,似乎都上万)
先申明一下,我这边
client ip address 为192.168.0.225
registry ip address 为192.168.0.216:5000
docker run -d -it --name nginx -P 192.168.0.216:5000/nginx
docker ps -a
#查看容器是否在运行
docker logs nginx
#查看nginx容器的log
端口映射支持的格式有:
ip:hostport:containerport
#指定ip、指定主机port、指定容器port
ip::containerport
#指定ip、未指定主机port、指定容器port
hostport:container
#未指定ip port、指定主机port、指定容器port
二、映射所有接口ip
下列命令查看到0.0.0.0监听5000端口
docker run -d -it -p
--name registry 192.168.0.216:5000/registry
docker ps -a | grep 5000
多次使用-p标记可以绑定多个端口
docker run -d -it -p 800:80 -p
--name tomcat 192.168.0.216:5000/tomcat
docker ps -a | egrep "(80|8080)"
三、映射到指定地址的指定端口
将容器的80 port映射到192.168.0.225:800
docker run -d -it -p 192.168.0.225:800:80 --name web_server 192.168.0.216:5000/nginx
curl 192.168.0.225:800
#验证是否可以访问默认首页
四、映射到指定地址的udp端口
这里且不说能不能访问,只是一种映射方式。大家别见怪
docker run -d -it -p 192.168.0.225:300:3000/udp --name unknown 192.168.0.216:5000/nginx
netstat -anpu |grep udp
192.168.0.225:300
24588/docker-proxy
五、查看映射端口配置
通过docker port container_ID 可以查看到容器映射了哪些端口及协议
[root@docker ~]#docker port tomcat
8080/tcp -& 192.168.0.225:32769
[root@docker ~]#docker port unknown
3000/udp -& 192.168.0.225:300
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Docker 教程
Docker 容器连接
前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们来实现通过端口连接到一个docker容器
网络端口映射
我们创建了一个 python 应用的容器。
runoob@runoob:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57ca59f67da6b416fcebd
另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。
我们使用 -P 参数创建一个容器,使用 docker ps 来看到端口5000绑定主机端口32768。
runoob@runoob:~$ docker ps
CONTAINER ID
fce072cc88ce
training/webapp
"python app.py"
4 minutes ago
Up 4 minutes
0.0.0.0:3/tcp
grave_hopper
我们也可以使用 -p 标识来指定容器端口绑定到主机端口。
两种方式的区别是:
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
runoob@runoob:~$ docker run -d -p
training/webapp python app.py
33e4523d30aafe66e03b4317d3f639d4
runoob@runoob:~$ docker ps
CONTAINER ID
33e4523d30aa
training/webapp
"python app.py"
About a minute ago
Up About a minute
0.0.0.0:/tcp
berserk_bartik
fce072cc88ce
training/webapp
"python app.py"
8 minutes ago
Up 8 minutes
0.0.0.0:3/tcp
grave_hopper
另外,我们可以指定容器绑定的网络地址,比如绑定127.0.0.1。
runoob@runoob:~$ docker run -d -p 127.0.0.1: training/webapp python app.py
95c6ceef88ca3e71eaf303cd8d1ba932dfdfe8a857c
runoob@runoob:~$ docker ps
CONTAINER ID
95c6ceef88ca
training/webapp
"python app.py"
6 seconds ago
Up 6 seconds
5000/tcp, 127.0.0.1:/tcp
adoring_stonebraker
33e4523d30aa
training/webapp
"python app.py"
3 minutes ago
Up 3 minutes
0.0.0.0:/tcp
berserk_bartik
fce072cc88ce
training/webapp
"python app.py"
10 minutes ago
Up 10 minutes
0.0.0.0:3/tcp
grave_hopper
这样我们就可以通过访问127.0.0.1:5001来访问容器的5000端口。
上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。
runoob@runoob:~$ docker run -d -p 127.0.0.1:/udp training/webapp python app.py
fd655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
runoob@runoob:~$ docker ps
CONTAINER ID
training/webapp
"python app.py"
4 seconds ago
Up 2 seconds
5000/tcp, 127.0.0.1:/udp
drunk_visvesvaraya
95c6ceef88ca
training/webapp
"python app.py"
2 minutes ago
Up 2 minutes
5000/tcp, 127.0.0.1:/tcp
adoring_stonebraker
33e4523d30aa
training/webapp
"python app.py"
5 minutes ago
Up 5 minutes
0.0.0.0:/tcp
berserk_bartik
fce072cc88ce
training/webapp
"python app.py"
12 minutes ago
Up 12 minutes
0.0.0.0:3/tcp
grave_hopper
docker port 命令可以让我们快捷地查看端口的绑定情况。
runoob@runoob:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001
Docker容器连接
端口映射并不是唯一把 docker 连接到另一个容器的方法。docker有一个连接系统允许将多个容器连接在一起,共享连接信息。docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。
当我们创建一个容器的时候,docker会自动对它进行命名。另外,我们也可以使用--name标识来命名容器,例如:
runoob@runoob:~$
docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6eff36db9a441
我们可以使用 docker ps 命令来查看容器名称。
runoob@runoob:~$ docker ps -l
CONTAINER ID
43780a6eabaa
training/webapp
"python app.py"
3 minutes ago
Up 3 minutes
0.0.0.0:3/tcp
感谢您的支持,我会继续努力的!
扫码打赏,你说多少就多少
记住登录状态
重复输入密码端口。当我们在容器中执行任何类似 ifconfig 命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用 10.10.101.105:80 即可,不用任何 NAT 转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件 ...
网络应用,要让外部也可以访问这些应用,可以通过 -P或-p参数来指定端口映射。
从而可以使得互联网通过访问主机端口来访问容器
b.容器之间的访问
--link=CONTAINER_NAME:ALIAS选项会在创建容器的时候,添加一个其他容器的主机名到 ...
,使用主机IP+端口的方式访问容器中的服务。显而易见,这种方式仅能支持网络栈的四层及以上的应用,并且容器与宿主机紧耦合,
很难灵活的处理,可扩展性不佳。
3)docker外定制容器网络:在容器通过docker创建完成后,然后再通过 ...
-p &主机端口:容器端口 & 将容器的端口映射到主机上,目的是可以直接对外提供访问。
--name &指定容器名称 & -i以交互式运行 & -t分配一个终端
第5步:容器的管理。
docker ...
docker比较重要的一个功能,原因在于我们每次运行容器的时候容器的IP地址不能指定而是在桥接网卡的地址范围内随机生成的。宿主机器的IP地址是固定的,我们可以将容器的端口的映射到宿主机器上的一个端口,免去每次访问容器中的某个服务时都要查看容器的IP的地址。对于 ...
3. 将nginx容器置于公网TCP SLB下
公网访问走SLB,内网间访问则走服务发现。这样既可避免HTTP SLB性能问题,而且内网服务间调用也不会遇到TCP环回问题。
### 自动绑定SLB
在编排模板中可以将服务与SLB关联 ...
浏览:1631
存在的实例。当一个特定的修改被标记为需要发布到生产环境时,一组使用新版本的镜像被创建出来,新的容器被新的标签标记。新标签最后是使用持续集成工具创建的。生成出来的镜像和标签被存储到容器镜像注册中心内,那里可被生产环境访问。
相比于容器注册中心在所有环境 ...
容器与容器之间建立私有忘了,只有容器与容器之间可以访问。每个容器都拥有一个私有网络地址:10.42.网段。
下面我是我们通过容器平台创建的一个tomcat容器,同时我将该容器映射到主机上,以便可以从外面访问。
其中,对外的端口占用问题,我们统一 ...
可以作为管理容器的服务进程运行。服务进程向外提供既可以进行本地访问也可以进行远程访问的基于REST风格的API。越来越多的客户端数据库可与服务进程API进行通信,其中包括Ruby,Python,JavaScript(Angular和Node),Erlang ...
可以作为管理容器的服务进程运行。服务进程向外提供既可以进行本地访问也可以进行远程访问的基于REST风格的API。越来越多的客户端数据库可与服务进程API进行通信,其中包括Ruby,Python,JavaScript(Angular和Node),Erlang ...
都会发给网桥,而网桥是宿主机上的,是能连接外网的,所以这样来做到了容器内的进程能访问外网。
容器的网络我没有深入研究,感觉不是特别复杂,最复杂的方式就是网桥的方式了,这些网络配置都可以通过命令行来进行,但是Docker的源码中是自己通过系统 ...
程序可以看到其它应用程序的进程ID。
网络名字空间:Pod中的多个容器访问同一个IP和端口空间。
IPC名字空间:Pod中的应用能够使用SystemV IPC和POSIX消息队列进行通信。
UTS名字空间:Pod中的应用共享一个主机名 ...
(net.ipv4.ip_forward=1)】
1)使用- P
测试:此时访问本机的 32770端口即可访问容器内 ssh 应用。(账号和密码都是admin)
查看容器运行的httpd和sshd进程
测试httpd服务此时访问本机的 ...
6379`来检查端口的可访问性。
* 示例起见,在本地起一个简单的python应用来通过`slb_redis_app`SLB实例访问容器集群内的redis,注意redis主机地址是SLB的地址`120.25.129.150`
app.py ...
浏览:4682
& //以registry镜像启动容器监听5000端口
说明:因为容器和宿主机是隔离的,他们网络不相干,所以做个端口的映射宿主端口:容器端口。
[root@centos ~]# docker ps
注意:因为我们做了映射,所以本机5000 ...
复杂的安全隔离需求。
各种方案的限制:
Docker Bridge:每个容器里面都有一个虚拟网卡,和主机上的虚拟网卡做配合,所有容器内的虚拟网卡都可以和主机通信。通过端口映射,我调用对方的容器服务的时候,不能使用该容器直接的地址,必须使用它主机的 ...
:8088 & &//ip是容器默认的ip,用ifconfig查看
参数说明:-d &放在后台执行(daemon)
-p &主机端口:容器端口 & 将容器的端口映射到主机上,目的是可以直接对外提供访问。
--name ...
&/etc/nginx/nginx.conf
# 对外的端口
CMD ['nginx']
# 执行的命令
3)构建容器,并运行 ...
集群内的节点和容器可以识别。
除了通过IP地址访问Service所指向的服务外,还可以通过域名访问某一个Service。监听在Master上的集群内置DNS服务器会负责解析这个DNS请求。Service域名的格式是..svc.cluster.local ...
共有14226页
你可能感兴趣在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如题所问, docker容器如何访问宿主机上某个端口服务,这个突然难到我了
来源: Docker 技术问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
ip -4 addr show docker0 | grep -Po 'inet K[d.]+'
容器可以用这个地址访问宿主机
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 docker容器连接宿主机 的文章

 

随机推荐