【问题标题】:docker compose, vagrant and insecure Repositorydocker compose、vagrant 和不安全的存储库
【发布时间】:2015-06-05 11:49:30
【问题描述】:

我已设置 docker-compose 从自定义存储库中提取我的图像。

这是 yaml 文件的样子

my_service:
  image: d-myrepo:5000/mycompany/my_service:latest
  ports:
    - "8079:8079"

现在如果我运行 vagrant,它会出错

==> 默认值:文件“/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth”,第 46 行,在 expand_registry_url ==> 默认值:docker.errors ==> 默认值:. ==> 默认值:DockerException ==> 默认值:: ==> 默认值:HTTPS 端点无响应且不安全模式未启用。 以下 SSH 命令以非零退出状态响应。 Vagrant 假设这意味着命令失败!

/usr/local/bin/docker-compose -f "/vagrant/docker-compose.yml" up -d

Stdout from the command:



Stderr from the command:

stdin: is not a tty
Creating vagrant_y2y_1...
Pulling image d-myrepo:5000/mycompany/my_service:latest...
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 31, in main
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 464, in up
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.project", line 208, in up
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 214, in recreate_containers
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 197, in create_container
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.client", line 710, in pull
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth", line 67, in resolve_repository_name
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth", line 46, in expand_registry_url
docker.errors.DockerException: HTTPS endpoint unresponsive and insecure mode isn't enabled.

我在互联网上读到它,它与不安全的存储库有关。

只有在我编辑文件时才有效

/etc/default/docker

有内容

DOCKER_OPTS="-r=true --insecure-registry d-myrepo:5000 ${DOCKER_OPTS}"

重启 docker 服务并手动拉取镜像。即

docker pull d-myrepo:5000/mycompany/my_service:latest

有没有办法避免这个错误?并让配置顺利运行?也许我在docker-composer.yml 文件中缺少一个选项?

【问题讨论】:

  • 在您更改 DOCKER_OPTS 后,docker-compose 是否仍然抱怨?
  • 如果我在手动拉取镜像后执行vagrant reload,则配置运行不会出现错误:default: Running docker-compose up... ==&gt; default: stdin: is not a tty ==&gt; default: Creating vagrant_my_service_1...
  • 那么在vagrant使用docker之前需要修改docker选项。见stackoverflow.com/a/29290807/390808
  • 您提供的解决方案不起作用,但是当我登录 vagrant 机器并执行以下命令时,repos 被完美提取。 /usr/local/bin/docker-compose -f "/vagrant/docker-compose.yml" up -d --allow-insecure-ssl ....我可以将它集成到我的 vagrantfile 中吗?
  • 我假设你正在使用 docker-compose vagrant 插件github.com/leighmcculloch/vagrant-docker-compose。查看代码,似乎无法从 vagrant 文件向 docker-compose 传递其他选项。此外,似乎没有(记录在案的)方法可以将默认选项传递给 docker-compose。因此,我认为没有办法这样做。

标签: docker vagrant docker-compose


【解决方案1】:

感谢您的反馈,实现此目的的最佳方法是按以下方式设置 vagrant 配置

  config.vm.provision :docker
  config.vm.provision :docker_compose
  config.vm.provision "shell", path: "provision.sh", privileged: false

而 shell 脚本 provision.sh 将包含以下相关行。

sudo echo "DOCKER_OPTS=\"-r=true --insecure-registry my_repo:5000 \${DOCKER_OPTS}\"" | sudo tee /etc/default/docker
sudo  service docker restart
sudo /usr/local/bin/docker-compose -f /vagrant/docker-compose.yml up -d --allow-insecure-ssl

【讨论】:

  • 很高兴它现在可以工作了!您确定不需要将 shell 命令放在 docker_compose 配置程序之前吗?手册指出,多个provisioner按照它们在vagrant文​​件docs.vagrantup.com/v2/provisioning/basic_usage.html中出现的顺序执行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2023-03-19
  • 2022-10-13
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多