首先,我对 docker / linux / ufw 之类的东西还不太熟悉!
我正在做什么:
我正在创建一个公开端口的docker容器。在本例中是8080。该容器的行为符合预期。
其次我想关闭服务器。因此我激活了 UFW 并且只允许 22、80、443。
我本以为我无法访问 myserver:8080,因为端口已关闭!我知道 docker 使用 iptables todo 来处理与路由相关的“事情”。遗憾的是,到目前为止,它对我来说只是“事情”。
/etc/docker/daemon.json
因此我创建了包含以下内容的json 文件:
{
"iptables": true
}
目的是确保我的所有端口保持关闭并且 UFW 按预期工作。
起初一切似乎都运行正常,直到我注意到我的容器无法再连接。似乎它无法解析 DNS。
所以我知道我正在玩一些我目前还不完全理解的东西。
我正在尝试做什么!
我基本上希望容器运行,并关闭端口。但容器应该能够访问外部的 http/https api。我该如何实现?
非常感谢任何对我的学习过程的帮助和支持:)
提前致谢。
问候,汉内斯
答案1
DNS 使用的标准端口是 UDP 53,因此您必须在 udf 中允许输出端口 53
sudo udf allow out 53
答案2
如果要暴露8080端口,并且想为容器绑定主机上的相同端口,那么您需要在主机Iptables上打开8080端口。/ufw。
docker run -d --name container_name -p 8080:8080 Image_name:tag