【问题标题】:Can't run any container with an entrypoint script无法使用入口点脚本运行任何容器
【发布时间】:2020-05-29 17:31:22
【问题描述】:

我每天都使用 docker,但是今天早上,当我尝试启动一些容器时,我的每个容器都使用入口点脚本失败了:

$ docker run postgres:11
bash: /usr/local/bin/docker-entrypoint.sh: Permission denied

$ docker run mysql:5
/bin/bash: /usr/local/bin/docker-entrypoint.sh: Permission denied

$ docker run php:7.3-apache
/bin/sh: 0: Can't open /usr/local/bin/docker-php-entrypoint

我成功地docker run hello-world 没有错误。

会发生什么?自从上次工作以来,我认为我的计算机上没有任何重要的更改...我在 Ubuntu 20.04 上。 感谢您的帮助。

更新

我仍然不知道发生了什么。我设法通过删除docker-ce 并重新安装它使其再次工作:

sudo apt-get remove docker-ce
sudo apt install docker-ce
docker run postgres:11
  ==> ok, worked!

但是,每次我关闭我的笔记本电脑然后再打开它,我都会再次遇到同样的问题,docker 不会运行任何带有入口点的容器。

有什么想法吗?

【问题讨论】:

  • 试试docker run postgres:11 /bin/sh 看看是否有效

标签: docker


【解决方案1】:

Apparmor 可能是原因。您可以通过运行 dmesg 和 grep 来查找 DENIED。

【讨论】:

  • 感谢这个想法。 dmesg |grep DENIED 确实显示了有关 docker 的消息:[ 320.601611] audit: type=1400 audit(1590564822.436:4660): apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/usr/local/bin/docker-entrypoint.sh" pid=14128 comm="bash" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 [ 321.386279] audit: type=1400 audit(1590564823.220:4661): apparmor="DENIED" operation="exec" profile="snap.docker.dockerd" name="/bin/kmod" pid=14302 comm="exe" requested_mask="x" denied_mask="x" fsuid=0 ouid=0 关于如何修复的任何想法?
  • 我没有使用 apparmor 的经验,我只是按照本指南中的前 3 个步骤禁用了它:simplified.guide/ubuntu/remove-apparmor。在这些步骤之后,似乎也需要重新启动。
【解决方案2】:

我们在几个小时前通过 snap 安装的 Ubuntu 19.04 和 docker 上遇到了完全相同的问题。 Apparmor 是原因,我们遵循上一个答案的解决方案。禁用 apparmor,删除 apparmor 也删除 snap 并删除 docker。然后我通过 apt 安装了 docker 并且可以正常工作。奇怪的是 apparmor 和 snap 在某种程度上是相关的,但是 apparmor 会阻止通过 snap 安装的 docker。

【讨论】:

    【解决方案3】:

    好吧,按照@PieterBeyens 的想法,我检查了apparmor,确实,它拒绝了我对/usr/local/bin/docker-entrypoint.sh 的读取权限。看来我也有 docker 和 docker-compose 的混合 snap/apt 安装。这是一团糟。

    所以,对于未来的读者,我所做的和最终的工作(你可能需要适应,但你有一个大致的想法):

    # Remove the docker and docker-compose snaps
    sudo snap remove docker-compose 
    sudo snap remove docker
    # Remove the packages via apt
    sudo apt-get purge -y  docker-ce docker-ce-cli containerd.io
    # Remove the apparmor profiles (snap ones for docker)
    sudo aa-remove-unknown
    # Reinstall via apt
    sudo apt-get install docker-ce=5:19.03.8~3-0~ubuntu-bionic docker-ce-cli=5:19.03.8~3-0~ubuntu-bionic containerd.io
    

    我也是resinstalled docker-compose via curl

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多