为啥 docker run 后面的参数换了位置就不行了?

2022-02-18 15:26:46 +08:00
 coolair
# docker run --privileged --insecure-registry=test.com -d --name dind-test docker:dind
unknown flag: --insecure-registry
See 'docker run --help'.

# docker run --privileged -d --name dind-test docker:dind --insecure-registry=test.com

为啥上面不行,下面就可以了?

950 次点击
所在节点    问与答
4 条回复
GuuJiang
2022-02-18 15:29:30 +08:00
因为从镜像名(也就是你这里的 docker:dind )以前的参数是传给 docker run 命令的,而之后的参数是传给容器的
leimao
2022-02-18 15:30:10 +08:00
`docker:dind`这个是镜像的名字吧 ,有严格的位置要求。
XiLingHost
2022-02-18 15:31:13 +08:00
如果你吧参数跟随在镜像后,它就会成为 CMD 的一部分跟随在 ENTRYPOINT 后执行
你的两个命令实际上执行的效果是这样的
docker run --privileged --insecure-registry=test.com -d --name dind-test docker:dind [ENTRYPOINT] [CMD]
docker run --privileged -d --name dind-test docker:dind [ENTRYPOINT] --insecure-registry=test.com
而--insecure-registry 并不是 docker run 的可用参数之一,事实上,它是 docker:dind 容器的 ENTRYPOINT 的参数
coolair
2022-02-18 15:38:29 +08:00
@XiLingHost 感谢,明白了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834812

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX