“ -Bbn”在Docker中是什么意思?

问题描述

我遵循了本文Docker Registry来设置受限制的访问Docker注册表。 我不明白以下片段。

$ docker run \
  --entrypoint htpasswd \
  registry:2 -Bbn testuser testpassword > auth/htpasswd

我检查了docker官方docker run文档,但没有找到-Bbn参考。

问题

-Bbn是什么意思?

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

解决方法

-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" 
,

所有docker args出现在映像名称之前;这些参数用于htpasswd,这是..是的,您猜对了,是“入口点”。

htpasswd参数意味着使用bcrypt,批量运行,使用标准输出。