在Docker中,"-Bbn"的意思是什么?

4
我按照这篇文章Docker Registry设置一个受限制的访问docker镜像库。我不理解以下代码片段。
$ docker run \
  --entrypoint htpasswd \
  registry:2 -Bbn testuser testpassword > auth/htpasswd

我查阅了Docker官方的docker run文档,但未找到对于-Bbn的解释。

问题

-Bbn是什么意思?

在哪里可以找到有关-Bbn的文档?


“-Bbn” 似乎是一个组合。 - Guokas
2个回答

4

-Bbnhtpasswd 命令的参数 (https://httpd.apache.org/docs/2.4/programs/htpasswd.html),在命令中进行指定。

--entrypoint htpasswd
docker run 命令基本上在 registry:2 Docker 容器中运行以下命令。
htpasswd -Bbn testuser testpassword

然后将输出重定向到本地目录中的文件auth/htpasswd

更新:要在容器中运行命令htpasswd -Bbn testuser testpassword > auth/htpasswd (带有重定向),您可以将其作为包括重定向的/bin/sh命令运行。

docker run \
  registry:2 /bin/sh -c "htpasswd -Bbn testuser testpassword > auth/htpasswd" 

如果在目录中没有找到名为auth的文件,你可以在运行htpasswd命令之前创建它。
docker run \
  registry:2 /bin/sh -c "mkdir -p auth && htpasswd -Bbn testuser testpassword > auth/htpasswd" 

你说过:htpasswd -Bbn testuser testpassword > auth/htpasswd 命令将在 registry:2 镜像内运行。但是,当我进入 registry:2 镜像时,在其中并没有找到 auth/htpasswd 文件。 - Guokas
auth/htpasswd 文件在 Docker registry:2 中不存在,而是存在于我的本地机器上,请问您能否详细解释一下这个问题? - Guokas
抱歉,我犯了一个错误。重定向操作实际上将docker run命令的输出转发到本地目录中的auth/htpasswd文件中。我已经更新了我的帖子,并提供了一种将其重定向到容器文件中的方法。 - VietHTran

3
所有的Docker参数都要出现在镜像名称之前;这些参数是为htpasswd服务的,它就是“入口点”。 htpasswd参数意味着使用bcrypt,批处理运行,并使用标准输出。

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