盐:' dockerng' __virtual__返回False

时间:2015-10-21 22:20:54

标签: docker salt-stack

我有Debian Jessie,我试图用Salt dockerng来管理Docker容器。但是,当我尝试这种状态时:

# file: docker_demo.sls

hello-world:
  dockerng.image_present

然后sudo salt '*' state.highstate失败:

----------
          ID: hello-world
    Function: dockerng.image_present
      Result: False
     Comment: State 'dockerng.image_present' was not found in SLS 'docker_demo'
              Reason: 'dockerng' __virtual__ returned False
     Started: 
    Duration: 
     Changes:   

如何解决此问题,以便dockerng.image_present可以提取图片,dockerng.running可以运行Docker容器等。

1 个答案:

答案 0 :(得分:4)

Salt minion执行的dockerng模块使用docker-py(不是CLI命令docker)通过REST API与Docker守护进程通信。

错误消息'dockerng' __virtual__ returned False有点误导,但如果您看到源代码,则会返回False,因为它无法导入Pyhon模块docker。所以必须安装这个Python包。

Debian存储库中有一些包:python-dockerpython3-docker。但两者都与最近的docker-engine(从APT存储库deb https://apt.dockerproject.org/repo debian-jessie安装)不兼容。

因此,解决方案是在安装后卸载python-docker软件包并使用docker-py安装最新的pip

sudo apt-get install python-pip
sudo pip install docker-py

或使用此Salt状态:

python-pip:
  pkg.installed

docker-py:
  pip.installed:
    - require:
      - pkg: python-pip

或者只是运行

salt myminion pip.install docker-py

来自 Debian Stretch python-docker软件包(现在正在测试,应该在2017年成为Debian稳定版)似乎工作正常。