Docker Can';t使用入口点脚本运行任何容器

Docker Can';t使用入口点脚本运行任何容器,docker,Docker,我每天都和docker一起工作,但今天早上,当我尝试启动一些容器时,我的每个容器都失败了,其中都有一个entrypoint脚本: $ 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 r

我每天都和docker一起工作,但今天早上,当我尝试启动一些容器时,我的每个容器都失败了,其中都有一个entrypoint脚本:

$ 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运行helloworld
,没有出现错误

会发生什么?我想自从我的电脑上次运行以来,我没有改变过任何重要的东西。。。我在Ubuntu 20.04上。 谢谢你的帮助

更新

我还是不知道发生了什么。我通过删除docker ce并重新安装它,使其再次工作:

sudo apt-get remove docker-ce
sudo apt install docker-ce
docker run postgres:11
  ==> ok, worked!
但是,每次我关闭我的笔记本电脑,然后打开它,我又有同样的问题,docker没有运行任何带有入口点的容器


有什么想法吗?

可能是因为服装。您可以通过运行dmesg和grep for DENIED来找出原因。

Apparmor可能是原因。您可以通过运行dmesg和grep for DENIED来找到答案。

几个小时前,我们在Ubuntu 19.04和通过snap安装的docker上遇到了完全相同的问题。Apparmor是原因,我们遵循前面答案中的解决方案。禁用apparmor,移除apparmor,这也移除了snap,也移除了docker。然后我通过apt和works安装了docker。奇怪的是apparmor和snap是如何关联的,但是apparmor阻止了通过snap安装的docker。

几个小时前,我们在Ubuntu 19.04和通过snap安装的docker上遇到了完全相同的问题。Apparmor是原因,我们遵循前面答案中的解决方案。禁用apparmor,移除apparmor,这也移除了snap,也移除了docker。然后我通过apt和works安装了docker。奇怪的是apparmor和snap是如何关联的,但是apparmor阻止了通过snap安装的docker。

好吧,按照@PieterBeyens的想法,我检查了apparmor,事实上,它拒绝了我对
/usr/local/bin/docker entrypoint.sh的读取权限。我似乎还混合了docker和docker compose的snap/apt安装。真是一团糟

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


我也是

好吧,按照@PieterBeyens的想法,我检查了apparmor,事实上,它拒绝我对
/usr/local/bin/docker entrypoint.sh的读取权限。我似乎还混合了docker和docker compose的snap/apt安装。真是一团糟

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


我也是

试试docker run postgres:11/bin/sh
,看看它是否管用试试docker run postgres:11/bin/sh
,看看它是否管用多亏了这个主意
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\u mask=“r”DENIED\u mask=“r”fsuid=0[321.386279]审计: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个步骤禁用了它:。在这些步骤之后,重新启动似乎也是必要的。谢谢你的这个想法
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\u mask=“r”DENIED\u mask=“r”fsuid=0[321.386279]审计: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个步骤禁用了它:。在这些步骤之后,重新启动似乎也是必要的。
# 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