Instalar Docker en Debian 10

Instalar docker en debian 10

Instalar Docker en Debian 10 Buster

Instalar Docker en Debian 10 Buster nos va a permitir crear contenedores de manera rápida y sencilla.

La idea detrás de Docker es que podamos crear contenedore ligeros y portables para las aplicaciones software que puedan ejecutarse en cualquier máquina con Docker instalado, independientemente del sistema operativo que la máquina tenga instalado, facilitandonos los desarrollos de infraestructura.

¿Qué es un contenedor?

Este concepto  es antiguo, y viene de Linux, para comparalo con el mundo real, imaginemos un contenedor de esos que suelen llevar los barcos de por el océanos.

Cuando instalamos un softwar y queremos acceder a el como usuarios normales necesitamos que esta aplicación corra en una computadora. Pero además, dependiendo del tipo de aplicación, computadora también necesita tener instaladas una serie de programas (dependencias)  para que la aplicación se ejecute correctamente como por ejemplo: cierta versión de Java instalado, en un servidor de aplicaciones (p.e tomcat, que es el software que realmente estará ejecutando nuestra aplicación y haciendo que pueda interactuar con ella).

Docker, nos  permite almacenar en un contenedor (“una caja”, algo auto contenido, cerrado) todas aquellas cosas que nuestra aplicación necesita para ser ejecutada (java, Maven, tomcat…) incluyendo la propia aplicación. Así podemos llevar ese contenedor a cualquier máquina que tenga instalado Docker y ejecutar la aplicación sin tener que hacer nada más, ni preocuparme de qué versiones de software tiene instalada esa máquina, si tiene los elementos necesarios para que corra nuestra aplicación , si son compatibles…

Ejecutamos nuestra aplicación desde el contenedor de Docker, y dentro de él estarán todas las librerías y dependencias que necesita nuestra aplicación para funcionar correctamente.

En este post vamos a mostrar cómo instalar Docker, luego crearemos nuestro primer contenedor para estar seguros que funcione, para terminar agregaremos un usuario para que no tener que usar root para trabajar con los contenedores y las imagenes.

La imagen de debian la pueden descargar desde https://debian.org

Instalar Docker en Debian 10

Las dependencias son necesarias en cualquier sistema operativo, de lo contrario Docker no se va a intalar.


# apt-get update

Luego…

# apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

Instalar la llave publica del repositorio Docker.


# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

Verificamos que la clave sea la correcta y esté bien instalada.

# apt-key fingerprint 0EBFCD88
 
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22

Creamos el archivo de fuentes con el repo de docker.

Usamos el comando echo, aunque también podemos usar un editor.


# echo deb [arch=amd64] https://download.docker.com/linux/debian buster stable > /etc/apt/sources.list.d/docker.list

Actualizamos los repos, e instalamos Docker en Debian 10

Actualizamos los repos ya que agregamos la configuración del repo docker


# apt update

Instalamos docker desde el repo oficial.

# apt install -y docker-ce docker-ce-cli containerd.io

Verificamos que esté corriendo


~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e
Active: active (running) since Thu 2020-05-28 17:05:30 -03; 46s ago
Docs: https://docs.docker.com
Main PID: 527 (dockerd)
Tasks: 8
Memory: 137.2M
CGroup: /system.slice/docker.service
└─527 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containe


may 28 17:05:28 D10-samba dockerd[527]: time="2020-05-28T17:05:28.343067214-03:0
may 28 17:05:28 D10-samba dockerd[527]: time="2020-05-28T17:05:28.343883217-03:0
may 28 17:05:28 D10-samba dockerd[527]: time="2020-05-28T17:05:28.344062248-03:0
may 28 17:05:28 D10-samba dockerd[527]: time="2020-05-28T17:05:28.344398165-03:0
may 28 17:05:29 D10-samba dockerd[527]: time="2020-05-28T17:05:29.286092099-03:0
may 28 17:05:29 D10-samba dockerd[527]: time="2020-05-28T17:05:29.431133520-03:0
may 28 17:05:30 D10-samba dockerd[527]: time="2020-05-28T17:05:30.572889115-03:0
may 28 17:05:30 D10-samba dockerd[527]: time="2020-05-28T17:05:30.575737925-03:0
may 28 17:05:30 D10-samba systemd[1]: Started Docker Application Container Engin
may 28 17:05:30 D10-samba dockerd[527]: time="2020-05-28T17:05:30.754668848-03:0

Vamos a crear un usuario y lo agregamos al grupo docker

Creamos el usuario  fampalio y lo agregamos al grupo docker, para que pueda crear contenedores sin necesidad de estar logueados con el usuario root.


~# adduser fabian
Añadiendo el usuario `fabian' ...
Añadiendo el nuevo grupo `fabian' (1006) ...
Añadiendo el nuevo usuario `fabian' (1004) con grupo `fampalio' ...
Creando el directorio personal `/home/fabian' ...
Copiando los ficheros desde `/etc/skel' ...
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para fampalio
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
Nombre completo []:
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [S/n] S

Verificamos que agregamos el usuario al grupo docker

:~# usermod -aG docker fabian

Verificamos que todo esté bien usando el comando id

:~# id fampalio
uid=1004(fabian) gid=1006(fabian) grupos=1006(fabian),998(docker)

Creamos nuestro primer contenedor.

Docker provee un contenedor llamado hello-world cuya finalidad es verificar que docker funcione bien.

Para hacer esto vamos a usuar el usuario sin privilegios de root, en nuestro ejemplo fabián.


$ docker run hello-world
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest


Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/

Eso es todo por ahora. ¡Ya tenemos nuestro Docker funcionando!

En el siguiente post trataremos Docker Hub el repositorio de imágenes en la nube https://blog.carreralinux.com.ar/2020/06/docker_hub/