盐:'dockerng'__virtual__返回False

我有Debian Jessie,我试图用Salt dockerng来pipe理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容器等?

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 repository deb https://apt.dockerproject.org/repo debian-jessie )。

所以解决方法是卸载python-docker软件包(如果已安装)并使用pip安装最新的docker-py

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

或者使用这个盐状态:

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

或者只是运行

 salt myminion pip.install docker-py 

Debian Stretchpython-docker软件包(现在正在testing,应该在2017年成为Debian稳定版)似乎正在运行。