GMOのVPSサービス上でDockerを動作させようとした際、エラーとなり躓いたため対処法を残しておきます。
0.前提
Cent OS 7.1*
docker 17.03.1-ce
*dockerの前提バージョンがCentOS7以上でしたので、デフォルトのCentOS6では利用できませんでした。そのためOS再インストールを実施しております。
1.エラー内容
docker build .を実行した際、以下のエラーが表示.
mkdir /var/lib/docker/overlay/c7a432381b5391a8b9d625a136c1124a971745115da9ce074d5770fea5fb2b38-init/merged/dev/shm: invalid argument
2.原因
エラー内容で検索してみると、以下のようなチケットを発見。
docker run fails with “invalid argument” when using overlay driver on top of xfs #10294
dockerの公式サイトにも以下のような記載があるとのことで、kernelのバージョンを確認してみました。
1 2 |
To configure Docker to use the overlay storage driver your Docker host must be running version 3.18 of the Linux kernel (preferably newer) with the overlay kernel module loaded. OverlayFS can operate on top of most supported Linux filesystems. However, ext4 is currently recommended for use in production environments. |
kernelを確認したところ、確かに3.18未満のバージョンでした。
1 2 |
#cat /proc/version Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015 |
3.対処法
dockerのstorage driverを変更します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 17.03.1-ce Storage Driver: overlay Backing Filesystem: xfs Supports d_type: false Logging Driver: json-file Cgroup Driver: cgroupfs |
変更時にはdockerを止める必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# systemctl stop docker # dockerd --storage-driver=devicemapper & # INFO[0000] libcontainerd: new containerd process, pid: 31965 WARN[0000] containerd: low RLIMIT_NOFILE changing to max current=1024 max=4096 WARN[0001] devmapper: Usage of loopback devices is strongly discouraged for production use. Please use `--storage-opt dm.thinpooldev` or use `man docker` to refer to dm.thinpooldev section. INFO[0001] devmapper: Creating filesystem xfs on device docker-253:0-1182412-base INFO[0001] devmapper: Successfully created filesystem xfs on device docker-253:0-1182412-base INFO[0001] Graph migration to content-addressability took 0.00 seconds WARN[0001] mountpoint for pids not found INFO[0001] Loading containers: start. INFO[0001] Firewalld running: true INFO[0002] Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address INFO[0002] Loading containers: done. INFO[0002] Daemon has completed initialization INFO[0002] Docker daemon commit=c6d412e graphdriver=devicemapper version=17.03.1-ce INFO[0002] API listen on /var/run/docker.sock |
その後、docker build . を行い、成功を確認。
storage-driver何が適切かわかりませんでしたが、サポートされているものを適宜選択してください。
自分の環境ではaufsだとエラーになったため、devicemapperを選択しました。