首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头错误:拒绝“Hello”的许可

问码头错误:拒绝“Hello”的许可
EN

Unix & Linux用户
提问于 2020-05-30 18:30:11
回答 1查看 3.7K关注 0票数 3

今天,我尝试用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,等等)。

这是‘码头信息’:

代码语言:javascript
复制
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

你有什么问题或建议吗?

EN

回答 1

Unix & Linux用户

发布于 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论坛上讨论了这个问题,它似乎与您的问题完全一致:

Proxmox中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),或者如果提供者通过放宽一些限制显式地允许嵌套。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/589995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档