Docker 端口映射:
最近抽空,把Docker 端口映射的资料整理了一下,以便后续项目应用,大家也可以参考下。
# Find IP address of container with ID <container_id> 通过容器 id 获取 ip $ sudo docker inspect <container_id> | grep IPAddress | cut -d '"' -f 4
无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了端口只能本地访问外,对于容器的另外一个问题是这些 ip 在容器每次启动的时候都会改变。
Docker 解决了容器的这两个问题,并且给容器内部服务的访问提供了一个简单而可靠的方法。Docker 通过端口绑定主机系统的接口,允许非本地客户端访问容器内部运行的服务。为了简便的使得容器间通信,Docker 提供了这种连接机制。
5.1 自动映射端口
-P使用时需要指定--expose选项,指定需要对外提供服务的端口
$ sudo docker run -t -P --expose 22 --name server ubuntu:14.04
使用docker run -P自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中 (49000..49900) 自动选择,你可以通过docker ps、docker inspect <container_id>或者docker port <container_id> <port>确定具体的绑定信息。
5.2 绑定端口到指定接口
基本语法
$ sudo docker run -p [([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp] <image> <cmd>
默认不指定绑定 ip 则监听所有网络接口。
绑定 TCP 端口
# Bind TCP port 8080 of the container to TCP port 80 on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1:80:8080 <image> <cmd> # Bind TCP port 8080 of the container to a dynamically allocated TCP port on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1::8080 <image> <cmd> # Bind TCP port 8080 of the container to TCP port 80 on all available interfaces of the host machine. $ sudo docker run -p 80:8080 <image> <cmd> # Bind TCP port 8080 of the container to a dynamically allocated TCP port on all available interfaces $ sudo docker run -p 8080 <image> <cmd>
绑定 UDP 端口
# Bind UDP port 5353 of the container to UDP port 53 on 127.0.0.1 of the host machine. $ sudo docker run -p 127.0.0.1:53:5353/udp <image> <cmd>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Docker端口映射的实现,包括了Docker端口映射的实现的使用技巧和注意事项,需要的朋友参考一下 docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 亦可使用Dockerfile文件中的EXPOSE指令来配置。 端口映射可使用-p、-P来实现: -p指定要映射的端口,一个指定端口上只可以绑定一个容器 -P将容器内部开放的
我有一个问题,或者最好说有两个问题。两者都依赖于Docker,并且与Docker如何处理容器主机名和端口的理解有关。 假设我有两个服务在不同的docker容器中运行,并将容器中的端口80公开到端口8081(service1)和端口8082(service2): 服务1: 8081: 80服务2: 8082: 80 现在我很清楚,从主机的角度来看,我可以通过使用公开的端口(http://localh
本文向大家介绍Docker学习笔记之Docker端口映射,包括了Docker学习笔记之Docker端口映射的使用技巧和注意事项,需要的朋友参考一下 最近在学习docker,今天了解了Docker端口映射,给自己留个小笔记,也分享给大家 为什么要端口映射? 在启动容器时,如果不配置宿主机器与虚拟机的端口映射,外部程序是无法访问虚拟机的,因为没有端口。 端口映射的指令是什么? docker指令:doc
本文向大家介绍理解Docker(2):Docker 镜像详细介绍,包括了理解Docker(2):Docker 镜像详细介绍的使用技巧和注意事项,需要的朋友参考一下 本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 (4)Docker 容器的隔离性 -
本文向大家介绍docker中安装quagga详细介绍,包括了docker中安装quagga详细介绍的使用技巧和注意事项,需要的朋友参考一下 openstack中的虚拟路由器项目占用资源太多,需要将虚拟路由器迁移到Docker中,觉得首先要解决几个问题。 1.如何集成docker到openstack中,这个问题openstack官方给了三种方案,基于nova,heat,和单独的容器项目
映射容器端口到宿主主机的实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址。这是使用 iptables 的源地址伪装操作实现的。 查看主机的 NAT 规则。 $ sudo iptables -t nat -nL...Chain POSTROUTING (policy ACCEP