Once the docker package and dependencies have been installed, you
will want to configure storage for your containers.
Docker storage is intended to store your container's images. When you run 'docker pull <container name>' docker will store the data in this space. Containers are typically very small, and usually about 300-600MB.
Docker, by default, utilizes loopback storage devices. These create
a virtual device at /var/lib/docker/devicemapper and use local storage. Due to performance degradation with loopback devices, the recommended method of
container storage is to utilize the docker thin pool. Take a look at the contents of /etc/sysconfig/docker-storage. This will change after configuring the docker-pool.
The docker
thin pool can make use of any block device and create a thin logical
volume, and can be configured to automatically grow when new space is
added to its volume group (default.) If you have worked with VMWare ESX you'll get the idea of how a thin volume works.
To configure the docker thin pool, we will use the
docker-storage-setup file. First ensure you have a new block device (disk) added to the docker host. When added, get the device name by doing a
'fdisk -l' and identify the appropriate device.
DO NOT START THE DOCKER DAEMON YET
Replacing /dev/sdX with your block device found from 'fdisk -l':
sudo vi /etc/sysconfig/docker-storage-setup
Add the following:
DEVS=”/dev/sdX” #can be a comma separated list (replace /dev/sdX
with the device identified with fdisk -l)
VG=vg_docker #volume group name that docker will generate for the
docker-pool
Save the file.
The
docker-storage-setup script will automatically generate the
appropriate thin logical volumes and volume group when the docker
daemon starts, or by running docker-storage-setup manually. ****NOTE: There's currently a bug with
docker-storage-setup, and the block device must be 8GB or
greater.
Start the docker daemon:
sudo systemctl start docker
If you'd like, you can now enable the docker service to start at boot:
sudo systemctl enable docker
Due to the docker-pool being a LVM thin volume, you will not see the volume when running 'df -h'. To verify the volume has been configured:
Run 'lvs'
Verify
there is a new Logical Volume with the
name docker-pool.
Run 'vgdisplay'
Verify there is a new Volume Group with the name you specified in
docker-storage-setup (vg_docker from above.)
Run 'docker info'
This will display detailed info on how the block device was broken up
between metadata and data volumes, and show you the available data
storage. To learn more about thin Logical Volumes, run 'man lvmthin'.
Once you have confirmed that everything looks good, you should remove
the /etc/sysconfig/docker-storage-setup file. If you don't, I've seen the
docker service not start in some instances, and upon examining your logs, you will
find that it is due to existing partitions on the specified block
device from the /etc/sysconfig/docker-storage-setup file.
Take a look at /etc/sysconfig/docker-storage. You will see that this
was automatically configured to utilize the new docker pool.
Next: Loading Pre-built Docker Container Images
Next: Loading Pre-built Docker Container Images
No comments:
Post a Comment