컨테이너를 빌드하는 동안(컨테이너 내부에서 동일한 명령을 실행할 때도 동일한 일이 발생함) "장치에 남은 공간이 없습니다"라는 오류가 발생합니다. df
나는 공간이 충분한지 확인 하고 확인했습니다. 내 운영 체제는 Arch Linux이고 출력은 다음과 같습니다 docker info
.
[mark@arch stackage-head]$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 123
Server Version: 18.03.0-ce
Storage Driver: devicemapper
Pool Name: docker-8:3-5898903-pool
Pool Blocksize: 65.54kB
Base Device Size: 10.74GB
Backing Filesystem: xfs
Udev Sync Supported: true
Data file: /dev/loop0
Metadata file: /dev/loop1
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 45.27GB
Data Space Total: 107.4GB
Data Space Available: 56.87GB
Metadata Space Used: 36.01MB
Metadata Space Total: 2.147GB
Metadata Space Available: 2.111GB
Thin Pool Minimum Free Space: 10.74GB
Deferred Removal Enabled: true
Deferred Deletion Enabled: true
Deferred Deleted Device Count: 0
Library Version: 1.02.146 (2017-12-18)
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: cfd04396dc68220d1cecbe686a6cc3aa5ce3667c
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: 949e6fa
Security Options:
seccomp
Profile: default
Kernel Version: 4.15.11-1-ARCH
Operating System: Arch Linux
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.58GiB
Name: arch
ID: VKYM:3FM2:MAE7:SZPY:E4CR:6U6K:Z5SG:5A66:NEJT:K4MD:LN57:FBXM
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Username: mrkkrp
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
해당 옵션을 사용해 보았지만 --storage-opt size=20G
다음과 같이 실패했습니다.
[mark@arch stackage-head]$ docker run -it --storage-opt size=20G snoyberg/stackage:nightly bash
docker: Error response from daemon: Failed to grow rootfs:exit status 1:xfs_growfs: /dev/mapper/docker-8:3-5898903-3456c9ee1d5a83fc705125974101c89015562d0cc4c00bc5e1c97bd560dded6a-init is not a mounted XFS filesystem.
See 'docker run --help'.
~에 따르면문서이것은 작동합니다.
Arch Linux 위키를 보았는데 관련 섹션이 있습니다.
/etc/fstab
그러나 내가 아는 한 devicemapper
컨테이너의 필요에 따라 XFS 파일 시스템을 생성하는 XFS 파일 시스템이 설치되어 있지 않기 때문에 이것이 나에게 어떻게 작동하는지 잘 모르겠습니다 .
컨테이너는 이 "기본 장치 크기"보다 커질 수 없으므로 다양한 방법으로 늘려 보았습니다.
docker daemon --storage-opt dm.basesize=20G
에 따라이 오래된 게시물. 아아,--storage-opt
알 수 없는 징후로 보고되었습니다.--storage-opt dm.basesize=20G
에 전달docker run
되었으나 이번에는dm.basesize
알 수 없는 옵션으로 보고되었습니다.
답변1
그러나 XFS 파일 시스템이 /etc/fstab에 마운트되어 있지 않고 내가 이해한 바에 따르면 devicemapper는 컨테이너의 요구에 따라 XFS 파일 시스템을 생성하므로 이것이 나에게 어떤 영향을 미치는지 잘 모르겠습니다.
물론 맞습니다. 하지만 "Docker Info"에서 "Backing Filesystem: xfs"를 볼 수 있습니다. 이는 docker가 "docker-8:3-5898903-pool" 볼륨에서 동적으로 생성된 컨테이너 기본 볼륨으로 xfs를 사용함을 의미합니다.
"--storage-opt size=20G" 옵션이 저에게 효과적이었습니다.
귀하의 docker 예약 스토리지 볼륨에 확장할 공간이 충분하지 않은 것 같습니다.
다음 명령의 결과를 게시하십시오.
- LSBLK
- 항목 목록
- LVS
- VG
답변2
비활성화된 모드가 아닌 다른 모드에서 selinux 루프를 사용할 때는 주의하십시오.
SELinux를 모르는 경우 비활성화 모드(이것을 사용) 그리고 docker의 SELinux를 이해하여 올바르게 구성합니다(Docker SELinux 보안 정책).