我正在试验Dockerfile,我想我了解大多数逻辑。但是,在这种情况下,我看不到“公开”和“发布”端口之间的区别。
我首先看过的所有教程都将EXPOSE
命令包含在Dockerfile中:
...
EXPOSE 8080
...
然后,他们从此Dockerfile构建映像:
$ docker build -t an_image - < Dockerfile
然后在运行映像时 发布 与上述相同的端口:
$ docker run -d -p 8080 an_image
或使用以下命令发布所有端口
$ docker run -d -P an_image
如果仍要发布端口,则在Dockerfile中公开端口有什么意义?是否需要先公开一个端口,然后 再不
发布它?实际上,我想指定在创建映像时将在Dockerfile中使用的所有端口,然后不再麻烦它们,只需使用以下命令运行它们:
$ docker run -d an_image
这可能吗?
基本上,您有三个选择:
EXPOSE
也不-p
EXPOSE
EXPOSE
并-p
1)如果您既未指定EXPOSE
也不指定-p
,则只能从容器本身 内部 访问容器中的服务。
2)如果您EXPOSE
使用端口,则无法从Docker外部访问容器中的服务,而可以从其他Docker容器内部访问容器中的服务。因此,这对于容器间的通信很有用。
3)如果你EXPOSE
和-p
一个端口,在容器中的服务是从任何地方访问,甚至泊坞窗外面。
两者分开的原因是恕我直言,因为:
该文档明确指出:
该
EXPOSE
指令公开了供链接使用的端口。
它还为您指出了如何链接容器,这基本上就是我所说的容器间通信。
PS:如果可以-p
,但是不这样做EXPOSE
,Docker会执行隐式EXPOSE
。这是因为如果某个端口向公众开放,那么它也会自动向其他Docker容器开放。因此-p
包括EXPOSE
。这就是为什么我没有将其列为第四种情况。
然后在运行映像时发布与上面相同的端口: 或发布所有端口,使用 在Dockerfile中公开一个端口有什么意义?是否需要先公开一个端口,然后不发布它?实际上,我希望指定在创建映像时将在Dockerfile中使用的所有端口,然后不再麻烦它们,只需使用以下命令运行它们: 这可能吗?
和选项有什么区别?
问题内容: 并且似乎正在与同一个dockerFile进行交互,这两个工具之间有什么区别? 问题答案: 在一个码头工人的发动机管理单个容器时,CLI使用。这是访问docker daemon api的客户端命令行。 该CLI可以用于管理多容器应用程序。它还会将您在cli 上输入的许多选项移到文件中,以方便重用。它在与所使用的同一docker api上充当前端“脚本” ,因此您可以使用命令和许多shel
当您选择此选项时,将生成 yaml 文件,如下所示: 在此 yaml 文件中,您可以定义从还原开始的整个部署周期
Windows上的Docker似乎是Windows Server2016内置的功能?并支持在Docker容器内运行Windows以及使用Windows作为Docker容器宿主。这支持Linux吗?我不这么认为,我认为它只支持运行Windows Docker容器。这似乎也是微软维护的。 Docker for Windows似乎是Docker团队为将Linux Docker引入Windows而创建的一
问题内容: 有人可以帮助我了解 docker run 和 docker container run 之间的区别吗? 当我执行 docker run –help 和 docker container 从docker cmd行 运行–help时 。我看到以下 在新容器中运行命令 。 他们在内部运行容器的方式有什么不同,还是两者都在做相同的工作? 根据https://forums.docker.com/