docker-compose ports和expose的区别详解
docker-compose中有两种方式可以暴露容器的端口:ports和expose。
ports
ports暴露容器端口到主机的任意端口或指定端口,用法:
ports: -"80:80"#绑定容器的80端口到主机的80端口 -"9000:8080"#绑定容器的8080端口到主机的9000端口 -"443"#绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号
不管是否指定主机端口,使用ports都会将端口暴露给主机。
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P(大写)或-p(小写)参数来指定端口映射。
(1)当使用-P标记时,Docker会随机映射一个49000~49900的端口到内部容器开放的网络端口。
使用dockerps可以看到,本地主机的49155被映射到了容器的5000端口。此时访问本机的49155端口即可访问容器内web应用提供的界面。
$sudodockerrun-d-Ptraining/webapppythonapp.py $sudodockerps-l CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES bc533791f3f5training/webapp:latestpythonapp.py5secondsagoUp2seconds0.0.0.0:49155->5000/tcpnostalgic_morse
同样的,可以通过dockerlogs命令来查看应用的信息。
$sudodockerlogs-fnostalgic_morse *Runningonhttp://0.0.0.0:5000/ 10.0.2.2--[23/May/201420:16:31]"GET/HTTP/1.1"200- 10.0.2.2--[23/May/201420:16:31]"GET/favicon.icoHTTP/1.1"404-
(2)-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有hostPort:containerPort、ip:hostPort:containerPort、ip::containerPort。
expose
expose暴露容器给link到当前容器的容器,用法:
expose: -"3000" -"8000"
以上指令将当前容器的端口3000和8000暴露给link到本容器的容器。
和ports的区别是,expose不会将端口暴露给主机。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。