Docker×overlayfs最強!
ココでいってましたが。
_人人人人人人人人人人人人人人_
> コンテナが起動できない! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
[root@~]# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock shipyard/deploy start
Pulling image: shipyard/rethinkdb
Starting Rethinkdb Data
error creating shipyard rethinkdb data container: 500 Internal Server Error: mkdir /var/lib/docker/overlay/fc25305836b9a8c28e373a060b4f6b0f3f3212c3d22579cb7c63d38db964304b-init/merged/dev/shm: invalid argument
なんだこれー
現在進行形のバグでした
docker run fails with "invalid argument" when using overlay driver on top of xfs
XFS上でoverlayを使用した時にdocker runがinvalid argumentで失敗する
overlay+xfsで使用すると発生の可能性があるようです。
理由は?
It is nothing magical, just that xfs does not support RENAME_WHITEOUT and RENAME_EXCHANGE.
不思議じゃない、ただXFSが「RENAME_WHITEOUT」と「RENAME_EXCHANGE」をサポートしていないだけだ。
なんのことかよくわかりません…。
とりあえず、xfs+overlayfsは避けたほうが良さそうです。
ext4にしてみる
[root@awcikc0a ~]# docker info
Containers: 1
Images: 20
Storage Driver: overlay
Backing Filesystem: extfs
ダメだった
error creating shipyard rethinkdb data container: 500 Internal Server Error: mkdir /var/lib/docker/overlay/5653806c7445a5f0f319a380101e4d9ac3d599ee8a1b1be71be71defacbf5f24-init/merged/dev/shm: invalid argument
ext3にしてみる
ダメだった
RHEL7.1の公式ではoverlayのbackend filesystemとしてext3~4とXFSしかサポートしていないので、overlayはいまのところ見送りになりそうです。
btrfsを試す
[root@~ /]# mkfs -t btrfs -f /dev/mapper/docker-lvol0
[root@~ /]# mount /dev/mapper/docker-lvol0 /var/lib/docker
[root@~ /]# vi /etc/sysconfig/docker
=======================================================
OPTIONS='--selinux-enabled -s btrfs -g /var/lib/docker'
=======================================================
[root@~/]# systemctl start docker
[root@~/]# docker info
Containers: 0
Images: 0
Storage Driver: btrfs
Execution Driver: native-0.2
Kernel Version: 3.10.0-229.7.2.el7.x86_64
Operating System: Red Hat Enterprise Linux
[root@~]# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock shipyard/deploy start
Pulling image: shipyard/rethinkdb
5d3903bdef390ec2afb5bb1a7a0538ef040f45f8da77f1e9e9e41f5e1ef1bd35
こいつは、行けた…!!
とりあえずbtrfsを使おう。