使用 docker 很久了,每次看到冒号还是有点懵逼,到底哪边是宿主机的哪边是容器,傻傻分不清楚,搜索一下,几十秒又浪费了。
今天这个问题不存在了,这个记忆方法你看过后就不会忘。
首先无论是端口映射,还是卷(目录)映射,左边都是宿主机的,右边都是容器的。
为什么左边是宿主机的,右边是容器的呢?
因为先有宿主机,然后才有容器,所以我们在写 docker compose 或 docker run 时总是先写宿主机的,然后写容器的,中间用冒号分开。
最后再分享个技巧,有时候通过 docker 容器映射到宿主机的服务,比如 8080 端口,即使 sudo ufw deny 了 8080 端口,可是在宿主机外面依然能够连通。这是为什么呢?
因为在 docker run -p 8080:80 的时候,实际上是宿主机的 0.0.0.0:8080->容器的0.0.0.0:80 。
docker 自己会设置 iptable 防火墙规则,且优先级高于 ufw 添加的,所以 ufw deny 无效。
所以,如果我们希望 docker 映射的服务不暴露到互联网,一个简单的方法是:docker run -p 127.0.0.1:8080:80 ....
这样就相当于宿主机启动了一个 http://127.0.0.1:8080 的服务,不会暴露在外面。
以上,如果有帮助,请点个在看支持一下。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有