【问题标题】:Use docker secrets on a docker-machine在 docker 机器上使用 docker 机密
【发布时间】:2019-04-15 15:15:17
【问题描述】:

我在使用 docker-machine 创建的远程主机上尝试使用 docker 机密时遇到问题。

下面是我的 docker-compose.yml:

version: "3.5"

services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
    secrets:
      - db_root_password

secrets:
  db_root_password:
    file: ./db_root_password.txt

这在本地运行良好,我可以运行 docker-compose up 并访问 mysql 容器。

docker-compose up

root 密码已经应用好了。

我现在正尝试在我使用 docker-machine 创建的远程主机上运行容器。

我首先使用 docker-machine create 创建了机器(在本例中,在 exoscale 云上)

docker-machine create --driver exoscale  ... MyMachine

然后我尝试使用以下方式部署主机:

eval $(docker-machine env MyMachine)
docker-compose up

但是,当我尝试在远程主机上运行时,出现以下错误:

ERROR: for mysql  Cannot create container for service mysql: invalid mount config for type "bind": bind source path does not exist: /Users/user/path/to/db_root_password.txt

所以它仍在尝试使用我本地机器上本地文件的路径加载密钥。如何在远程主机上使用此密钥?

提前感谢您的帮助

【问题讨论】:

  • 我认为如果您使用 swarm 和 docker stack deploy 而不是 docker-compose up,您将有一条更简单的路径。我所看到的在 compose 中讨论秘密的任何地方都是在群体环境中。然后,您可以像创建网络一样创建秘密,它们是集群的一部分,并且可供您允许的容器访问。

标签: docker docker-compose docker-machine docker-secrets


【解决方案1】:

好像 tour docker-machine 找不到 ./db_root_password.txt

您可以尝试在同一路径下的 docker-machine 中创建文件 db_root_password.txt 吗?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多