我docker create
从正在使用的图像EXPOSE 22
创建了一个容器 ()Dockerfile
我通过启动它并通过docker start <container name or ID>
访问它ssh
。
我现在需要再公开一个在此容器中运行的服务的端口。我无法重新创建它,它必须更改其启动参数才能公开那个额外的端口。这可能吗?
我希望这docker start
将允许与docker create
or相同的参数,docker run
但事实并非如此。
注意:我知道 docker 的理念是创建临时容器。我必须处理这个高度定制的容器(而不是重新创建它),这是一个不争的事实
你的意思是你没有
docker-compose
用来启动它,而是一个正常的docker run
. 我会调查一下docker-compose
,因为那样你就可以停止它,然后用一个新的配置文件重新启动它。这允许可重复地创建容器。随处可见的所有仅使用docker run
您的示例都无济于事。在您的特定情况下,我认为您所要做的就是添加一条
iptables
规则。默认情况下,dockerd
操纵iptables
规则来重定向流量(它甚至可能是唯一的事情EXPOSE
)。如果你这样做iptables -t nat -L -n
,你可能会看到你的端口是如何暴露的。您可以创建类似的规则。这确实意味着当您重新启动服务器时,规则又消失了。你必须保存你的
iptables
状态。而这也就触及了dockerd
操控的不便iptables
。fail2ban
在涉及 iptables 的其他服务(例如中央配置系统,甚至是简单的自动保存规则)旁边很难管理。您可以在创建命令中打开端口。例如,打开端口 80 会运行。
更多信息可以在 https://docs.docker.com/engine/reference/commandline/create/上找到