簡體   English   中英

Docker pull:不允許操作

[英]Docker pull: operation not permitted

拉動一些泊塢窗圖像(但不是全部)時,我收到此錯誤:

failed to register layer: Error processing tar file(exit status 1): operation not permitted

例如: docker pull nginx工作,但不是docker pull redis

我得到了相同的結果,我使用sudo或root用戶作為docker組的一部分運行命令。

如果我在調試模式下運行dockerd,我會在日志中看到:

DEBU[0025] Downloaded 5233d9aed181 to tempfile /var/lib/docker/tmp/GetImageBlob023191751 
DEBU[0025] Applying tar in /var/lib/docker/overlay2/e5290b8c50d601918458c912d937a4f6d4801ecaa90afb3b729a5dc0fc405afc/diff 
DEBU[0027] Applied tar sha256:16ada34affd41b053ca08a51a3ca92a1a63379c1b04e5bbe59ef27c9af98e5c6 to e5290b8c50d601918458c912d937a4f6d4801ecaa90afb3b729a5dc0fc405afc, size: 79185732 
(...)
DEBU[0029] Applying tar in /var/lib/docker/overlay2/c5c0cfb9907a591dc57b1b7ba0e99ae48d0d7309d96d80861d499504af94b21d/diff 
DEBU[0029] Cleaning up layer c5c0cfb9907a591dc57b1b7ba0e99ae48d0d7309d96d80861d499504af94b21d: Error processing tar file(exit status 1): operation not permitted 
INFO[0029] Attempting next endpoint for pull after error: failed to register layer: Error processing tar file(exit status 1): operation not permitted 
INFO[0029] Layer sha256:938f1cd4eae26ed4fc51c37fa2f7b358418b6bd59c906119e0816ff74a934052 cleaned up 
(...)

如果我在圖像拉動時運行watch -n 0 "sudo ls -lt /var/lib/docker/overlay2/" ,我可以看到新文件夾出現(並在失敗后消失)和/var/lib/docker/overlay2/上的權限/var/lib/docker/overlay2/root:root:700所以我認為這不是一個權限問題。

以下是有關環境的一些細節:

我有一個運行LXC容器的proxmox我遇到了問題。 容器本身正在運行Debian 8.以下是各種版本:

$> uname -a
Linux [redacted-hostname] 4.10.15-1-pve #1 SMP PVE 4.10.15-15 (Fri, 23 Jun 2017 08:57:55 +0200) x86_64 GNU/Linux

$> docker version
Client:
 Version:      17.06.0-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:20:04 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.0-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   02c1d87
 Built:        Fri Jun 23 21:18:59 2017
 OS/Arch:      linux/amd64
 Experimental: false

$>docker info
Containers: 20
 Running: 0
 Paused: 0
 Stopped: 20
Images: 28
Server Version: 17.06.0-ce
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 macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
init version: 949e6fa
Kernel Version: 4.10.15-1-pve
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.906GiB
Name: resumed-dev
ID: EBJ6:AFVS:L3RC:ZEE7:A6ZJ:WDQE:GTIZ:RXHA:P4AQ:QJD7:H6GG:YIQB
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 16
 Goroutines: 24
 System Time: 2017-08-17T14:17:07.800849127+02:00
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

我和你幾乎一樣的環境,遇到了同樣的問題。 一些圖像完美(高山),而一些圖像在清理失敗(ubuntu)。

strace -f dockerd -D然后strace -f dockerd -D docker pullstrace -f dockerd -D docker load給出了原因:

mknodat(AT_FDCWD, "/dev/agpgart", S_IFCHR|0660, makedev(10, 175)) = -1 EPERM (Operation not permitted)

無特權容器禁止mknod設計。 如果你堅持在lxc中嵌套Docker,你將不得不選擇特權容器。 (並注意由於uid / gid映射,現有的無特權容器無法直接轉換為特權容器)

編輯:這將由2017年12月18日之后Moby通過此合並的任何版本修復。 完全合並到Docker后會再次更新。

如果您的容器沒有特權,這似乎是Docker的overlay2存儲驅動程序的問題。 這似乎不是overlay 問題GitHub問題 )。 因此,要么使用overlay存儲驅動程序而不是overlay2 ,要么使容器具有特權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM