Docker 宿主机和容器的映射关系记忆技巧

2024-05-06 16:14:20 浏览数 (2)

使用 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 的服务,不会暴露在外面。

以上,如果有帮助,请点个在看支持一下。

0 人点赞