如何编辑现有容器的选项?

如何编辑现有容器的选项?

我有一个docker create从图像创建的容器(),该容器正在EXPOSE 22使用Dockerfile

我通过 启动它docker start <container name or ID>并通过 访问它ssh

我现在需要公开此容器中运行的服务的另一个端口。我无法重新创建它,必须更改其启动参数才能公开该额外端口。这可能吗?

我希望这将允许与或docker start相同的参数,但事实并非如此。docker createdocker run

注意:我知道docker的哲学是创建临时容器。现实情况是,我必须处理这个高度定制的容器(而不是重新创建它)

答案1

你暗示你没有使用docker-compose来启动它,而是使用正常的docker run。我会研究docker-compose,因为这样你就可以停止它,然后用新的配置文件重新启动它。这允许可复制的创作容器。docker run随处可见的仅使用容器的例子都无济于事。

在您的特定情况下,我认为您只需添加一条iptables规则即可。默认情况下,dockerd操纵iptables规则以重定向流量(这甚至可能是唯一这样EXPOSE做的事情)。如果您这样做,iptables -t nat -L -n您可能会看到您的端口是如何暴露的。您可以创建类似的规则。

这意味着当您重新启动服务器时,规则又会消失。您必须保存状态iptables。这又涉及到dockerd操作的不便。与其他涉及 iptables 的服务(如中央配置系统、,甚至简单的规则自动保存)iptables相比,管理起来很困难。fail2ban

答案2

您可以在创建命令中打开端口。例如,要打开端口 80,请运行以下命令。

docker create -p 80:80 container/name

更多信息请访问 https://docs.docker.com/engine/reference/commandline/create/

相关内容