盐:'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-docker
和python3-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 Stretch的python-docker
软件包(现在正在testing,应该在2017年成为Debian稳定版)似乎正在运行。