几天以来,我无法在我的计算机(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/