Probando un VPS desde cero (2) – Docker

Hoy continúo con mi VPS jeje

Ahora toca instalar Docker y Docker Compose, para dejarlo todo preparado para instalar las cositas que necesitemos.

Docker

Seguiré las instrucciones de este link https://docs.docker.com/engine/install/ubuntu/.

Siguiendo las instrucciones de la instalación por el método de repositorios.

# desinstalar versiones previas u obsoletas
sudo apt-get remove docker docker-engine docker.io containerd runc

# configurar repositorio
sudo apt-get update && \
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

sudo mkdir -p /etc/apt/keyrings &&
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# instalar docker 
## si el update da error hay algo mal en los permisos
sudo apt-get update 

## instalar docker engine
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# verificar instalacion de docker
sudo docker run hello-world

Tras todo esto, tenemos Docker instalado mediante el método de repositorios. Y el último comando no debería descargar una imagen hello-world y ejecutarla, lo que nos mostrará en pantalla un texto que empieza con Hello from Docker!

Todo ok, podemos seguir.

Pasos a realizar tras la instalación de Docker

Siguiendo las instrucciones de este link https://docs.docker.com/engine/install/linux-postinstall/, me doy cuenta de que no tengo otro usuario más que root en este servidor.

Podría ejecutarlo todo como root, pero entiendo que más adelante con nginx instalado y montado ya el servidor web no es muy buena idea… ya que como mínimo debería tener un usuario para trabajar y que este usuario pertenezca al grupo del usuario web del servidor.

De momento me crearé un usuario para trabajar y ya veré más adelante el tema de permisos para el usuario del servidor web

Crear usuario de trabajo

Como todo esto es para jugar y aprender y me da igual la seguridad (de momento), en vez de crear un usuario nuevo, usaré el usuario ubuntu que viene creado por defecto… pero no puedo logearme con él y no quiero estar logeándome con root y luego cambiando de usuario.

Me toca repetir los pasos del post anterior (https://nicolasblancom.com/probando-vps-desde-cero-1/ apartado “2: Copiar la clave pública al servidor”) solo que esta vez he de copiarlo en el directorio home del user ubuntu en vez del user root que fue lo que hice antes…

Tras esto, ya puedo logearme con el user ubuntu (basta con hacer ssh ubuntu@remote_host) que además es, por defecto un sudoer y puedo pasar de este usuario al usuario root sin problemas. Podemos comprobar que ubuntu existe en el fichero de sudoers.

cat /etc/sudoers.d/90-cloud-init-users

NOTA: a ver… no soy un experto… en /etc/sudoers hacen un include a todo fichero en /etc/sudoers.d/… desconozco si es una notación estándar o ese de este servidor el nombre de “90-cloud…” pero allí se lista el user ubuntu… la cosa es que puedo hacer sudo.

Usar Docker como usuario no root

Nos pide crear un grupo docker (o más bien cersiorarnos que la instalación de Docker lo ha creado) y meter nuestro usuario al grupo.

Estando logeados con el usuario ubuntu (importante porque añade el user actual al grupo…), ejecutamos:

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Ahora verificamos que podemos ejecutar el hello-world del principio sin usar el user root

docker run hello-world

Deberíamos ver el Hello from Docker! de nuevo, solo que esta vez no hemos usado sudo.

Todo ok de nuevo, puedo seguir.

Arrancar Docker con el sistema

Se supone que en Debian y Ubuntu, el servicio de Docker arranca por defecto ya… pero nos aseguramos

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Docker Compose

Con Docker ya instalado, ahora le toca a Docker Compose. Seguiré las instrucciones de este link https://docs.docker.com/compose/install/linux/ por el método de repositorios de nuevo.

sudo apt-get update
sudo apt-get install docker-compose-plugin

Comprobar versión para ver si todo ha ido bien

docker compose version

NOTA: me acabo de dar cuenta que en el script que instala Docker, ya instala también Docker Compose, así que todo ok.

¿Y ahora qué?

Pues ahora sí toca gestión Docker directamente… a bajar imágenes y a ejecutarlas. Ahora sí la primera será la de nginx. Toca hacerlo solo con Docker primero, imagen a imagen y luego juntarlas con Docker Compose. Poco a poco.