容器commit为镜像,再run成container, 端口映射丢失 该如何理解.

发布于 2022-09-02 02:01:10 字数 506 浏览 11 评论 0

问个问题啊, 我run 了一个container hello,通过-p参数 映射主机端口 和 容器端口.

sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

然后通过 commit 命令生成新的镜像 sudo docker commit hello hello-image .
在然后, 基于该镜像,使用docker run -d hello-image 重新运行一个新的容器(这个时候并没有指定-p参数).
新生成的容器 是没有 端口映射的,而且也没有之前容器设置的-m参数信息.

我的问题是: 如何理解新生成的容器没有映射端口和 内存限制这两项信息? 什么参数是属于容器的,什么参数是属于镜像的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

就此别过 2022-09-09 02:01:11

端口映射是屬於container的, 不會存在image中, 每次run時要再指定.

二货你真萌 2022-09-09 02:01:11

容器commit成镜像时,只会保留静态文件,因为你此时的容器本身也是stop的

人间☆小暴躁 2022-09-09 02:01:11

你要保留端口,要么使用dockerfile 开放端口出来,并且创建容器的时候使用-P 命令。
要么依然运行类似你上面的写明端口的方式。否则不会开放端口出来,所有跟宿主机有关联的,都是需要创建容器的时候,动态指定。
sudo docker run -d --name hello -p 8080:8080 -m 268435456 ubuntu:14.04 bin/bash -c "while true;do echo hello $(date); sleep 2; done"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文