我有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-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稳定的)似乎工作正常。

关于docker - 盐: 'dockerng' __virtual__返回False,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33270253/

10-12 23:46