Vamos a instalar Docker en Proxmox, para ellos vamos a utilizar un contenedor Linux (LXC) con Ubuntu 20.04 donde instalaremos Docker .

Proxmox -> Ubuntu 20.04 (LXC) -> Docker

Para este Stack estoy utilizando:

Proxmox 6.2-15
Ubuntu 20.04 (LXC)
Docker 19.03.8

Descargar Template Ubuntu 20.04 (LXC)

Vamos a descargar el Template LXC de Ubuntu 20.04  para ello vamos a:

Nodo -> Local (mi caso) -> Content -> Templates -> Ubuntu 20.04 -> Download

Proxmox: Instalar Docker en un LXC con Ubuntu

Crear el Contenedor:

Ahora vamos a crear el contendor con el Template de Ubuntu 20.04 que hemos descargado.

Vamos a nuestro nodo (Click derecho) -> Create CT

Puedes Utilizar el Hostname que quieras, vamos a poner todo muy básico, pongo las opciones que estoy usando ahora mismo pero puedes adaptarlas a tus necesidades:

Hostname: docker 1
Unprivileged container: Marcado
Template: ubuntu-20.04-standard_20.04-1_amd64.tar.gz
Disk size: 50GB (Depende del uso que le daras pero luego peudes ampliarlo)
CPU Cores: 4 
Memory: 1024 MB 
Swap: 1024 MB
IP: 192.168.178.140/24
Gateway: 192.168.178.1
Firewall: OFF (Opcional)
Start after created: DESMARCADO (Importante!)
Proxmox: Instalar Docker en un LXC con Ubuntu

Proxmox: Instalar Docker en un LXC con Ubuntu
Proxmox: Instalar Docker en un LXC con Ubuntu

Es importante no iniciar el contendor después de crearlo porque vamos a modificar algunas opciones, para ellos vamos a:

"Contenedor Docker1" -> Options -> Features -> Edit

Dentro de las Features debemos de marcar Keyct y Nesting (Virtualización anidada) porque docker va a necesitar esto para poder iniciar.

Proxmox: Instalar Docker en un LXC con Ubuntu

Marcamos y ya podemos iniciar el contendor.

Instalar Docker dentro del Contenedor Ubuntu 20.04 (LXC)

Ahora debemos de conectarnos al SSH del contendor, para ello podemos ir a la opción Console del panel web o mejor aun utilizar Putty para conectarnos.

En caso de utilizar Putty usaría la IP que pusimos antes "192.168.178.140" en mi caso.

Para loguearnos usamos el nombre de usuario root y la contraseña que pusimos al crear el VM (en caso de haberle puesto alguna).

Una vez logueados vamos a actualizar el sistema e instalar docker con estos comandos.

apt update && apt upgrade -y # Actualiza el sistema
apt install docker.io -y # Instala Docker
systemctl start docker # Inicia el Servicio de Docker
systemctl enable docker # Inicia los contenedores de Docker al iniciar el LXC

Con esto ya tendriamos Docker instalado y iniciado en el Contenedor.  Si quieres comprobar que la version de Docker puedes hacerlo con este comando:

docker --version
# Docker version 19.03.8, build afacb8b7f0

En los siguientes pasos vamos a darle algunas funcionalidades extra a nuestro Docker, pero son pasos Opcionales.

Instalar Docker Compose (Opcional)

Docker compose nos va a ayudar mucho si vamos a crear conexiones entre contenedores o iniciar varios contenedor juntos, también esto es muy usado en muchos proyectos para facilitar la configuración de tus contenedores.

Instalamos Curl en caso de no tenerlo, por lo general los contenedores vienen con lo mínimo instalado así que es muy probable que no tengas curl instalado por defecto.

apt install curl -y

Ahora vamos a la web de Docker Compose y copiamos el comando que nos darn por defecto, ahora mismo el comando para la version de Docker Compose  1.27.4 es este:

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

https://docs.docker.com/compose/install/

Damos los permisos:

sudo chmod +x /usr/local/bin/docker-compose

Y por ultimo comprobamos que todo haya ido bien:

docker-compose --version
# docker-compose version 1.27.4, build 40524192

Instalar Portainer (Opcional):

Portainer es una GUI para docker que esta muy bien, es muy intuitiva y tiene muchas opciones que nos librara de aprender tantos comandos de Docker para administrarlo por consola. Te recomiendo instalarlo si eres principiante porque te ahorrar muchísimo tiempo mientras te vas familiarizando con los comandos.

docker volume create portainer_data # Creara un Volumen persistente para los datos
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Nota: Todas estos parámetros puedes configurarlo a tu gusto pero no entrare en detalles para no hacer el post demasiado largo, quizás haga otro post sobre esto mas adelante y lo pongo por aquí.

Abrimos el panel web con la IP que utilizamos y el puerto 9000

http://192.168.178.140:9000 (En mi caso)

Por ultimo damos los datos que nos piden, el nombre de usuario y contraseña no hace falta que sean los mismo que pusimos al crear el contenedor y es aconsejable utilizar alguno distinto en caso vayamos a abrir al exterior nuestro panel web.

https://www.portainer.io/installation/