¿Cómo instalar Docker en linux y no morir en el intento?

Hace rato que no escribo nada y quería hacer algo sencillo y apto para todo público. Cada vez son más las personas que empiezan a estudiar programación y a veces está bueno tener un tutorial explicado en lenguaje amigo.

Prerequisitos

Cómo dije antes, vamos a necesitar tener una máquina virtual con linux para este tutorial, voy a poner los comandos para el mundo RHEL y el mundo Ubuntu

Ubuntu

Primero vamos a actualizar el listado de paquetes.
$ sudo apt update

Desinstalamos versiones viejas.
$ sudo apt-get remove docker docker-engine docker.io containerd runc
(Si recién instalas la máquina, apt-get debería decirte que esos paquetes no estan instalados).

Instalamos los paquetes que permiten a apt hablar HTTPS
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common

Agregamos la clave GPG del repositorio oficial de Docker

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Agregamos el repositorio de docker a apt sources:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

Actualizamos la lista de paquetes.
sudo apt-update

Instalamos docker:
$ sudo apt install docker-ce

Una vez finalizada la instalación chequeamos que el servicio esté corriendo:
$ sudo systemctl status docker

La salida del comando debería ser algo similar a esto

Output
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-09-22 15:08:39 UTC; 2min 55s ago
     Docs: https://docs.docker.com
 Main PID: 10195 (dockerd)
    Tasks: 16
   CGroup: /system.slice/docker.service
           ├─10195 /usr/bin/dockerd -H fd://
           └─10113 docker-containerd --config /var/run/docker/containerd/containerd.toml

En este punto docker ya está instalado, pero requiere algunas configuraciones extra.

Red Hat / CentOS

Primero vamos a borrar instalaciones viejas de Docker:

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

(Si la imagen del sistema operativo es nueva, debería decirnos que no encuentra los paquetes)

Instalamos las yum-utils y seteamos el respositorio:

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Instalamos la ultima versión de Docker Engine y conteinerd:

$ sudo yum install docker-ce docker-ce-cli containerd.io

Iniciamos Docker:

$ sudo systemctl start docker

En este punto docker ya está instalado.

Permisos

Por defecto, el comando docker solo puede ser ejecutado por el usuario root o un usuario en el grupo docker.

Para evitar tener que tipear sudo cada vez que usamos docker hay que agregar nuestro usuario al grupo de docker.

$ sudo usermod -aG docker ${USER}

Otra opción es agregar el usuario de forma explicita, por ejemplo:
$ sudo usermod -aG docker username

Para aplicar los permisos es importante que hagamos logoff con el usuario y hagamos login nuevamente.

Una vez hecho esto. Deberíamos poder correr comandos de docker.

Por ejemplo:
$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef28984514bcec35d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.