我有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容器等? 最佳答案
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存储库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稳定的)似乎工作正常。关于docker - 盐: 'dockerng' __virtual__返回False,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33270253/