在Docker Swarm中访问私有DockerHub仓库

104次阅读
没有评论

问题描述

正在尝试使用Digital Ocean的docker-machine驱动程序部署一个Docker Swarm集群。目前,这是一个包含多个公共DockerHub镜像和一个私有镜像的单节点集群。用户在配置集群以正确接受私有镜像时遇到了困难。在SSH登录到节点后,使用了docker login命令。之后,用户能够成功地使用docker pull命令拉取私有镜像。然而,在尝试运行docker stack deploy -c myapp.yml myapp命令时,出现了以下警告:

image me/myapp:latest could not be accessed on a registry to record its digest. Each node will access me/myapp:latest independently, possibly leading to different nodes running different versions of the image.

用户想知道在Docker Swarm模式下如何正确登录到私有仓库。

解决方案

请注意以下操作可能存在版本差异或风险,建议在操作前做好备份。

在Docker Swarm中正确登录到私有DockerHub仓库需要使用--with-registry-auth标志。这将确保Swarm节点能够正确访问私有仓库。

以下是解决方案的步骤:

  1. 打开终端,登录到目标节点。
  2. 使用以下命令登录到私有DockerHub仓库,输入用户名和密码:
    bash
    docker login
  3. 使用以下命令部署Stack,并使用--with-registry-auth标志传递登录凭据:
    bash
    docker stack deploy -c myapp.yml --with-registry-auth myapp

    请确保将myapp.yml替换为您的Stack配置文件的实际名称。

通过在部署命令中使用--with-registry-auth标志,Swarm节点将获得访问私有仓库的身份验证凭据,从而能够拉取私有镜像。

如果您遇到问题或操作失败,可以考虑检查命令的语法是否正确,或者查阅Docker和Docker Swarm的官方文档以获取更多帮助。

请注意,解决方案中的操作可能会因Docker版本或环境配置的不同而有所差异。建议在实际操作前进行适当的测试和备份。

结论

通过在Docker Swarm中使用--with-registry-auth标志,在部署Stack时传递私有DockerHub仓库的身份验证凭据,您可以确保Swarm节点能够正确访问并拉取私有镜像,从而解决警告消息。这有助于确保所有节点都使用相同版本的镜像,避免因为不同版本的镜像而导致的问题。

正文完