如何将带有 README 文件的 Docker 镜像推送到 Docker Hub?

39

我试图将一个docker镜像推送到我的私人仓库中。然而,在Docker Hub上有一个"信息"部分,我想更新其中关于我的镜像的有用信息。我想知道是否可以推送一个README.md文件,使得Docker Hub可以解析此文件并更新"信息"部分。但我不确定是否需要将README.md嵌入我的镜像才能实现这个功能?


你可以通过调用Docker Hub API来自动化更新,而不是手动更新。请参见下面我创建的实用程序的答案。https://dev59.com/cF4b5IYBdhLWcg3wchNL#57671247 - peterevans
3个回答

29

Docker Hub将尝试解析您的Readme.md,如果您正在进行“自动构建”。对于手动构建(其中您推送自己的镜像),Docker Hub不会查看您的镜像源代码存储库,也无法了解您的Readme的内容。您需要手动将Readme文本添加到信息部分。


谢谢@Andy,我也得出了同样的结论,并在Docker Hub上手动更新了信息。 - sunsin1985

23

dockerhub-description GitHub Action可以从README.md文件更新Docker Hub描述。

    - name: Docker Hub Description
      uses: peter-evans/dockerhub-description@v3
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}
        repository: peterevans/dockerhub-description

您还可以在其他CI工具中独立使用它,而不仅限于GitHub Actions。

    docker run -v $PWD:/workspace \
      -e DOCKERHUB_USERNAME='user1' \
      -e DOCKERHUB_PASSWORD='xxxxx' \
      -e DOCKERHUB_REPOSITORY='my-docker-image' \
      -e README_FILEPATH='/workspace/README.md' \
      peterevans/dockerhub-description:2.1.0

1
将您的Docker帐户密码暴露给第三方容器是否被认为是安全的?是否有审计显示它不会暴露您的凭据? - Anton Krug
1
@AntonKrug 与所有第三方操作一样,最好的做法是分叉该操作,检查代码,并在工作流程中使用您的分叉。该操作是开源的,因此您可以检查其工作原理。 - peterevans
我不是说你的代码有问题,但是盲目依赖各种容器而不进行检查并不好,仅仅因为它是开源的并不能保证其安全性。使用特定的验证标签并没有错。我认为很多网络浏览器插件都曾经遇到过这样的问题,即开源项目更换所有者后,新版本中会携带恶意软件。 - Anton Krug
@AntonKrug 这个操作本身并不使用容器。因此,如果你fork了代码并在你的fork中使用,那么恶意软件就没有机会被引入。这个操作有一个Docker版本,可以在GitHub Actions之外运行。如果你使用已发布的容器,那么就需要信任所有者。当然,你也可以自己构建和发布副本。 - peterevans
工作。FYI 在 Docker Hub 上需要对令牌进行删除权限。 - Peter Kofler

19

docker-pushrm是一个Docker CLI插件,它添加了一个名为docker pushrm(发音:push readme)的新命令。安装后,您可以使用以下命令将README推送到Docker Hub、Quay或Harbor:

$ ls
README.md
$ docker pushrm my-user/my-repo
它使用Docker凭据存储库中的登录信息,因此对于您已经登录的注册表,它会“自动工作”。我既可以交互式地使用它,也可以用于CI。还有一个基于此的GitHub操作

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接