各コンテナのデフォルトのデバイスサイズを増やす方法は?

各コンテナのデフォルトのデバイスサイズを増やす方法は?

コンテナのビルド中に(コンテナ内で同じコマンドを実行しても同じことが起こります)、「デバイスに余分なスペースがありません」というエラーが発生します。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 Wikiを見ましたが、関連セクションがあります。

/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予約ストレージボリュームに拡張するのに十分なスペースがないようです。

次のコマンドの結果を公開します。

  1. LSBLK
  2. アイテム一覧
  3. LVS
  4. VG

答え2

無効モード以外のモードでselinuxループを使用するときは注意してください。

SELinuxがわからない場合は無効モード(これを使う)そしてdockerのSELinuxを理解して正しく設定します(Docker SELinuxセキュリティポリシー)。

関連情報