Uso básico de docker

Preparación de entorno de pruebas local para docker

Descripción

El entorno de desarrollo consistirá en crear una Máquina Virtual de Ubuntu 20.04 Server en Virtual Box donde haremos todas las pruebas con docker antes de desplegar en producción.

Los requísitos para seguir este tutorial son simplemente tener descargado e instalado el software de VirtualBox: https://www.virtualbox.org/wiki/Downloads

Una vez instalado es recomendable añadir el Extension Pack: https://download.virtualbox.org/virtualbox/6.1.32/Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack

Paso 1 – Creación de la máquina virtual en Virtual box

La MV la crearé con las siguientes características:

  • Nombre: Ubuntu 20.04 server
  • Disco duro: 50 GB
  • Procesador: 2 CPUs
  • Memoria RAM: 4108 MB
  • Acceso a red: Adaptador puente

Detalles:

Paso 2 – Instalación del SO

Se debe descargar la ISO de instalación de la página oficial: https://ubuntu.com/download En este tutorial se utilizará la versión 20.04 LTS.
Después deberemos introducirla en la unidad óptica de la MV

Una vez introducida la iso de instalación del SO en la unidad óptica, podremos iniciar la MV para comenzar la instalación. Lo primero será elegir el idioma.

El asistente de instalación propone una actualización disponible, la 22.02.2, que es la versión estable actual, pero es preferible no escoger una versión que no sea LTS para que tenga más soporte nuestra version instalada y para no tener que actualizar en un largo tiempo.

Las siglas LTS provienen de Long Time Support, lo cual significa soporte a largo plazo. Una LTS tiene 5 años de soporte y esto significa que durante los cinco años siguientes a la liberación de dicha versión tendremos actualizaciones importantes y de seguridad para Ubuntu y así el sistema operativo será seguro. Las versiones que no son LTS acostumbran a tener un soporte de 9 meses, aun siendo versiones estables, son las que se utilizan para probar las nuevas funcionalidades que va implantando la empresa al SO.

Desde Canonical es habitual que lancen una versión estable nueva de Ubuntu cada 6 meses, de las cuales, una de cada 4 es LTS. Suelen sacarlas en abril y en octubre, coincidiendo las versiones LTS cada abril de año par. Por eso la versión 20.04, en estos momentos aun no ha salido la versión 22.04.
Volviendo al tutorial, se debe clicar en «Continuar sin actualizar»

Se escoge el idioma del teclado. Es preferible seleccionar con la tecla espacio y clicar en Intro tan solo cuando tengamos las configuraciones efectuadas. Algunos asistentes de configuración detectan el Intro como tecla de guardar los cambios y seguir, esto podría tener la consecuencia de no poder volver atraś, aunque en Ubuntu no sea el caso.

Como se ha configurado la red «Adaptador puente» el sistema ha localizado el DHCP de mi red local y le ha dado una IP. Puede tardar unos segundos.

Por ahora no configuramos nada de la red, clicamos «Hecho»

No configuramos ningún proxy. Clicamos hecho.

Dejamos el repositorio que viene por defecto. Clicamos hecho.

El disco lo utilizaremos entero. En el caso que se quiera personalizar las particiones deberemos seleccionar «Custom storage layout»

No crearmos ninguna partición. Clicamos en Hecho

Nos pedirá confirmación ya que en este paso, si estuviesemos con un disco físico y no lógico o estuvieramos instalando encima de otro disco de MV, se borrarían los datos.

Clicamos en Continuar

Le damos el nombre al usuario principal, al servidor, el nombre de usuario de login y su contraseña. Después clicamos en Hecho.

Se instalará el servicio OpenSSH para ahorrar la instación posterior. No importaremos la identidad SSH por ahora. Clicamos en Hecho.

Nota: Si no hemos configurado bien la red no se podrá instalar.

Ahora nos ofrece una serie de servicios del que elegiremos docker. Click en Hecho

Y comenzará la instalación. Puede llevar unos minutos. Tendremos que esperar que aparezca en la parte superior «Se ha completado la instalación» y en la inferior «Reiniciar».

Después del reinicio tendremos el prompt para introducir nuestro usuario y contraseña.

Paso 3 – Configuración del SO

Se introduce el usuario y la contraseña configurado para entrar en el prompt. Este usuario tendrá privilegios sudo.

Lo primero que se debe hacer es una actualización. Revisamos que los repositorios son los correctos:

sudo nano /etc/apt/sources.list

Comprobamos las actualizaciones y las ejecutamos:

sudo apt update && sudo apt upgrade -y

Quizá tarde unos minutos, sobretodo la primera vez que se actualiza si la versión instalada es antigua sin las revisiones.

Luego se configura la IP a una estática, ya que así el servicio DHCP no cambiará ésta con el dolor de cabeza que puede suponer para los servicios y conexiones en red. La IP estática debe ser una reservada de la red local o en también se podría cambiar el tipo de red de la MV a NAT.

Para configurar la red lo haremos con el archivo de configuración de netplan:

sudo nano /etc/netplan/00-installer-config.yaml

Aplicamos los cambios con el comando:

sudo netplan apply

Si todo ha ido bien no imprimirá ningun error en pantalla.

Podemos comprobar el resultado con

ip -c a

y efectuando ping a internet u otros equipos de la red

ping google.es
ping 192.168.1.39

Se podría configurar la interfaz gráfica con:

sudo apt-get install ubuntu-desktop

Pero personalmente prefiero no hacerlo para optimizar los recursos.

También se puede instalar el programa “tasksel” para instalar distintos programas, servicios y configuraciones del sistema.

También se deben instalar los paquetes necesarios para la configuración del idioma con este comando para el español:

sudo apt install language-pack-es language-pack-es-base aspell-es myspell-es

Le decimos Y para confirmar. (En la instalación de programas con apt, si añadimos la opción -y evitamos que nos pregunte para confirmar)
Para configurar el idioma tenemos que añadir las siguientes líneas en los ficheros “/etc/environment” y “/etc/default/locale”:

LANG="es_ES.UTF-8"
LC_ALL="es_ES.UTF-8"
LANGUAGE="es_ES"

Para aplicar los cambios usamos el comando:

sudo dpkg-reconfigure locales

Marcar las opciones de español de España.

Y para el entorno gráfico seria:

sudo apt install language-pack-gnome-es language-pack-gnome-es-base

Compruebo su configuración con “locale”

Paso 4 – Configuraciones/instalaciones necesarias y recomendadas

Ahora ya deberiamos poder entrar por ssh. Con lo cual podemos salir del prompt con «exit».

Si queréis hacer un reinicio lo podéis hacer con «reboot». Para apagar con «shutdown -h now».

Abrimos la terminal y ejecutamos el siguiente comando:

ssh nombre-usuario@dirección-ip

Para mantener la comunicación encriptada dice de descargar un certificado. Se le dice «yes».

Pedirá el password del usuario y al entrar dará un resumen de documentación y del estado actual del servidor. También cambiará el prompt con el usuario y el nombre de host del servidor.

Ahora ya podemos trabajar desde aquí. Será más cómodo a la hora de copiar y pegar, revisar documentación o antiguos comandos hacia arriba, etc.

Para securizar un poco más la conexión ssh, vamos a impedir que se pueda conectar el usuario root. Editamos el archivo de configuración

sudo nano /etc/ssh/sshd_config

Buscamos la línea:

# PermitRootLogin prohibit-password

Descomentamos la línea y cambiamos a no:

PermitRootLogin no

Y para que se apliquen los cambios reiniciamos el servicio:

/etc/init.d/ssh restart

En este mismo documento podemos cambiar muchos parámetros interesantes para la seguridad. Siendo una MV no es necesario que os molestéis mucho, pero me parece que no permitir el root es una medida de autoprotección, recomiendo que no se use root más que para momentos muy concretos.

En el mismo archivo también podemos configurar un banner para cuando intentamos entrar meadiante ssh.
sudo nano /etc/ssh/sshd_config

Banner /etc/ssh/mensaje

Guardamos y cerramos el archivo. Creamos el mensaje.

sudo nano /etc/ssh/mensaje

Reiniciamos el servicio

sudo systemctl reload ssh.service

Salimos de ssh y volvemos a entrar

Paso 4.1 – Instalaciones de paquetes básicos

Cada uno puede tener una visión distinta de cuáles son los paquetes básicas a instalar después de una instalación de un servidor Linux. Personalmente son los siguientes que resumo en un comando:

sudo apt install unzip zip tree curl ufw

Como siempre, es mejor asegurarse que los repositorios están al día con «sudo apt update». Puede que algunos paquetes ya estén instalados.

También instalaremos un firewall. Comprobamos si lo tenemos

sudo ufw status

Si el comando nos devuelve «activo» o «inactivo» es que ya lo tenemos, si no, lo instalamos:

sudo apt-get install ufw

Y vamos a permitir el tráfico básico para el uso que le daremos al servidor

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Y habilitamos el servicio:

sudo ufw enable

Paso 4.2 – Instalación de docker

Antes de empezar con la instalación, nos aseguramos que no tenemos instaladas otras versiones de docker o sus dependencias:

sudo apt-get remove docker docker-engine docker.io containerd runc

Si no tienes instalado nada dirá que no puede localizar el paquete, si tienes alguna instalación la eliminará.

Ahora, se debe actualizar para tener los repositorios actuales.

sudo apt update

Si se pueden instalar paquete se pude hacer «sudo apt upgrade», a gusto.

Ahora se instalará los paquetes que son necesarios antes de la instalación de docker:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Con la opción -y instalará sin preguntar

Añadimos la clave GPG para el repositorio oficial de Docker:

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

Agregamos el repositorio:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Actualizamos de nuevo los repositorios (sudo apt update) para que se agreguen los paquetes del repositorio recien añadido. Después ya podemos instalar los paquetes docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io

Podemos comprobar el estado del servicio:

sudo systemctl status docker

Comprobamos la version.

sudo docker version

Si tenéis dudas acudid siempre a la fuente oficial: https://docs.docker.com/engine/install/ubuntu/

Para usar docker sin el sudo se debe añadir al usuario al grupo de docker:

sudo usermod -aG docker ${USER}

Para aplicar la nueva membresía de grupo se debe cerrrar la sesión del servidor y volver a iniciar o con el siguiente comando:

su - ${USER}

Pedirá la contraseña.

Se puede confirmar que ahora el usuario se agregó al grupo docker escribiendo lo siguiente:

id -nG

Podemos probar el servicio con el típico «Hola mundo»:

docker run hello-world

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

2 comentarios. Dejar nuevo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar