【问题标题】:Launch Docker Container using ansible-playbook from a locally available docker image使用 ansible-playbook 从本地可用的 docker 镜像启动 Docker 容器
【发布时间】:2015-07-15 05:04:41
【问题描述】:

我创建了一个名为 revi-centos6 的 docker 镜像。 (图片还没有推送到docker hub)

使用命令如下:

sudo docker build -t revi-centos6 .

镜像构建成功。还跑了docker images,在列表中找到了新创建的docker镜像。

我有以下剧本内容(docker1.playbook):

# Create a a docker container on localhost (this has an ssh server in the image)
- hosts: localhost
  sudo: yes
  tasks:
  - name: start container
    docker: image=revi-centos6 hostname=test name=test detach=False state=running

然后我运行了以下命令:

ansible-playbook --ask-sudo-pass docker1.playbook -vvvv

但是,我收到以下错误:

失败:[localhost] => {"changes": ["{\"status\":\"拉取存储库 revi-centos6\"}\r\n", "{\"errorDetail\":{\ "message\":\"错误:图片库/revi-centos6:latest not found\"},\"error\":\"Error: image library/revi-centos6:latest not found\"}\r\n "], "失败": true, "状态": ""} 味精:来自拉取的无法识别的状态。

为什么不选择本地构建的图像并尝试从中心查找它?这是否意味着每次创建新的 docker 镜像时,我都必须将其推送到 hub?

注意:顺便说一句,我确实运行了sudo docker run -t revi-centos6,它能够从本地创建的 docker 映像启动容器。问题似乎仅在使用带有 docker 模块的 ansible-playbook 命令时出现。

【问题讨论】:

  • 您可能正在运行旧版本的模块,因为我认为running 不是当前 docker 模块的有效选项
  • 我最初尝试在没有state=running 的情况下运行它,但我得到了同样的错误。但后来我添加了它,试图明确说明它(在一些旧的在线博客中可以找到)。
  • 理想情况下,您确实希望它选择本地可用的图像,对吧?

标签: docker ansible ansible-playbook


【解决方案1】:

这里的问题在于docker-py 模块,该模块最近进行了一些更新,将首先探测图像集线器。 docker-py 不使用命令行工具,它使用自己的 docker api 实现并以自己的方式做事。尝试运行您自己的私有注册表。

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 2020-08-08
    • 1970-01-01
    • 2018-08-14
    • 2021-11-04
    • 1970-01-01
    • 2019-05-08
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多