Files
kata-containers/install/docker/debian-docker-install.md
James O. D. Hunt ceae7b48e0 docs: Pin docker to version 18.06
Docker 18.09 removed devicemapper support but did not provide an
alternative. This can cause problems for users so update the install
docs to install Docker at version 18.06 (the last version that supports
devicemapper).

This is a temporary solution until either docker provide an alternative
or we find a way to work around the Docker feature being removed.

Note the extra logic required for Fedora since 18.06 is not available
for that release.

Fixes #373.

Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
2019-02-18 08:55:41 +00:00

3.1 KiB

Install Docker for Kata Containers on Debian

Note:

  1. Install Docker with the following commands:

    Notes:

    • This step is only required if Docker is not installed on the system.
    • Newer versions of Docker have removed devicemapper support so the commands below install the latest version which includes devicemapper support.
    • To remove the lock on the docker package to allow it to be updated:
      $ sudo apt-mark unhold docker-ce
      
    $ sudo apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common  
    $ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
    $ sudo add-apt-repository "deb https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
    $ sudo apt-get update
    $ sudo -E apt-get -y install --allow-downgrades docker-ce='18.06.2~ce~3-0~debian'
    $ sudo apt-mark hold docker-ce
    

    For more information on installing Docker please refer to the Docker Guide.

  2. Configure Docker to use Kata Containers by default with ONE of the following methods:

a. sysVinit

- with sysVinit,  docker config is stored in `/etc/default/docker`, edit the options similar to the following: 
   
```
$ sudo sh -c "echo '# specify docker runtime for kata-containers
DOCKER_OPTS=\"-D --add-runtime kata-runtime=/usr/bin/kata-runtime --default-runtime=kata-runtime\"' >> /etc/default/docker"
```

b. systemd

```bash
$ sudo mkdir -p /etc/systemd/system/docker.service.d/
$ cat <<EOF | sudo tee /etc/systemd/system/docker.service.d/kata-containers.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D --add-runtime kata-runtime=/usr/bin/kata-runtime --default-runtime=kata-runtime
EOF
```

c. systemd Docker daemon.json

Add the following definitions to `/etc/docker/daemon.json`:

```bash
$ sudo sh -c "echo '{
  \"default-runtime\": \"kata-runtime\",
  \"runtimes\": {
    \"kata-runtime\": {
      \"path\": \"/usr/bin/kata-runtime\"
    }
  }
}' >> /etc/docker/daemon.json"
```
  1. Restart the Docker systemd service with one of the following (depending on init choice):

    a. sysVinit

    $ sudo /etc/init.d/docker stop
    $ sudo /etc/init.d/docker start
    

    to watch for errors:

    tail -f /var/log/docker.log
    

    b. systemd

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    
  2. Run Kata Containers

    You are now ready to run Kata Containers:

    $ sudo docker run busybox uname -a
    

    The previous command shows details of the kernel version running inside the container, which is different to the host kernel version.