如果我启动 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上设置了管理员密码!

  1. 创建一个脚本来生成您的密码:
$ 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
  1. 授予您的许可:
chmod u+x portainer-pass.sh
  1. 生成您的密码:
./portainer-pass.sh c7e694055489cb2051195a2be1740992

输出:y$bGljp9ThZkfNaZuKvDUB3uKpXecI5SDZ6s6Xga8azv4JQUDXmHV82

  1. 输入 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

在这里您不需要将 $ 替换为 $$