我有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容器等。
答案 0 :(得分:4)
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稳定版)似乎工作正常。