容器启动时权限被拒绝(针对入口点)

容器启动时权限被拒绝(针对入口点)

几天以来,我无法在我的计算机(Ubuntu 18.04)上运行任何 docker 容器。每当我尝试运行/启动容器时,我都会收到一条错误,提示无法执行入口点文件:

$ sudo docker run --name test nginx
sh: 0: Can't open /docker-entrypoint.sh

或者

$ docker run --name test2 mongo:4.0
WARNING: Error loading config file: /home/myUser/.docker/config.json: stat /home/myUser/.docker/config.json: permission denied
/bin/bash: /usr/local/bin/docker-entrypoint.sh: Permission denied

第二条错误消息让我得出结论,我可能对整个 docker VM 存在访问问题。因此,这是文件夹的当前权限设置.docker

$ sudo ls -l /home/myUser/.docker
total 4
drwx------ 5 root root 4096 Nov 21  2019 machine

从我的角度来看,它应该没问题(至少当以超级用户身份执行 docker run/start 命令时...)。因此,它一定在其他地方。<= 错误!(编辑:不应忽略任何警告,甚至不应忽略出现错误的警告……)

我迄今为止尝试过/咨询过的内容:

  • 重新安装 docker => 工作正常,直到下次重启......
  • 这个帖子当入口点文件从主机复制到容器中时出现权限问题(这不适用于我没有启动预建图像的情况......)
  • 拼命地在网上搜索其他相关帖子,却无功而返

我愿意接受任何建议,并乐意提供有关我的设置的更多详细信息(如有必要)。


编辑:我关注了docker 上的说明安装和使用apt-get

执行时没有得到任何结果env | grep DOCKER...

以下是docker info的结果:

$ docker info
WARNING: Error loading config file: /home/myUser/.docker/config.json: stat /home/myUser/.docker/config.json: permission denied
Client:
 Debug Mode: false

Server:
 Containers: 9
  Running: 0
  Paused: 0
  Stopped: 9
 Images: 21
 Server Version: 19.03.11
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc version: 
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.3.0-53-generic
 Operating System: Ubuntu Core 16
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 15.54GiB
 Name: my-laptop
 ID: ****:****:some:code
 Docker Root Dir: /var/snap/docker/common/var-lib-docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

编辑 2(或者更确切地说是一个有趣的事实):我可以从 docker 运行 hello-world 示例。所以,问题是 docker 容器内的权限不够...为什么?

config.json编辑 3:感谢@Sysadmin,我可以按照以下说明删除加载过程中的警告这个帖子

编辑 4:有趣的是,我自己创建的简单图像可以正常工作。下面是我使用的示例内容:

FROM alpine
CMD ls -l /

答案1

在你的sudo ls -l /home/myUser/.docker里面没有config.json

config.json我有一个相对普通的 Ubuntu 18,带有 docker,我的 中有一个~/.docker。尝试并创建一个消除警告并看到错误消失。

答案2

您需要将 bash 脚本文件复制到 VM 可以访问该文件的位置,最好是全局的,如下所示:

COPY docker-entrypoint.sh /usr/local/bin/

相关内容