Docker - 访问容器
容器具有自己的内部网络和ip地址,具体信息可以查看docker inspect命令结果的"NetworkSettings"部分。
如果想要从外部访问容器中的应用,可以通过docker run命令的-P或-p参数来指定端口映射。
可以通过docker port命令或者docker ps命令结果的PORTS部分,可以查看端口映射关系。
-p, --publish value Publish a container's port(s) to the host (default [])
-P, --publish-all Publish all exposed ports to random ports
随机端口映射
使用-P(大写)参数,Docker会随机映射一个端口到内部容器开放的网络端口.
在不同系统类型和配置下,随机端口的范围也不同,例如:CentOS7系统下临时端口范围可查看/proc/sys/net/ipv4/ip_local_port_range文件。
[root@CentOS-7 ~]# docker run -d --name test-access -P docker.io/nginx
e3b9622095d0ea3e02a480178f199e4e2eff9a1b81175f6f88a77533d55ea82c
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3b9622095d0 docker.io/nginx "nginx -g 'daemon off" 5 seconds ago Up 3 seconds 0.0.0.0:32771->80/tcp, 0.0.0.0:32770->443/tcp test-access
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
[root@CentOS-7 ~]#
# 此时,使用浏览器打开`<local host>:32771`页面,然后就可以通过`docker logs`命令来查看容器中的应用信息。
[root@CentOS-7 ~]# docker logs -f test-access
10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET /favicon.ico HTTP/1.1" 404 170 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
2017/05/02 08:12:40 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.141.46.100, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.140.3.116:32771"
2017/05/02 08:12:40 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.141.46.100, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.140.3.116:32771"
10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET /favicon.ico HTTP/1.1" 404 170 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
^C
[root@CentOS-7 ~]#
指定端口映射
使用-p(小写)参数, 可以在一个指定映射端口上绑定一个容器。可以多次使用此参数来绑定多个端口。
所有接口地址
使用hostPort:containerPort格式,默认会将所有接口所有地址的指定端口绑定到容器指定端口。
如无必要,不建议使用此种方式。指定地址的指定端口
使用ip:hostPort:containerPort格式,映射指定地址的指定端口到容器指定端口。指定地址的随机端口
使用ip::containerPort格式,映射指定地址的随机端口到容器指定端口
[root@CentOS-7 ~]# docker run -d --name test-access-port-1 -p 55555:80 docker.io/nginx
df6efc01a023ad71986723465fa67970d317f983190ef56233ebe6ba08f69f30
[root@CentOS-7 ~]# docker port test-access-port-1
80/tcp -> 0.0.0.0:55555
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker run -d --name test-access-port-2 -p 10.140.3.116:54321:80 docker.io/nginx
c8afcc740e062f1bae2cc98bb7e5df47bceadfc184f69868cf71ed3c24c6d90f
[root@CentOS-7 ~]# docker port test-access-port-2
80/tcp -> 10.140.3.116:54321
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker run -d --name test-access-port-3 -p 10.140.3.116::80 docker.io/nginx
4bc063f2385cc96155054f23fc3dbf5d49f7e5572d713f539578fe01a4942c73
[root@CentOS-7 ~]# docker port test-access-port-3
80/tcp -> 10.140.3.116:32769
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4bc063f2385c docker.io/nginx "nginx -g 'daemon off" 15 seconds ago Up 14 seconds 443/tcp, 10.140.3.116:32769->80/tcp test-access-port-3
c8afcc740e06 docker.io/nginx "nginx -g 'daemon off" 40 seconds ago Up 39 seconds 443/tcp, 10.140.3.116:54321->80/tcp test-access-port-2
df6efc01a023 docker.io/nginx "nginx -g 'daemon off" About a minute ago Up About a minute 443/tcp, 0.0.0.0:55555->80/tcp test-access-port-1
[root@CentOS-7 ~]#
使用udp标记来指定udp端口
[root@CentOS-7 ~]# docker run -d --name test-access-port-4 -p 127.0.0.1:50000:80/udp docker.io/nginx
cade927e2a9b934d650e0f359233ae1e19a890b6bd4ffd08fb3732968b91c554
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker port test-access-port-4
80/udp -> 127.0.0.1:50000
[root@CentOS-7 ~]#
Docker - 访问容器的更多相关文章
- docker网络-如何让外部网络访问容器资源
docker网络-如何让外部网络访问容器资源 安装httpd 服务: docker:/root# docker exec -it f63b2633d146 bash bash-4.1# yum ins ...
- 外部世界如何访问容器? - 每天5分钟玩转 Docker 容器技术(37)
上节我们学习了容器如何访问外部网络,今天讨论另一个方向:外部网络如何访问到容器? 答案是:端口映射. docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器.容器 ...
- Docker外部访问容器
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放 ...
- docker从容器中怎么访问宿主机
docker从容器中怎么访问宿主机 我来答 浏览 3160 次 2个回答 #热议# 2019年全国两会召开,哪些提案和政策值得关注? 好程序员 知道合伙人 推荐于2017-11-22 dock ...
- docker之容器访问和网络连接(三)
前言 当一台服务器上部署了多个应用容器,它们直接可能需要相互通信,比如web应用容器需要访问mysql数据库容器. 主机访问容器 通过映射端口的形式我们可以在外部访问容器内的服务 # 将主机的127. ...
- [Docker] - 不同容器之间相互访问的实现方式(例如:Client 访问 DB)
部署了两个独立的容器: Container #1 - Web ClientContainer #2 - SQL Server 不同容器间如何互访? 无法从 Container #1 访问到 Conta ...
- Docker 中的网络功能介绍 外部访问容器 容器互联 配置 DNS
Docker 中的网络功能介绍 | Docker 从入门到实践 https://vuepress.mirror.docker-practice.com/network/ Docker 允许通过外部访问 ...
- Docker 外部访问容器Pp、数据管理volume、网络network 介绍
Docker 外部访问容器Pp.数据管理volume.网络network 介绍 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射. ...
- 【转】深入 Docker:容器和镜像
在本专栏往期的 Flux7 系列教程 里,我们已经简单地探讨了 Docker 的基本操作.而在那篇教程中,我们一直是简单地将容器当成是"正在运行的镜像",并没有深入地区分镜像和容器 ...
随机推荐
- C++枚举类型详解
原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5171110.html 一.枚举类型的定义 enum 类型名 {枚举值表}: 类型名是变量名,指定 ...
- 【子非鱼】冒泡排序过程呈现之java内置GUI表示
自己玩玩写写,排序的过程多么有趣,特别是把看着电脑吧一堆乱七八糟的数据排成有序组合的时候,看起来贼舒服,特别是强迫症患者.好了,话不多说上代码,也算是自己记录一下吧,没有什么技术含量但个人感觉比较有趣 ...
- uploadify上传图片的类型错误的解决办法
大家在做开发的过程中,相信很多人都会使用到uploadify插件来上传图片,但是这个插件也有不完美的地方. 我曾多次遇到过这样一个问题:上传的图片类型明明是没有问题的,但是在上传的时候总是会报错:图片 ...
- Unity 3D Framework Designing(1)—— MVVM 模式的设计和实施(Part 2)
MVVM回顾 经过上一篇文章的介绍,相信你对 MVVM的设计思想有所了解.MVVM的核心思想就是解耦,View与ViewModel应该感受不到彼此的存在.View只关心怎样渲染,而ViewModel只 ...
- 部署在服务器中的WebService
1.继上篇之后,我把我的WebService部署在了比较小的Tomcat中,首先要把Jax-ws.jar架包放在lib里面 2.在我的WEB-INF里面增加了一个xml文件:sun-jaxws.xml ...
- 时效性福利:MindManager2017 破解攻略
本文目的只是为了长期关注公众的活粉来谋个福利,24小时失效,没有提供盗版的意思 本文贡献的链接只存放2天,要下载的请从速~ 经过几个小时的奋斗,终于搞定了他,逆天我也终于可以从2016升级至2017~ ...
- 【转】使用VS开发 Node.js指南
参考:https://www.visualstudio.com/features/node-js-vs 这篇文章主要介绍了使用VS开发 Node.js的方法,主要是使用NTVS(Node.js Too ...
- poptest老李谈动态口令原理
poptest老李谈动态口令原理 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908 ...
- Windows下Nginx的安装与使用(一):配置端口转发
什么是端口转发 当我们在服务器上搭建一个图书以及一个电影的应用,其中图书应用启动了 8001 端口,电影应用启动了 8002 端口.此时如果我们可以通过: localhost:8001 //图书 lo ...
- 初学grunt压缩
初学grunt 压缩,做个记录.备忘. [JS压缩] 先比较yui compressor 与 uglify 代码压缩, yui compressor,使用起来很简单.需要jdk. https://g ...