오늘은 Docker를 사용하여 postgresql을 설정해 보았습니다. 그러나 'hello-world'를 사용하여 테스트하면 오류가 발생합니다.
docker: 데몬의 오류 응답: OCI 런타임 생성 실패: Container_linux.go:349: 컨테이너 프로세스 시작으로 인해 "process_linux.go:449: 컨테이너 초기화로 인해 \"rootfs_linux.go:58: \\"proc\\" 제거 발생 rootfs\\"/var/lib/docker/overlay2/1ef83761740dcfec79baa94e1ef3073bf1fa130a21f56e9201a80f4523e073ab/merged\\"가 \\"/proc\\"에서 \\"권한 거부됨\\"\""이 발생함: 알 수 없음. 오류[0003] 컨테이너를 기다리는 동안 오류가 발생했습니다. 컨텍스트가 취소되었습니다.
이 문제에 대해 배웠는데 자주 발생하지만 해결책을 찾지 못했습니다(docker 그룹 설정, 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
질문이나 제안사항이 있으신가요?
답변1
주문하다virt-what
너달리다lxc
전체 시스템이 다음과 같다고 알려주는 출력은 무엇입니까 ?이미권한 없이 실행LXC컨테이너(자체는 Proxmox의 자체 API/메소드에 의해 제공될 수 있음)를 참조하여 결정됩니다.cat /proc/1/uid_map
아니요출력 0 0 4294967295
하지만 0 100000 65536
.
LXC는 실행되는 컨테이너에 제한을 가합니다. 이러한 컨테이너 자체에는 특별한 설정 없이 컨테이너화된 기능에 대한 표준 액세스 권한이 없습니다.호스트에서(LXC 컨테이너 제공,VPS 제공업체가 소유함), 때로는 컨테이너화 도구를 사용해야 합니다.
LXC 포럼에서 이 토론을 찾았는데 귀하의 질문과 정확히 일치하는 것 같습니다.
Proxmox의 LXC 비특권 컨테이너에 Docker-CE 설치
이제 docker 데몬은 문제가 없을 것입니다. 이제 두 번째 오류가 발생할 시간입니다. docker run hello-world가 "Mounting proc to rootfs...permission failed" 오류를 반환합니다.
예상대로 해결책은LXC에서 중첩된 컨테이너화 활성화/프록스목스.이 작업은 VPS 공급자가 수행해야 합니다.(또는 사용자에게 제공하는 일부 API).
다음 내용이 포함된 행을 수동으로 삽입하여 문제를 해결하세요(팁 #2).
features: keyctl=1,nesting=1
볼 때Proxmox 문서:
keyctl=<boolean>
(기본값 = 0)권한이 없는 컨테이너에만 해당: keyctl() 시스템 호출이 허용됩니다. 이는 컨테이너 내부에서 docker를 사용하는 데 필요합니다.
[...]
그리고:
nesting=<boolean>
(기본값 = 0)중첩이 허용됩니다. 추가 ID 매핑이 있는 권한이 없는 컨테이너에 가장 적합합니다. 이렇게 하면 호스트의 procfs 및 sysfs 내용이 게스트에 노출됩니다.
이 두 가지 기능을 활성화해야 합니다당신을 위한통과귀하의 제공자. 귀하의 서비스 제공자는 보안 문제로 인해 이를 꺼릴 수도 있습니다. 그러므로 귀하가 그러한 제한을 받아야 하는지 알아보고 그에 따라 행동하려면 서비스 제공자와의 계약을 확인해야 합니다.
결과가 virt-what
컨테이너 결과가 아닌 VM 하이퍼바이저를 제공하는 환경(예: kvm
, vmware
, hyperv
, 또는 심지어 qemu
(매우 느리게 실행됨)... 또는 그렇지 않음 docker
) lxc
또는 공급자가 Relax를 통과하는 환경에서는 이 문제가 발생하지 않습니다. 명시적으로 중첩을 허용하는 몇 가지 제한 사항이 있습니다.