Construcción de contenedores Docker con servicio SSH mediante Dockerfile

Creación de imagen base CentOS con Dockerfile

1. Preparación del archivo Dockerfile

Primero, creamos un directorio de trabajo y el archivo Dockerfile:

mkdir cont_base
cd cont_base
nano Dockerfile

El contenido del Dockerfile será:

FROM docker.io/centos
LABEL creador="admin"
RUN yum update -y && yum clean all

Explicación de las directivas:

  • FROM: define la imagen base sobre la que se construye
  • LABEL: añade metadatos a la imagen
  • RUN yum update -y: actualiza los paquetes del sistema
  • yum clean all: limpia la caché de paquetes para reducir el tamaño

2. Construcción de la imagen

docker build -t centos:v1-base -f ./Dockerfile .

3. Verificación de la imagen creada

docker images

4. Despliegue del contenedor

docker run -itd --network=none --name=cnt-001 centos:v1-base /bin/bash

5. Comprobación del estado del contenedor

docker ps

6. Asignación de IP estática con pipework

pipework eth0 cnt-001 10.0.0.50/24@10.0.0.1

7. Acceso al contenedor y verificación de red

docker exec -it cnt-001 /bin/bash
yum install -y net-tools
ifconfig


Creación de contenedor CentOS con servicio SSH

1. Cofniguración del Dockerfile

mkdir cont_ssh
cd cont_ssh
nano Dockerfile

Contenido del Dockerfile:

FROM docker.io/centos
LABEL creador="admin"
RUN yum install -y openssh-server openssh-clients net-tools sudo \
    && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" \
    && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" \
    && yum clean all
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Aspectos clave:

  • Se instalan los paquetes necesarios para el servidor SSH
  • Se generan las claves de host RSA y Ed25519 (sin passphrase con -N "")
  • EXPOSE 22 expone el puerto SSH
  • CMD inicia el servicio SSH en modo daemon

2. Construcción de la imagen SSH

docker build -t centos:v2-ssh -f ./Dockerfile .

3. Listado de imágenes

docker images

4. Creación del contenedor con SSH

docker run -itd --network=none --name=cnt-002 centos:v2-ssh

5. Verificación de ejecución

docker ps

6. Configuración de IP estática

pipework eth0 cnt-002 10.0.0.51/24@10.0.0.1

7. Acceso al conteneder

docker exec -it cnt-002 /bin/bash
ifconfig

8. Verificación del proceso SSH

ps aux | grep sshd

Nota: Si el proceso SSH no aparece, es probable que se haya añadido /bin/bash al final del comando docker run, lo que hace que bash tome precedencia sobre el CMD definido en el Dockerfile.

9. Configuración de usuario para acceso remoto

useradd -m adminusr
passwd adminusr

10. Conexión remota por SSH

Utilizando cualquier cliente SSH (como PuTTY, Terminator u OpenSSH), conectarse con:

  • IP: 10.0.0.51
  • Usuario: adminusr
  • Contraseña: la establecida en el paso anterior

Etiquetas: Docker dockerfile centos SSH container

Publicado el 7-16 16:56