今天,我尝试用Docker设置postgresql。但是,当我使用“hello-world”进行测试时,有一个错误:
docker:来自守护进程的错误响应: OCI运行时创建失败: container_linux.go:349:启动容器进程导致"process_linux.go:449: container导致\"rootfs_linux.go:58:将\"proc\“挂载到rootfs process_linux.go:449上\"/proc\”导致\“权限被拒绝\”:未知。错误等待容器的0003错误:上下文被取消
我学到了这个问题,它经常发生,但我没有找到解决办法(我测试了设置码头组,启动与sudo,等等)。
Client:
Debug Mode: false
Server:
Containers: 3
Running: 0
Paused: 0
Stopped: 3
Images: 1
Server Version: 19.03.10
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
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: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 5.3.18-3-pve
Operating System: Debian GNU/Linux 9 (stretch)
OSType: linux
Architecture: x86_64
CPUs: 3
Total Memory: 7.938GiB
Name: 18507
ID: 6GVD:Z44L:34QD:NS5H:UXZM:IARY:PI66:3NZN:XRWH:WP7C:KEJM:7KDF
Docker Root Dir: /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你有什么问题或建议吗?
发布于 2020-05-31 14:04:26
命令virt-what you 范围并输出lxc,它告诉整个系统已经在一个非特权的LXC容器中运行(它本身可能是由Proxmox自己的API/方法提供的),这是由seing cat /proc/1/uid_map 没有 output 0 0 4294967295但是0 100000 65536确定的。
LXC对正在运行的容器施加限制。没有在主机上设置特殊设置(提供由VPS提供程序拥有的LXC容器),这样的容器本身就没有标准的容器特性,有时也没有与之一起工作的容器化工具。
我在一个LXC论坛上讨论了这个问题,它似乎与您的问题完全一致:
现在,码头守护进程应该是好的;现在是第二个错误的时候了: docker运行hello-world返回一个将proc安装到rootfs…的错误拒绝许可
正如预期的那样,解决方案是在LXC/Proxmox上启用嵌套容器化。这必须由您的VPS提供程序(或者它将提供给它的用户的一些API )来完成。
通过手动插入包含以下内容的一行来修复它(技巧2):keyctl=1、nesting=1
在查看Proxmox文件时:
keyctl=<boolean>(默认值= 0)只用于非特权容器:允许使用keyctl()系统调用。这是在容器内使用码头所必需的。 ...
以及:
nesting=<boolean>(默认值= 0)允许嵌套。最好与带有附加id映射的非特权容器一起使用。请注意,这将向来宾公开主机的procfs和sysfs内容。
这两个功能必须由您的提供者为您激活。由于存在安全性考虑,您的提供者可能不会倾向于这样做。因此,您应该检查您与您的供应商的合同,看看你是否应该得到这样的限制,并采取相应的行动。
在virt-what的结果提供VM管理程序而不是容器结果(例如:kvm、vmware、hyperv、甚至qemu (运行非常慢))的环境中,您不会遇到这个问题.而不是docker或lxc),或者如果提供者通过放宽一些限制显式地允许嵌套。
https://unix.stackexchange.com/questions/589995
复制相似问题