docker的ip是基于本地系统的,并且容器的端口非本地主机是访问不到的。此外,除了端口只能本地访问外,对于容器的另外一个问题是这些ip在容器每次启动的时候都会改变。
Docker解决了容器的这两个问题,并且给容器内部服务的访问提供了一个简单而可靠的方法.Docker通过端口绑定主机系统的接口,允许非本地客户端访问容器内部运行的服务。为了简便的使得容器间通信,Docker提供了这种连接机制。
详解Docker端口映射| 5种常见的端口映射方式
泊坞窗架构
自动映射端口
-P使用时需要指定--expose选项,指定需要对外提供服务的端口
$ sudo docker run -t -P --expose 22 --name server ubuntu:14.04
使用docker run -P自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中(49000..49900)自动选择,你可以通过docker ps,docker inspect 或者docker port 确定具体的绑定信息。
绑定端口到指定接口
基本语法
$ sudo docker run -p [([:[host_port]])|():] [/ udp]
默认不指定绑定ip则监听所有网络接口。
绑定TCP端口
#将容器的TCP端口8080绑定到主机127.0.0.1上的TCP端口80。$ sudo docker run -p 127.0.0.1:80:8080 #将容器的TCP端口8080绑定到主机127.0.0.1上的动态分配的TCP端口。$ sudo docker run -p 127.0.0.1::8080 #在主机的所有可用接口上将容器的TCP端口8080绑定到TCP端口80。$ sudo docker run -p 80:8080 #将容器的TCP端口8080绑定到所有可用接口上的动态分配的TCP端口$ sudo docker run -p 8080
绑定UDP端口
#将容器的UDP端口5353绑定到主机127.0.0.1上的UDP端口53。$ sudo docker run -p 127.0.0.1:53:5353/udp
5种常见的端口映射方式
1.对容器暴露的所有端口,随机映射宿主机端口
-P,-publish-all = true | 假,默认为假
docker run -P -it ubuntu / bin / bash
2.映射宿主机随机端口到容器指定端口
-p containerPort(-p表示-publish = [])
docker run -p 80 -it ubuntu / bin / bash
3.映射宿主机指定端口到容器指定端口(一一对应)
hostPort:containerPort
docker run -p 8080:80 -it ubuntu / bin / bash
4.指定容器IP和容器端口,宿主机端口随机映射
ip :: containerPort
docker run -p 127.0.0.12::80 -it ubuntu / bin / bash
5.指定容器IP,宿主机端口,容器端口
ip:hostPort:containerPort
docker run -p 127.0.0.12:8080:80 -it ubuntu / bin / bash
花生壳是一套完全免费的动态域名解析服务客户端软件。当您安装并注册该项服务,可实现在家或者异地搭建网站、FTP、Mail、 异地或分支机构访问办公OA、CRM、ERP系统。“花生壳”支持的线路包括普通电话线、ISDN、ADSL、有线电视网络、双绞线到户的宽带网和其它任何能够提供互联网真实IP的接入服务线路,而无论连接获得的IP属于动态还是静态。利用宽带联接搭建视频监控,视频会议系统等。