Use ssh para administrar contenedores de forma remota en Docker

Para crear una imagen con el servicio SSH, hay dos formas de crear un contenedor:

1. Crear basado en el comando docker commit

{

 

Principio: abra el ssh del contenedor, asigne el puerto 22 del contenedor a un puerto específico de la máquina host,

 

docker commit: crea una nueva imagen desde el contenedor.

Sintaxis:

docker commit [OPCIONES] CONTENEDOR [REPOSITORIO [: TAG]]

Descripción de las OPCIONES:

-a: el autor de la imagen presentada;

-c: usa la instrucción Dockerfile para crear la imagen;

-m: texto explicativo en el momento de la presentación;

-p: Suspende el contenedor durante la confirmación.

 

Ejemplos:

El primer paso es extraer una imagen de ubuntu y crear un contenedor

[root @ huangxv ~] # docker pull ubuntu: 18.04

[root @ huangxv ~] # docker run -it ubuntu: 18.04 bash

root @ 561327aa197b: / #

El segundo paso es verificar la caché del paquete de actualización

root @ 561327aa197b: / # apt-get update

Puede ser un kung fu de un cigarrillo, o un paquete de cigarrillos ...

El tercer paso es instalar el servicio ssh

root @ 561327aa197b: / # apt-get install openssh-server

Se le indicará aquí ... ¿Desea continuar? 

Ya sea para instalar más el complemento ***, esto es solo una demostración, así que no lo instalaré

Para que ssh se inicie normalmente, debe existir el directorio / var / run / sshd.

root @ 561327aa197b: / # mkdir -p / var / run / sshd

root @ 561327aa197b: / # / usr / sbin / sshd -D &

 

Ver el puerto ssh del contenedor

root @ 561327aa197b: / # netstat -tunlp

 

Modifique la configuración de inicio de sesión seguro del servicio SSH y elimine las restricciones de inicio de sesión de pam:

root @ 561327aa197b: / # sed -ri 's / session required pam_loginuid.so/#session

            requerido pam_loginuid.so/g '/etc/pam.d/sshd

Creado en el directorio de usuario raíz. ssh, y copie la información de la clave pública (generalmente el archivo ssh / id_rsa.pub en el directorio de usuarios del host local, que puede generar el comando ssh-keygen -t rsa) en el archivo autorizado_claves:

 

root @ 561327aa197b: / # mkdir root / .ssh

root @ 561327aa197b: / # vi /root/.ssh/authorized_keys

Cree un archivo ejecutable run.sh que inicie automáticamente el servicio SSH y agregue permisos ejecutables:

 

root @ 561327aa197b: / # vi /run.sh

root @ 561327aa197b: / # chmod + x run.sh

El contenido del script run.sh es el siguiente:

 

        #! / bin / bash

        / usr / sbin / sshd -D

Finalmente, salga del contenedor:

 

root @ 561327aa197b: / # salida

salida

Guarde el contenedor salido como una nueva imagen sshd: ubuntu con el comando docker commit.

 

$ docker commit fc1 sshd: ubuntu

        7aef2cd95fd0c712f022bcff6a4ddefccf20fd693da2b24b04ee1cd3ed3eb6fc

Inicie el contenedor y agregue la asignación de puertos 10022-> 22. Entre ellos, 10022 es el puerto del host host y 22 es el puerto de escucha del servicio SSH del contenedor:

 

$ docker run -p 10022: 22 -d sshd: ubuntu /run.sh

        3ad7182aa47f9ce670d933f943fdec946ab69742393ab2116bace72db82b4895

 

 

}

 

2. Crear basado en Dockerfile

{

1) Crear directorio de trabajo

Primero, cree un directorio de trabajo sshd_ubuntu:

 

        $ mkdir sshd_ubuntu

        $ ls

        sshd_ubuntu

En él, cree archivos Dockerfile y run.sh:

 

        $ cd sshd_ubuntu /

        $ touch Dockerfile run.sh

        $ ls

        Dockerfile run.sh

2) Escriba el script run.sh y el archivo autorizado_claves

El contenido del archivo de script run.sh es consistente con lo anterior:

 

        #! / bin / bash

        / usr / sbin / sshd -D

Genere un par de claves SSH en el host host y cree un archivo Author_keys:

 

        $ ssh-keygen -t rsa

        ...

        $ cat ~ / .ssh / id_rsa.pub> claves_autorizadas

3) Escribir Dockerfile

El siguiente es el contenido del Dockerfile y algunos comentarios. Puede comparar el proceso de creación de la imagen con el comando docker commit anterior. Las operaciones realizadas son básicamente las mismas:

 

        # Establecer espejo heredado

        DE ubuntu: 18.04

        #Instalar el servicio ssh

        EJECUTAR apt-get install -y openssh-server

        EJECUTAR mkdir -p / var / run / sshd

        EJECUTAR mkdir -p /root/.ssh

        #Cancelar restricciones de pam

        EJECUTAR sed -ri 's / session required pam_loginuid.so/#session required

              pam_loginuid.so/g '/etc/pam.d/sshd

 

        # Copie el archivo de configuración en la ubicación correspondiente y otorgue al script el permiso de ejecución

        AGREGAR autorizado_keys /root/.ssh/authorized_keys

        AÑADIR run.sh /run.sh

        EJECUTAR chmod 755 /run.sh

 

        # Puerto abierto

        EXPONER 22

 

        # Establecer comando de inicio automático

        CMD ["/run.sh"]

4) Crear espejo

En el directorio sshd_ubuntu, use el comando docker build para crear la imagen. Observe aquí que hay un "." Al final, que indica que se utiliza el Dockerfile en el directorio actual:

 

        $ cd sshd_ubuntu

        $ docker build -t sshd: archivo docker.

Si usa Dockerfile para crear una imagen personalizada, debe tener en cuenta que Docker eliminará automáticamente la capa creada temporalmente en el medio, y también debe prestar atención a la correspondencia entre cada paso de la operación y los comandos en el Dockerfile escrito.

Después de ejecutar el comando, si ve "Compilación exitosa ***", significa que la imagen se creó correctamente. Como puede ver, la ID de la imagen generada por el comando anterior es 570c26a9de68.

5) Pruebe la imagen, ejecute el contenedor
Use la imagen sshd: dockerfile que acaba de crear para ejecutar un contenedor.
Inicie directamente el espejo y asigne el puerto 22 del contenedor al puerto local 10122:

Acoplable RUN -d -p 10122 $: 22 es el sshd: dockerfile
890c04ff8d769b604386ba4475253ae8c21fc92d60083759afa77573bf4e8af1
$ acoplable PS
puertos de contenedores de identificación el estado de la imagen creada los nombres de comandos
890c04ff8d76 el sshd:.. Dockerfile "/run.sh" Hasta 4 segundos El miembro hace 3 segundos El
0.0.0.0:10122->22/ tcp high_albattani
abre una nueva terminal en el host host y se conecta al contenedor recién creado:

$ ssh 192.168.1.200-p 10122
No se puede establecer la autenticidad del host '[192.168.1.200]: 10122 ([192.168.1.200]: 10122)'
.
La huella digital clave de ECDSA es d1: 59: f1: 09: 3b: 09: 79: 6d: 19: 16: f4: fd: 39: 1b: be: 27.
¿Estás seguro de que deseas continuar conectando (sí / no)?
Advertencia: Se agregó permanentemente '[192.168.1.200]: 10122' (ECDSA) a la lista de hosts conocidos.

root @ 890c04ff8d76: ~ # El
efecto es el mismo que en la sección anterior, y la imagen se creó con éxito.

}

Supongo que te gusta

Origin www.cnblogs.com/hxlinux/p/12725857.html
Recomendado
Clasificación