que hub dockers desde crear contenedor container cero linux ubuntu docker lxc

linux - hub - dockers container download



Cómo iniciar el contenedor docker como servidor (3)

A la pregunta original, puede seguir algún archivo, como mencionó, para mantener el proceso en ejecución.

Para llegar al shell, en lugar de "adjuntar", tiene dos opciones:

  1. docker exec -it <container_id> /bin/bash

O

  1. ejecute ssh daemon en el contenedor, el puerto asigna el ssh y luego ssh al contenedor.

Me gustaría ejecutar un contenedor docker que aloja una aplicación web simple, sin embargo, no entiendo cómo diseñar / ejecutar la imagen como un servidor. Por ejemplo:

docker run -d -p 80:80 ubuntu:14.04 /bin/bash

Esto iniciará y cerrará inmediatamente el contenedor. En su lugar podemos iniciarlo de forma interactiva:

docker run -i -p 80:80 ubuntu:14.04 /bin/bash

Esto funciona, ¿pero ahora tengo que mantener abierto el shell interactivo para cada contenedor que se está ejecutando? Preferiría simplemente iniciarlo y ejecutarlo en segundo plano. Un hack estaría usando un comando que nunca devuelve:

docker run -d -p 80:80 {image} tail -F /var/log/kern.log

Pero ahora ya no puedo conectarme al shell para inspeccionar qué está sucediendo si la aplicación está funcionando.

¿Hay alguna forma de iniciar el contenedor en segundo plano (como lo haríamos para una máquina virtual), de una manera que permita adjuntar / desconectar una shell del host? ¿O me estoy perdiendo completamente el punto?


El argumento final para docker run es el comando para ejecutarse dentro del contenedor. Cuando ejecuta la docker run -d -p 80:80 ubuntu:14.04 /bin/bash , está ejecutando bash en el contenedor y nada más. Realmente desea ejecutar su aplicación web en un contenedor y mantener ese contenedor vivo, por lo que debe docker run -d -p 80:80 ubuntu:14.04 /path/to/yourapp .

Pero su aplicación probablemente depende de alguna configuración para ejecutarse. Si lee su configuración a partir de variables de entorno, puede usar los argumentos -e key=value con la docker run . Si su aplicación necesita un archivo de configuración para estar en su lugar, probablemente debería usar un Dockerfile para configurar primero la configuración.

Este artículo proporciona un buen ejemplo completo de cómo ejecutar una aplicación de nodo en un contenedor.


Los usuarios de la ventana acoplable tienden a asumir que un contenedor es una máquina virtual completa, mientras que el concepto de diseño de la ventana acoplable se centra más en la contenedorización óptima en lugar de imitar la máquina virtual dentro de un contenedor.

Ambos son correctos, sin embargo, algunos detalles de la implementación no son fáciles de familiarizarse al principio. Estoy tratando de resumir algunas de las diferencias de implementación de una manera que sea más fácil de entender.

  1. SSH

SSH sería la forma más sencilla de ir dentro de una VM (o contenedor) de Linux, sin embargo, muchas plantillas acopladas no tienen el servidor ssh instalado. Creo que esto se debe a razones de optimización y seguridad para el contenedor.

  1. acoplar acoplador

la conexión de la ventana acoplable puede ser útil si se trabaja fuera de la caja. Sin embargo, al momento de escribir, no es estable - https://github.com/docker/docker/issues/8521 . Puede estar asociado con la configuración de SSH, pero no está seguro de cuándo está completamente arreglado.

  1. Prácticas recomendadas de docker (nsenter y etc)

Algunas alternativas (o las mejores prácticas en algún sentido) recomendadas por Docker en https://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/

Básicamente, esta práctica separa los elementos mutables de un contenedor y los asigna a algunos lugares en un host docker para que puedan manipularse desde fuera del contenedor y / o persistir. Podría ser una buena práctica en el entorno de producción, pero no ahora, cuando haya más proyectos relacionados con la ventana acoplable alrededor del entorno de desarrollo y de preparación.

  1. línea de comando de bash

"docker exec -it {container id} bash" cloud es una herramienta muy útil y práctica para ingresar a la máquina.

  1. Algunos conceptos básicos

    • "docker run" crea un nuevo contenedor para que los cambios anteriores no se guarden.
    • "docker start" iniciará un contenedor existente, por lo que los cambios anteriores aún estarán en el contenedor, sin embargo, debe encontrar la identificación de contenedor correcta entre muchas con una misma imagen-id. Necesidad de "docker commit" para suprimir las versiones si se desea.
    • Ctrl-C detendrá el contenedor al salir. Usted querrá agregar "&" al final para que el contenedor pueda ejecutarse en segundo plano y le dé un aviso al presionar la tecla enter.