Docker ha conquistado el mundo desde su creación en 2013. Si es un programador experimentado que crea innovaciones con pilas modernas, es probable que haya trabajado con Docker o, al menos, haya oído hablar de él. No se preocupe si es un principiante y le resulta difícil comprender la ventana acoplable. Hemos preparado esta guía para presentar la ventana acoplable a los principiantes y describimos los 40 comandos de la ventana acoplable más útiles. Aunque Docker no se trata solo de comandos e interfaces, un dominio de los comandos básicos lo ayudará a visualizar su funcionamiento casi sin esfuerzo.
Fundamentos de Docker
Hace seis años, Docker comenzó como un proveedor de virtualización a nivel de sistema operativo que permitía a los desarrolladores implementar sus productos dentro de contenedores. Puede pensar en los contenedores como mini máquinas virtuales. Proporciona funcionalidades similares a las Linux pero requiere recursos de CPU muy bajos. Como resultado, las empresas pueden implementar miles de productos en una sola plataforma.
Docker logra este consumo de recursos de bajo nivel por su diseño. Proporciona menos aislamiento que las máquinas invitadas de VMware independientes y elimina muchas funciones no deseadas que no requieren las aplicaciones que se ejecutan en los servidores. Por lo tanto, elegir uno de Docker e como VMware depende únicamente de los requisitos del proyecto.
Otra característica útil de la ventana acoplable es que proporciona entornos exactos para sus productos. Suponga que está creando una aplicación móvil y desea compartir el proyecto con otros colaboradores. Por lo general, necesitan descargar las bibliotecas y los marcos exactos con la misma versión que requiere su aplicación. Conduce a varios problemas de configuración y reduce significativamente los esfuerzos de desarrollo.
Dado que Docker crea una imagen del entorno del producto, todos sus colaboradores pueden descargar esta imagen y usarla independientemente de la configuración de su sistema. Docker buscará y creará el entorno por sí solo. Aprenderá la mayor parte de esto a través de nuestros ejemplos.
Entendiendo Dockerfile
En Docker, el Dockerfile es el componente que nos permite definir el entorno de una herramienta. No es más que un archivo de texto que contiene instrucciones escritas en un formato que el tiempo de ejecución de la ventana acoplable puede entender. Crear y administrar Dockerfiles es sencillo. Así que dejaremos el estudio sintáctico de Dockerfiles para otro día.
En la práctica, usará Dockerfile para definir los paquetes que usa su aplicación, recuperarlos y compilarlos. Cuando comparte este Dockerfile con los colaboradores, estos pueden configurar fácilmente el entorno mediante el uso de la ventana acoplable para crear esta imagen. Con suerte, este conocimiento simple pero esencial será suficiente para ayudarlo a comprender los comandos que discutimos hoy.
Comandos de Docker útiles para dominar
Docker ha crecido enormemente desde sus inicios. Hoy ofrece múltiples servicios que abarcan diferentes necesidades de virtualización. Por lo tanto, hay una gran cantidad de comandos disponibles para docker cli. Nuestros editores han seleccionado ya que le ayudarán a comprender mejor los conceptos básicos.
Comandos básicos de Docker para principiantes
Discutimos los comandos fundamentales de la ventana acoplable en la siguiente sección. Le ayudarán a hacer girar sus propios contenedores y le proporcionarán información muy necesaria sobre la ventana acoplable.
1. Cree un contenedor con imágenes de Docker Hub
El Hub acoplable es el repositorio oficial del estibador de imágenes ventana acoplable. Contiene miles de imágenes prediseñadas creadas por empresas y desarrolladores de código abierto. Puede activar fácilmente un contenedor de ventana acoplable que funcione utilizando una imagen de este repositorio.
$ docker create -it ubuntu:xenial bash
El comando anterior extrae la imagen de Ubuntu Xenial de Docker Hub y crea un contenedor con esta imagen. La marca -it se usa para indicarle a Docker que agregue la terminal integrada a este contenedor. Además, la parte bash le dice a Docker que ejecute el comando bash.
2. Enumere los contenedores de Docker
Una vez creado, querrá comprobar si el contenedor se creó correctamente o no. El comando ps le dice a Docker que enumere los contenedores actuales.
$ docker ps
Es probable que este comando no muestre ningún contenedor en ejecución. Sucede porque aún no ha iniciado su contenedor de Docker. Sin embargo, puede usar la marca -a para decirle a Docker que enumere todos los contenedores.
$ docker ps -a
Este comando debería mostrar el contenedor que creó en el comando anterior.
3. Inicie su contenedor
Para usar sus contenedores en la ventana acoplable, primero deberá iniciarlos. El comando de inicio de la ventana acoplable le permite hacer esto muy rápidamente, como se muestra en el siguiente ejemplo.
$ docker start CONTAINER_ID
Aquí, CONTAINER_ID es la identificación de su contenedor. Obtendrá esto cuando ejecute el comando docker ps -a. Cópielo desde allí y utilícelo para este ejemplo. Arrancará su contenedor en segundos.
4. Conexión a su contenedor
Una vez iniciado correctamente, deberá conectarse a este contenedor para poder utilizarlo. El comando docker attach está aquí para este propósito. El siguiente comando le muestra cómo conectarse al contenedor que creó anteriormente.
$ docker attach CONTAINER_ID
Esto resultará en un cambio en su mensaje. Y ahora está dentro de un contenedor basado en Ubuntu Xenial. Lo que hagas dentro de este contenedor permanecerá dentro de él. Puede verificar el contenedor ejecutando cat / etc / issue.
5. Terminación del contenedor
Puede finalizar fácilmente un contenedor activo con el comando docker stop. Es uno de los comandos de ventana acoplable más útiles para principiantes, ya que permite salir fácilmente de un contenedor en ejecución. El siguiente comando le muestra cómo funciona esto.
$ docker stop CONTAINER_ID
Deberá ejecutar esto desde otra terminal, ya que la terminal anterior ejecutó el contenedor y no tiene ventana acoplable dentro. Otra solución fácil es simplemente salir del contenedor usando Ctrl + D o escribiendo exit dentro del contenedor.
6. Eliminar un contenedor
Dado que los contenedores son como una pequeña pieza de máquinas virtuales, puede eliminarlos fácilmente sin enfrentar las consecuencias en la máquina host. Utilice el siguiente comando para eliminar el contenedor que creó anteriormente.
$ docker rm CONTAINER_ID
Eliminará el contenedor al instante. Sin embargo, también se eliminarán todos sus archivos y configuraciones realizadas dentro de este contenedor. Por lo tanto, asegúrese de moverlos a otro lugar si los necesita en el futuro próximo.
7. Matar un contenedor
Docker también permite a los usuarios matar un contenedor en ejecución. La diferencia entre detener un contenedor y matar uno es bastante sutil, al menos en la ventana acoplable. Cuando usa docker stop, primero termina los procesos que se ejecutan dentro del contenedor y luego termina el contenedor.
$ docker kill CONTAINER_ID
Pero, el comando docker kill mata todo el proceso del contenedor que se ejecuta en la máquina host. Esto puede provocar una configuración incorrecta no deseada o dañar los procesos del contenedor. Por lo tanto, tenga cuidado al usar dichos comandos de la ventana acoplable para Ubuntu.
8. Desmontaje de contenedores
Suponga que ha comenzado y se ha unido a un contenedor. Ahora desea dejar este contenedor en ejecución, pero desea utilizar su sesión de terminal. Dado que los comandos de la ventana acoplable detener y matar terminan el contenedor, no puede usarlos para su propósito.
Ctrl+P Ctrl+Q
Si mantiene presionada la combinación de teclas anterior dentro de un contenedor en funcionamiento, lo separará de ese contenedor. Por ejemplo, simplemente mantengo presionada la tecla Ctrl y presiono P y Q uno tras otro.
9. Copia de contenido entre contenedores y el sistema de archivos
A menudo, es posible que desee copiar los archivos de configuración de su producto actual desde el contenedor y al sistema de archivos o incluso a otros contenedores. El comando docker cp le permite hacer esto. Actúa como el comando cp -a de Unix y copia el contenido de forma recursiva.
$ docker cp CONTAINER_ID:/test_file test_file
Este comando copiará test_file del contenedor con CONTAINER_ID a la máquina host. El siguiente nos muestra cómo copiar un documento del host a un contenedor.
$ docker cp test_file CONTAINER_ID:/test_file
10. Ejecución de comandos dentro de contenedores
Aunque puede ejecutar comandos directamente desde un contenedor en ejecución, es posible que no desee adjuntar contenedores todo el tiempo, especialmente si tiene cientos de contenedores. Dado que este es un escenario común, el tiempo de ejecución de la ventana acoplable proporciona un comando sólido para ejecutar comandos específicos del contenedor desde la instancia de terminal del administrador.
$ docker exec CONTAINER_ID command
Esto le permitirá ejecutar el comando dentro del contenedor CONTAINER_ID .
11. Enumere todas las imágenes de Docker
Las imágenes de Docker son el componente básico de los contenedores. Como debes recordar, los contenedores se crean utilizando una imagen como base. Es normal que los desarrolladores tengan varias imágenes de Docker en sus sistemas. El siguiente comando nos muestra cómo listar todas las imágenes en su máquina.
$ docker images
El simple hecho de llamar a este comando mostrará todas las imágenes de la ventana acoplable de nivel superior junto con su tamaño, etiquetas y repositorio. La opción -q se puede utilizar para obtener solo IMAGE_ID .
12. Eliminación de imágenes de Docker
A veces, es posible que desee eliminar una o más imágenes de la ventana acoplable que ya no son necesarias. El siguiente comando muestra cómo hacer esto.
$ docker rmi <IMAGE_ID>
Sin embargo, si la imagen está etiquetada por varios repositorios, deberá eliminarla de la siguiente manera.
$ docker rmi REPOSITORY:TAG
Puede encontrar esta información cuando ejecute el comando docker images.
Comandos productivos de Docker para desarrolladores intermedios
Si ya ha comprendido el concepto de ventana acoplable y contenedores, es posible que desee ver algunas funciones avanzadas. En la siguiente sección, analizamos varios comandos útiles de la ventana acoplable destinados a aumentar la productividad de los desarrolladores.
13. Agregar volúmenes persistentes para contenedores
Entonces, cuando eliminamos un contenedor, todos los datos asociados con él se pierden. Docker permite a los desarrolladores crear ” volúmenes ” que proporcionan almacenamiento persistente para estos datos. Los volúmenes son simplemente un mecanismo que vincula su contenedor a un espacio predefinido en su sistema de archivos.
$ docker create -it -v $(pwd):/var/www ubuntu:xenial bash
La ejecución del comando anterior vinculará su directorio de trabajo actual a la ubicación / var / www de su contenedor. Ahora puede modificar archivos en su directorio actual y los cambios se reflejarán dentro de la ventana acoplable.
14. Creación y ejecución de contenedores con Docker Run
Hasta ahora, primero creamos nuestros contenedores docker y luego lo iniciamos. Sin embargo, la ventana acoplable nos permite hacer ambas cosas con un solo comando. Consulte el siguiente ejemplo para ver cómo funciona.
$ docker run -it -d ubuntu:xenial bash
Cuando ejecute este comando, obtendrá la imagen de Xenial, creará el contenedor y lo iniciará con bash. Sin embargo, no verá el efecto directamente en su terminal. Esto se debe a que le hemos indicado a la ventana acoplable que ejecute este contenedor en segundo plano con la marca -d . Eliminar esto lo llevará al contenedor tan pronto como se cree.
15. Creación de un contenedor con nombre
La opción –name se puede utilizar para crear contenedores que tengan nombres específicos. Puede usarlos como reemplazo de CONTAINER_ID para la mayoría de los comandos de la ventana acoplable. El siguiente comando muestra esto en acción.
$ docker create --name TEST nginx
Este comando imagen de de Docker Hub y creará el contenedor llamado TEST en este caso. Ahora puede iniciarlo y adjuntar su sesión para usar el contenedor. Funciona igual con el comando docker run.
16. Puertos expuestos para contenedores
Puede comunicarse con sus contenedores directamente desde el host sin usar el tiempo de ejecución de la ventana acoplable en absoluto. Esto funciona mediante el uso de algún tipo de esquemas de red definidos por el administrador. Exponer algunos puertos para el contenedor es una técnica tan generalizada.
$ docker run --name NEW nginx -p 8080:80
El comando anterior crea un contenedor llamado NEW y vincula su puerto 80 al puerto 8080 del sistema host. Entonces, ahora podrá enviar solicitudes / respuestas a su contenedor usando este puerto.
17. Busque cambios en un contenedor
A menudo, la más mínima configuración incorrecta puede provocar problemas no deseados y tardar horas en depurarse. El comando docker diff resulta útil en muchos de estos casos. Puede usarlo para inspeccionar cualquier cambio en el sistema de archivos de su contenedor.
$ docker diff CONTAINER_ID
Entonces, si sabe con certeza que cierto contenedor está completamente en buen estado, puede usar este comando de vez en cuando para ver los cambios en el sistema de archivos de este contenedor.
18. Creación de una nueva imagen a partir de contenedores modificados
Docker permite a los desarrolladores crear una imagen completamente nueva basada en los cambios de un contenedor ya existente. Esto se utilizará cuando desee crear varios contenedores para diferentes fases de su aplicación.
$ docker commit CONTAINER_ID REPOSITORY:TAG
El comando anterior creará una nueva imagen usando el contenedor CONTAINER_ID .
19. Servidor de supervisión para contenedores Docker
El comando de eventos de la ventana acoplable permite a los desarrolladores en sobre contenedores, imágenes, complementos y muchos más. Puede probar esto en su sistema usando dos shells de línea de comandos.
$ docker events
Ingrese el comando anterior en el primer shell. Ahora genere un contenedor docker en otro caparazón. Ejecute algunos comandos de la ventana acoplable dentro de ese contenedor y obtendrá notificaciones en tiempo real en la primera terminal.
20. Inspeccionar historiales de imágenes
Como se mencionó anteriormente, las imágenes son los componentes básicos de los contenedores de la ventana acoplable. Por lo tanto, puede ver fácilmente los historiales de imágenes para detectar problemas repentinos en un contenedor. Es sencillo utilizar este comando.
$ docker history IMAGE_ID
Simplemente obtenga el ID de imagen del contenedor usando docker ps y utilícelo como se muestra arriba. Mostrará cómo se crea la imagen actual.
21. Carga de imágenes de Docker desde Tars
Otra gran característica de la ventana acoplable es la capacidad de cargar imágenes desde tar. También permite a los usuarios cargar imágenes desde la entrada estándar. La sintaxis del comando de carga se muestra a continuación.
$ docker load < IMAGE.tar.gz
También puede utilizar el siguiente comando.
$ docker load --input IMAGE.tar
Ahora enumere las imágenes de su ventana acoplable para verificar los efectos de estos comandos.
22. Mostrar información de todo el sistema sobre Docker
Ver la información de todo el sistema sobre el tiempo de ejecución de la ventana acoplable lo ayudará a monitorear sus contenedores. Además, proporciona información crucial que puede ser útil para los depuradores debido a su naturaleza reveladora. Utilice el siguiente comando para mostrar esto en su sistema host.
$ docker info
Aunque aparentemente simple, este comando proporcionará una gran cantidad de información sobre la máquina host y los contenedores de la ventana acoplable.
23. Cambiar el nombre de los contenedores de Docker
Uno de los comandos de la ventana acoplable más útiles para los desarrolladores iniciales es el comando de cambio de nombre de la ventana acoplable. Es un comando simple que simplemente cambia el nombre del contenedor, pero tiene un gran significado para los principiantes.
$ docker rename CONTAINER NEW_NAME
Puede utilizar CONTAINER_ID o el parámetro Name para representar su contenedor. El campo NEW_NAME es para el nuevo nombre del contenedor. Puede obtener tanto el nombre como la identificación de un contenedor usando el comando docker ps -a .
24. Reinicio de contenedores Docker
A menudo, tendrá que lidiar con contenedores que están colgados o que tienen algún problema nuevo. Una de las muchas razones de esto podría ser el consumo adicional de recursos. Reiniciar los contenedores debe ser lo primero que debe hacer en tales casos, como se hace con las computadoras.
$ docker restart CONTAINER[S]
De forma predeterminada, el comando anterior reiniciará su contenedor después de 10 segundos. Sin embargo, puede especificar este valor mediante el indicador -t . Los valores deben estar en números enteros.
Comandos de Docker para redes
Es esencial tener entre sus contenedores. Afortunadamente, los comandos de red de Docker te lo facilitarán. Hemos discutido solo los comandos básicos de red en la siguiente sección.
25. Lista de todas las redes
La utilidad de red es una de las mejores herramientas del docker cli. Puede usarlo para enumerar todas las redes disponibles para su demonio de la ventana acoplable de la siguiente manera.
$ docker network ls
Imprimirá todas las redes que puedan conectarse mediante sus contenedores.
26. Conectarse a redes
Puede conectar rápidamente uno o más contenedores Docker en ejecución a una red de varios hosts. El siguiente comando demuestra esto.
$ docker network connect NET CONTAINER_ID
Aquí, NET representa la red a la que desea conectarse y CONTAINER_ID representa el contenedor. También puede utilizar el nombre del contenedor en su lugar.
27. Desconectarse de las redes
Desconectar sus redes de una red también es tan fácil como conectarlas. Consulte el siguiente ejemplo para descubrir cómo funciona.
$ docker network disconnect NET CONTAINER_ID
Una vez ejecutado, este comando desconectará el contenedor de la red NET . También puede agregar el indicador -f para forzar la desconexión.
28. Crear redes
También puede aprovechar el comando docker network para crear redes personalizadas entre sus contenedores. Esto se utiliza habitualmente en la producción. El siguiente comando demuestra cómo crear redes de contenedores.
$ docker network create NET
Este comando puede tomar varias opciones adicionales para proporcionar funcionalidades mejoradas, como especificar parámetros de red. Puedes encontrar más sobre ellos aquí .
29. Ver información detallada sobre redes
El comando docker network permite a los desarrolladores monitorear la información de su red con mucho detalle. Hace que la depuración sea mucho más fácil y la configuración casi sin esfuerzo. El siguiente comando muestra un ejemplo simple de esto.
$ docker network inspect NET
Este comando proporcionará todo tipo de información disponible para la red NET . Puede usar el indicador -v para hacer que la salida sea más legible por humanos. Además, puede utilizar -f para formatear la salida según una plantilla.
30. Eliminar redes
El comando docker network rm se puede utilizar para eliminar una o más redes de contenedores muy rápidamente. El siguiente comando lo demuestra.
$ docker network rm NET
También puede eliminar en lugar de rm para este comando, ya que son alias.
31. Eliminar todas las redes no utilizadas
Docker permite a los administradores eliminar todas las redes no utilizadas. Se llama poda en términos de ventana acoplable. El siguiente comando demostrará cómo funciona esto.
$ docker network prune
Es un comando interactivo y pedirá confirmación para cada eliminación. Puede agregar el indicador -f para desactivarlo. Este comando es seguro ya que no depende del usuario.
Comandos misceláneos de Docker
Hay muchos comandos adicionales disponibles para el demonio de la ventana acoplable. Sin embargo, no podemos simplemente discutirlos todos en una sola guía. Por lo tanto, no se alarme si no encuentra algunos comandos específicos en nuestra lista. A continuación, se muestran algunos comandos de la ventana acoplable adicionales para sistemas similares a Ubuntu.
32. Generar imágenes a partir de Dockerfile
Dockerfile es la herramienta de configuración de compilación principal para contenedores de Docker. Puedes aprender a crearlos aquí . En este ejemplo, demostramos cómo crear una imagen de contenedor a partir de un Dockerfile.
$ docker build . -t APP:v1
Este comando creará la imagen usando el Dockerfile que reside en el directorio de trabajo actual. Establecerá APP como el nombre del repositorio y v1 como la etiqueta. Deberá especificar la ruta si el Dockerfile existe en algún otro directorio.
33. Eliminación de todos los recursos no utilizados
Dado que los sistemas host suelen contener cientos de contenedores, con mucha frecuencia surgen recursos colgantes. Puede ser improductivo y afectar la carga de trabajo del servidor. Puede utilizar el siguiente comando para eliminar todos esos recursos.
$ docker system prune
Eliminará todos los contenedores, volúmenes y redes que no se utilicen. Además, puede agregar la marca -a para eliminar todos los contenedores e imágenes no utilizados del tiempo de ejecución de la ventana acoplable.
34. Eliminación de volúmenes específicos
Puede eliminar fácilmente algunos volúmenes específicos que sus contenedores ya no necesitan. Es una práctica común durante la producción. El comando de volumen de la ventana acoplable se puede utilizar para este propósito, como se muestra en el siguiente ejemplo.
$ docker volume rm VOLUME_NAME
Dará como resultado la eliminación del volumen especificado. Puede pasar la opción -f para omitir las confirmaciones.
35. Búsqueda de imágenes en Docker Hub
El docker cli también permite a los desarrolladores buscar imágenes específicas en el concentrador de Docker directamente desde la terminal. Puede utilizar el comando de búsqueda de la ventana acoplable para este propósito.
$ docker search nginx
Cuando se ejecute, buscará la imagen oficial de Nginx en el repositorio oficial. Puede agregar varios filtros para acotar o especificar su búsqueda.
36. Eliminar contenedores al salir
Puede crear contenedores que se eliminarán una vez que finalice su trabajo y salga de él. Puede resultar útil en varias situaciones, como para solucionar problemas. El siguiente comando muestra esto en acción.
$ docker run --rm --it xenial /bin/bash
Este comando crea e inicia un contenedor basado en Xenial con bash ejecutándose en su interior. Puede hacer su personal aquí, y tan pronto como termine el contenedor, el motor de la ventana acoplable eliminará este contenedor automáticamente.
37. Obtener registros de redes en el host
Tener los registros de sus redes de contenedores a mano es extremadamente útil. Puede utilizar el siguiente comando para obtener registros de contenedores en la máquina host.
$ journalctl -u docker.service
Puede encontrar la mayoría de las soluciones de resolución de problemas inspeccionando el resultado de este comando.
38. Exportar sistemas de archivos contenedor como Tars
El docker cli proporciona el comando de exportación que se puede utilizar para exportar el sistema de archivos de un contenedor como un archivo tar. Consulte el siguiente comando para comprender cómo funciona.
$ docker export giant_panda > new.tar
Este comando es equivalente al siguiente comando.
$ docker export --output="new.tar" giant_panda
39. Ver información de la versión
Puede ver fácilmente la información de la versión de su cliente de Docker y las contrapartes del servidor con los siguientes comandos.
$ docker version
También puede obtener la versión del demonio de la ventana acoplable junto con la información de compilación utilizando la siguiente.
$ docker -v
40. Ver información de ayuda
La documentación de Docker es simplemente inspiradora. Puede obtener ayuda sobre el demonio general usando simplemente el comando docker.
$ docker
Para obtener datos adicionales sobre los comandos secundarios, utilice la siguiente sintaxis.
$ docker command[S] --help $ docker network --help
Para que pueda ampliar fácilmente la profundidad de la documentación de cli.
Pensamientos finales
Los comandos de Docker son esenciales para los desarrolladores y mantenedores de sistemas modernos. Es difícil explicar con precisión el impacto de Docker en las implementaciones de aplicaciones modernas. Casi todas las empresas principales han adaptado la ventana acoplable. Por lo tanto, también están disponibles para los graduados de CS en todo el mundo. Por lo tanto, aprender algunos de estos comandos será una gran inversión para los futuros ingenieros. Con suerte, pudimos brindarle el conocimiento que buscaba. Comente sus pensamientos y háganos saber si tiene más preguntas sobre Docker.