Docker

On CentOS 7.2. With proxy and user namespace support.

Installation

To enable user namespace support in the kernel,

grubby --args="user_namespace.enable=1" --update-kernel=/boot/vmlinuz-3.10.0-327.10.1.el7.x86_64

Then install and start the service

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

yum -y install docker-engine
systemctl enable docker.service
systemctl start docker.service

Configuration

Create this if it doesn’t exist

mkdir /etc/systemd/system/docker.service.d

Proxy

touch /etc/systemd/system/docker.service.d/http-proxy.conf

then add this

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

User Namespace Support

touch /etc/systemd/system/docker.service.d/user-namespace.conf

then add this

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon --userns-remap=dockremap:dockremap -H fd://

Create the dockremap user and group

groupadd dockremap
useradd -g dockremap dockremap

Then create the subordinate user and group ranges

echo 'dockremap:100000:65535' >> /etc/subuid
echo 'dockremap:100000:65535' >> /etc/subgid

Working with Docker

Here’s a fantastic cheatsheet. Here’s a shorter one.

Shared Volumes

Create one in a container and give it a memorable name

docker create -v /mystuff --name mystuff_container centos:latest /bin/true

Now have other containers use it

docker run -ti --volumes-from mystuff_container centos:latest /bin/bash
  • These are persistent and won’t go away when you stop a container. Yay! You can see this by using docker inspect to figure out where that volume is (usually in /var/lib/docker some place) and taking a look inside.
  • Using the same image saves on disk space, according to the documentation.