如果我启动 docker - 由 docker(在我的例子中是 portainer)组成,我如何配置默认管理员 user:password 和 docker?
how can I configure the default admin user:password with docker if i am launching docker-compose up of a docker(portainer in my case)?
我正在尝试创建一个 docker-compose,它建立了一个巨大的 docker 环境,以 portainer 作为管理者。
问题是用户第一次使用 "docker-compose up" 并且 portainer 启动 运行,他必须导航到 portainer 网络界面 (localhost:9000) 并设置管理员用户和密码。
我如何自动执行此步骤并使用我定义的默认用户创建一个 portainer,以便当用户第一次导航到 portainer 时,已经创建了管理员用户。
这是我的docker-compose.yml
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
ports:
- "9000:9000"
Portainer 允许您从命令行为管理员帐户指定加密密码。您需要为密码生成哈希值。
例如,这是密码的哈希值 - $$2y$$05$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS
在您的 docker-compose 文件中进行以下修改
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
command: --admin-password "$y$$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS"
ports:
- "9000:9000"
--admin-password 此标志用于在 Portainer 中指定加密密码。
可以在文档中找到更多信息 - Portainer
希望对您有所帮助。
您只能为容器的第一个 运行 设置管理员密码。使用 this repository:
您需要使用另一个 $
:
转义散列密码中的每个 $
字符
y$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
至
$y$$$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
根据 Mohsen 的评论,您必须 运行 docker-compose down
,每次您需要重新启动并初始化新的管理员密码时,如果您还想删除该选项,请选择 -v
卷。
https://github.com/portainer/portainer/issues/1506#issuecomment-352273682
在后一种情况下,必须在 docker-compose.yml 文件中使用 version: '3.3'
。
我直接在Dockerfile上设置了管理员密码!
- 创建一个脚本来生成您的密码:
$ cat <<EOF > portainer-pass.sh
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo -e "\nPlease call '$0 <password>' to run this command!\n"
exit 1
fi
htpasswd -nb -B admin $1 | cut -d ":" -f 2
EOF
- 授予您的许可:
chmod u+x portainer-pass.sh
- 生成您的密码:
./portainer-pass.sh c7e694055489cb2051195a2be1740992
输出:y$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82
- 输入 Dockerfile 的“CMD”:
# Set fixed portainer image
FROM portainer/portainer-ce:latest
# Set default admin password at startup
CMD ["--admin-password", "y$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82"]
# Default portainer web port
EXPOSE 9443
在这里您不需要将 $
替换为 $$
!
我正在尝试创建一个 docker-compose,它建立了一个巨大的 docker 环境,以 portainer 作为管理者。
问题是用户第一次使用 "docker-compose up" 并且 portainer 启动 运行,他必须导航到 portainer 网络界面 (localhost:9000) 并设置管理员用户和密码。
我如何自动执行此步骤并使用我定义的默认用户创建一个 portainer,以便当用户第一次导航到 portainer 时,已经创建了管理员用户。
这是我的docker-compose.yml
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
ports:
- "9000:9000"
Portainer 允许您从命令行为管理员帐户指定加密密码。您需要为密码生成哈希值。
例如,这是密码的哈希值 - $$2y$$05$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS
在您的 docker-compose 文件中进行以下修改
version: '3.3'
services:
portainer:
image: portainer/portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/portainer_data:/data
command: --admin-password "$y$$$arC5e4UbRPxfR68jaFnAAe1aL7C1U03pqfyQh49/9lB9lqFxLfBqS"
ports:
- "9000:9000"
--admin-password 此标志用于在 Portainer 中指定加密密码。
可以在文档中找到更多信息 - Portainer
希望对您有所帮助。
您只能为容器的第一个 运行 设置管理员密码。使用 this repository:
您需要使用另一个 $
:
$
字符
y$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
至
$y$$$ZBq/6oanDzs3iwkhQCxF2uKoJsGXA0SI4jdu1PkFrnsKfpCH5Ae4G
根据 Mohsen 的评论,您必须 运行 docker-compose down
,每次您需要重新启动并初始化新的管理员密码时,如果您还想删除该选项,请选择 -v
卷。
https://github.com/portainer/portainer/issues/1506#issuecomment-352273682
在后一种情况下,必须在 docker-compose.yml 文件中使用 version: '3.3'
。
我直接在Dockerfile上设置了管理员密码!
- 创建一个脚本来生成您的密码:
$ cat <<EOF > portainer-pass.sh
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo -e "\nPlease call '$0 <password>' to run this command!\n"
exit 1
fi
htpasswd -nb -B admin $1 | cut -d ":" -f 2
EOF
- 授予您的许可:
chmod u+x portainer-pass.sh
- 生成您的密码:
./portainer-pass.sh c7e694055489cb2051195a2be1740992
输出:y$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82
- 输入 Dockerfile 的“CMD”:
# Set fixed portainer image
FROM portainer/portainer-ce:latest
# Set default admin password at startup
CMD ["--admin-password", "y$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82"]
# Default portainer web port
EXPOSE 9443
在这里您不需要将 $
替换为 $$
!