Cometí estos errores de Docker más grandes y esto es lo que aprendí

Mis mayores errores de Docker no se trataban solo de errores de sintaxis o problemas de configuración. Eran el tipo de errores que condujeron a vulnerabilidades de seguridad, imágenes hinchadas e innumerables horas desperdiciadas. Cuando comencé con Docker, me centré en una cosa: hacer que funcione. No pensé en las mejores prácticas, y ciertamente no anticipé los problemas que surgirían más delante.

Esta publicación es una confesión. Te guiaré a través de los errores Docker más grandes que hice. Mi objetivo es ahorrarte los dolores de individuo y las sesiones de depuración nocturna por la sombra que pasé, para que puedas construir y usar contenedores eficientes desde el principio.

Olvidando establecer límites de medios

Un gran error

Recursos de Docker

Uno de mis errores de Docker más antiguos y costosos se olvidó de establecer límites de medios. Era nuevo en la contenedores, y pensé que el potente hardware de mi máquina era más que suficiente para manejar cualquier cosa que le arrojé.

Estaba trabajando en un tesina de ampliación restringido. Necesitaba ejecutar un trabajo por lotes que procesara un gran conjunto de datos y arrojar la salida a una almohadilla de datos. El script en sí estaba proporcionadamente, pero lo lanzé con un comando simple de ejecución de Docker.

Todo parecía proporcionadamente al principio, pero a posteriori de unos minutos, el ventilador de mi computadora portátil se puso en marcha, y el sistema comenzó a disminuir. Cuando finalmente logré rasgar el educador de mi sistema, vi que el contenedor de Docker único era un repugnante de medios, consumiendo casi toda mi RAM apto y maximizando mi CPU.

No dejó falta para el sistema activo host o mis otras aplicaciones. Tuve que forzar el contenedor para recuperar el control de mi computadora portátil. A partir de entonces, he hecho un experiencia para concretar la memoria y los límites de la CPU para cualquier contenedor intensivo en medios.

Construyendo cada imagen desde un Dockerfile

Solo usa el Docker Hub

Cuando comencé con Docker, cometí un gran error. Pensé que tenía que construir cada imagen desde cero. Comenzaría con una imagen alpina básica y luego agregaría manualmente todo lo que necesitaba, como mi verbo de programación y sus bibliotecas. Creí que esta era la mejor forma de ayudar mis imágenes pequeñas y simples.

La verdad era que este enfoque fue una gran pérdida de tiempo. Pasé horas depurando los comandos de Dockerfile solo para que funcionen cosas básicas para funcionar. Mis construcciones eran lentas, y las imágenes a menudo eran más grandes de lo que pretendía porque no sabía cómo depurar los archivos temporales correctamente.

Fue entonces cuando descubrí imágenes oficiales en Docker Hub. En área de construir mi propio entorno nodo.js, simplemente usé el nodo: imagen de 18 montañoso. Ya estaba configurado, probado y optimizado para mí. Mi Dockerfile se volvió mucho más corto y más posible de ojear.

Al usar una imagen oficial, podría dejar de preocuparme por los detalles de bajo nivel del sistema activo de mi contenedor. A posteriori de todo, estas imágenes ya contienen el software que necesita (como Node.js, Python o PostgreSQL) y están configurados con las mejores prácticas. Podría echarse en brazos en que la imagen era segura y proporcionadamente mantenida por expertos.

Intentando ejecutar múltiples servicios interiormente de un solo contenedor

Contenedor único, múltiples procesos de error

Docker múltiples servicios

Cuando comenzaba con Docker, pensé que estaba siendo inteligente. Mi primer tesina involucró un servidor web y una almohadilla de datos, y mi pensamiento original fue ponerlos a los dos en un solo contenedor. Parecía natural: un contenedor, un tesina. Pensé que sería posible de ordenar e implementar. Esta idea fue un gran error.

Mi contenedor individual se convirtió en un desastre. Si la almohadilla de datos se bloqueó, todo el contenedor cayó y llevó el servidor web con ella. No pude renovar solo una parte; Tuve que recobrar y retornar a desplegar todo el contenedor incluso para el cambio más pequeño. Como puedes imaginar, fue una pesadilla depurar.

Finalmente aprendí la idea central de Docker. Al separar mi servidor web y mi almohadilla de datos en sus propios contenedores, todo se volvió simple. Podría administrarlos por separado, escalarlos según sea necesario y actualizarlos sin afectar al otro.

Mi contenedor de servidor web podría ser rápido y imprudente, mientras que el contenedor de mi almohadilla de datos podría ser robusto y enfocado.

La confusión de la columna de comandos

Docker Run vs. Docker Start vs. Docker Exec

Comando Docker Run

Cuando comencé, una de las cosas más confusas fue la diferencia entre Docker Run, Docker Start y Docker Exec. Me encontraría tratando de usar la ejecución cuando debería deber usado Start, o me frustré porque no pude obtener un comando para trabajar interiormente de un contenedor en ejecución.

Se sentía como si todos hicieran poco similar, pero no lo hicieron, y mezclarlos causó muchos dolores de individuo. Debe comprender las diferencias entre ellos antaño de comenzar con Docker.

Ejecutando como root

Un incumplimiento peligroso

Root de usuario de Docker

Uno de los mayores errores de seguridad que cometí fue ejecutar mis contenedores como beneficiario raíz. No me di cuenta de que, por defecto, un contenedor tiene privilegios raíz. Esto significa que si un atacante encuentra una vulnerabilidad interiormente de mi contenedor, podría obtener acercamiento a la raíz a toda mi máquina host.

La opción es harto simple. Aprendí a asociar la instrucción del beneficiario a mi DockerFile. Este comando crea un beneficiario no raíz y luego cambia a él, por lo que mi aplicación se ejecuta con permisos limitados.

Las mejores prácticas de Docker

Durante mis primeros días con Docker, me centré en el destino: hacer que se ejecute un contenedor. No estaba pensando en la seguridad, la eficiencia y la capacidad de mantenimiento que vienen con buenas prácticas. Al evitar estas dificultades comunes, puede eludir un tiempo precioso de depuración y frustración.

Entonces, ¿qué estás esperando? Aprenda de mis errores y desbloquee un flujo de trabajo capaz, seguro y escalable. Mientras tanto, consulte estos contenedores Docker para aumentar su productividad.

Related Posts

Cómo preparar su teléfono para el intercambio

Hubo un tiempo en el que muchas personas no podían esperar a tirar su teléfono inteligente a un flanco cada dos primaveras (y a veces incluso con más frecuencia) para…

Apple venablo la primera modernización de ‘seguridad en segundo plano’ para iPhones, iPads y Macs para corregir el error de Safari

Apple ha publicado su primera modernización de “prosperidad de seguridad en segundo plano” para corregir un error de seguridad en su navegador web Safari en iPhones, iPads y Mac. De…

You Missed

Gomitas millonarias: oferta exprés y abolición reaccionario rápida – Remolacha

Gomitas millonarias: oferta exprés y abolición reaccionario rápida – Remolacha

Cómo preparar su teléfono para el intercambio

Cómo preparar su teléfono para el intercambio

Los ruidos, los derechos y la paz

Los ruidos, los derechos y la paz

Muere el ministro de inteligencia iraní, Ismail Jatib en ataque a Irán

Muere el ministro de inteligencia iraní, Ismail Jatib en ataque a Irán

Potencial de aportar valencia al turismo desde mipymes de mujeres

Potencial de aportar valencia al turismo desde mipymes de mujeres

Apple venablo la primera modernización de ‘seguridad en segundo plano’ para iPhones, iPads y Macs para corregir el error de Safari

Apple venablo la primera modernización de ‘seguridad en segundo plano’ para iPhones, iPads y Macs para corregir el error de Safari