为什么 Molecule 无法启动 docker 容器

Why Molecule is not able to start a docker container

我正在使用 Molecule 来测试我的 ansible 角色。在重新启动我的服务器之前工作正常。然而,之后,当我 运行 molecule create

正在跳过创建过程:正在跳过,实例已经创建。 然而,什么都不是 运行ning:

(myenv)[root]# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

当运行宁molecule converge。我收到此错误:

TASK [Gathering Facts] *********************************************************

fatal: [test_instance]: UNREACHABLE! => {"changed": false, "msg": "Authentication or permission failure.
In some cases, you may have been able to authenticate and did not have permissions on the target directory. 

Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\". Failed command was: 
( umask 77 && mkdir -p \"` echo ~/.ansible/tmp/ansible-tmp-1575033184.79-237504774558686 `\" && echo
ansible-tmp-1575033184.79-237504774558686=\"` echo ~/.ansible/tmp/ansible-tmp-1575033184.79-237504774558686 `\" ), 
exited with result 1", "unreachable": true} 

知道如何解决这个问题吗?

您的分子实例是在 docker 中创建的,但是当您重新启动时它们已停止并且没有自动重新启动。 Molecule 将它们视为已创建但无法访问它们,因为它们不是 运行ning.

您有 2 个解决方案来解决此问题。

重新启动已停止的实例

  1. 找到容器的相关名称docker ps -a
  2. docker start <name>
  3. 重启实例

从头开始

你可以简单地 运行 molecule destroy [-s scenarion_name]。这将清除剩余的实例,之后您可以从头开始测试。

@Zeitounator 是的,我将问题归结为在我的平台定义中尝试 运行 /lib/systemd/systemd,该定义与具有相同图像的 docker 的先前版本一起使用,但显然现在会马上退出。我删除了特定命令,它在默认 bash 睡眠循环中工作正常。现在的问题是为什么 docker 无法启动 systemd。它存在于系统中,我为挂载定义了通用卷和 tmpfs。然而 systemd 并不开心。 :)