読者です 読者をやめる 読者になる 読者になる

ksaitoの日記

日々試したことの覚え書き

Ubuntu 16.04のDockerをaufsからdevicemapperに切り替える。

Ubuntu 16.04のDockerをaufsからdevicemapperに切り替えました。 aufsで作成したコンテナは、全て削除されます。

RedHat系のコンテナでswapを追加しようと試みました。 LVMなのでサイズ変更できるかと思いましたが、下記の通りmdsetupがエラーとなりました。 aufsをdevicemapperに変えることで改善するか試しました。(結果改善しませんでした。涙)

$ docker pull oraclelinux:7.2
$ docker run -it --rm oraclelinux bash
[root@a453b4f54f10 /]# dmsetup ls
/dev/mapper/control: open failed: Operation not permitted
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
Incompatible libdevmapper (unknown version) and kernel driver (unknown version).
Command failed
[root@a453b4f54f10 /]# 

環境

使った環境は、下記の通りです。

$ grep DESC /etc/lsb-release 
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
$ docker --version
Docker version 1.12.1, build 23cf638
$ docker info | grep Storage
Storage Driver: aufs
$ 

変更

/etc/default/dockerにdevicemapperを使うようにオプションを設定します。

dockerサービスを止めてaufsで作成されたコンテナを削除します。

$ sudo systemctl stop docker
$ sudo rm -rf /var/lib/docker
$

Ubuntu 16.04のdockerは、/etc/default/dockerのオプションを読み込まないのでsystemdのお作法に従ってオプションを読み込ませるように変更します。

$ grep devicemapper /etc/default/docker 
DOCKER_OPTS="--storage-driver=devicemapper"
$ sudo cp -p /lib/systemd/system/docker.service /etc/systemd/system
$ egrep "Envi|DOCKER_OPT" /etc/systemd/system/docker.service
EnvironmentFile=/etc/default/docker
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
$ 

systemdの設定を反映してdockerを起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl start docker
$

devicemapperに切り替わりました。

$ docker info | grep Storage
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Storage Driver: devicemapper
WARNING: No swap limit support
$ 

結果は変わらず...

$ docker pull oraclelinux:7.2
7.2: Pulling from library/oraclelinux
10ec637c060c: Pull complete
Digest: sha256:583f9e880f9228894555775c720d32eb22bf09cd13009c036d8f19b3257ccb41
Status: Downloaded newer image for oraclelinux:7.2
$ docker run -it --rm oraclelinux bash
Unable to find image 'oraclelinux:latest' locally
latest: Pulling from library/oraclelinux
Digest: sha256:583f9e880f9228894555775c720d32eb22bf09cd13009c036d8f19b3257ccb41
Status: Downloaded newer image for oraclelinux:latest
[root@f7d5ae7a0107 /]# dmsetup ls
/dev/mapper/control: open failed: Operation not permitted
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
Incompatible libdevmapper (unknown version) and kernel driver (unknown version).
Command failed
[root@f7d5ae7a0107 /]#