Docker 端口映射详细介绍
Docker端口映射:
最近抽空,把Docker 端口映射的资料整理了一下,以便后续项目应用,大家也可以参考下。
#FindIPaddressofcontainerwithID<container_id>通过容器id获取ip$sudodockerinspect<container_id>|grepIPAddress|cut-d'"'-f4
无论如何,这些ip是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了端口只能本地访问外,对于容器的另外一个问题是这些ip在容器每次启动的时候都会改变。
Docker解决了容器的这两个问题,并且给容器内部服务的访问提供了一个简单而可靠的方法。Docker通过端口绑定主机系统的接口,允许非本地客户端访问容器内部运行的服务。为了简便的使得容器间通信,Docker提供了这种连接机制。
5.1自动映射端口
-P使用时需要指定--expose选项,指定需要对外提供服务的端口
$sudodockerrun-t-P--expose22--nameserver ubuntu:14.04
使用dockerrun-P自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中(49000..49900)自动选择,你可以通过dockerps、dockerinspect<container_id>或者dockerport<container_id><port>确定具体的绑定信息。
5.2绑定端口到指定接口
基本语法
$sudodockerrun-p[([<host_interface>:[host_port]])|(<host_port>):]<container_port>[/udp]<image><cmd>
默认不指定绑定ip则监听所有网络接口。
绑定TCP端口
#BindTCPport8080ofthecontainertoTCPport80on127.0.0.1ofthehostmachine.$sudodockerrun-p127.0.0.1:80:8080<image><cmd>#BindTCPport8080ofthecontainertoadynamicallyallocatedTCPporton127.0.0.1ofthehostmachine.$sudodockerrun-p127.0.0.1::8080<image><cmd>#BindTCPport8080ofthecontainertoTCPport80onallavailableinterfacesofthehostmachine.$sudodockerrun-p80:8080<image><cmd>#BindTCPport8080ofthecontainertoadynamicallyallocatedTCPportonallavailableinterfaces$sudodockerrun-p8080<image><cmd>
绑定UDP端口
#BindUDPport5353ofthecontainertoUDPport53on127.0.0.1ofthehostmachine.$sudodockerrun-p127.0.0.1:53:5353/udp<image><cmd>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!