我是否需要“docker commit”才能将映像推送到 docker 映像注册表(例如 docker hub)?

Dim*_*las 2 docker dockerfile

通常根据文档为了构建 docker 镜像,我需要遵循以下步骤:

  1. Dockerfile为我的应用程序创建一个。

  2. 运行docker build . Dockerfile到哪里。是我的应用程序的上下文

  3. 使用docker run将我的图像运行到容器中。

  4. 将我的图像提交到容器中

  5. 然后使用docker push将图像推送到容器中。

尽管有时将图像启动到容器中似乎是浪费时间,因为我可以使用命令-t中的参数来标记我的图像docker build。因此无需将容器作为映像提交。

那么,是否需要将正在运行的容器作为镜像提交呢?

小智 5

您不需要运行并提交。docker commit 允许您根据对现有容器所做的更改创建新映像。您确实需要以某种方式构建和标记您的映像,以便您能够推送它。

docker build -t [registry (defaults to docker hub)]/[your repository]:[image tag] [docker file context folder]
Run Code Online (Sandbox Code Playgroud)

例如:

docker build -t my-repository/some-image:image-tag .
Run Code Online (Sandbox Code Playgroud)

进而:

docker push my-repository/some-image:image-tag
Run Code Online (Sandbox Code Playgroud)

这将从当前文件夹(运行 docker build 命令的位置)中找到的 docker 文件构建图像。本例中的存储库是 my-repository,图像名称是 some-image,其标签是 image-tag。

另请注意,您必须使用 docker hub 的凭据执行 docker 登录,然后才能实际推送映像。

您还可以标记现有映像而不重建它。如果您想要将现有映像推送到不同的注册表或想要创建不同的映像标签,这非常有用。例如:

docker tag my-repository/some-image:image-tag localhost:5000/my-repository/some-image:image-tag
Run Code Online (Sandbox Code Playgroud)

这将为上一个示例中的图像添加一个新标签。请注意添加的注册表部分 (localhost:5000)。如果您在该标记上调用 docker Push (docker Push localhost:5000/my-repository/some-image:image-tag),则图像将被推送到 localhost:5000 上找到的注册表(当然您需要注册表启动并运行在尝试推动之前)。