-
Notifications
You must be signed in to change notification settings - Fork 5
Storage
===================================
This is an advanced option, see https://docs.docker.com/engine/userguide/storagedriver/selectadriver/ for details. You can omit this and use the default storage engine for now.
Note: the default storage driver for Linux is "Device Mapper". The default settings have very poor performance and is highly recommended to use a different driver or to configure Device Mapper to use a dedicated partition.
The 2 options I recommend are * overlay2 -- requires Linux kernal 4.0+ * devicemapper properly configured
The devicemapper configuration process is failry involved but worth the effort if dont want to or cant use the overlay2 driver.
https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/
An example using devicemapper properly configured:
/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
--storage-driver=devicemapper
--storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool
--storage-opt=dm.use_deferred_removal=true
--storage-opt=dm.use_deferred_deletion=true
--tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem
--tlskey /etc/docker/server-key.pem --label provider=generic --bip=10.250.0.1/16
https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/
Hints: This process will appear to lose your containers and images, but they are perfectly safe. Docker uses different directories per storage driver /var/lib/docker/
If you are running devicemapper you will have
/var/lib/docker/devicemapper
This directory will not be touched by changing storage drivers. To get back you simply need to revert the --storeage-driver flag change. The references have directions on how to copy your containers and images if you need to. Its easier and much faster if you can rebuild new containers and pull new images, but you can copy all of your current containers and images.
test for overlay driver installed
lsmod | grep overlay
If this does not return "overlay" then you need to configure the kernal to load the overlay driver on boot.
https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/
https://adminswerk.de/overlayfs-docker-storage-driver-centos-7/
For a 1 thime test
modprobe overlay
To have it loaded on boot
echo "overlay" > /etc/modules-load.d/overlay.conf
When complete, reboot and test using docker info
It should read something like this:
$ docker info
Containers: 5
Running: 0
Paused: 0
Stopped: 5
Images: 140
Server Version: 1.12.6
Storage Driver: overlay2
Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupf
....
The "Storage Driver" value should be 'overlay2'
Docker makes use of a variety of advanced filesysytem features including logical volumes, bind mounts, sparse files. Over time it can accumulate to a large size. It’s a good idea to dedicate a volume and filesystem just for docker at /var/lib/docker –reguardless of what storage engine you use. Its best if volume is on your faster drives, and in case of problems doesn’t corrupt the rest of your system.
Don’t run docker on a network mounted filesystem if you can help it. Running on VM’s, if possible use local/persistent storage or ‘thick’ provisioned volumes.