Docker ha arrasado en el mundo desde su creación en 2013. Si es un programador experimentado que crea innovaciones utilizando 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 Docker. 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, el 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 herramientas Linux VMware pero requiere muy pocos recursos de CPU. 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 independientes de VMware 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 hipervisores completos 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, a menudo con la misma versión que requiere su aplicación. Conduce a varios problemas de configuración y disminuye 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 construirá el entorno por sí mismo. Aprenderá la mayor parte de esto a través de nuestros ejemplos.
Comprensión de 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, utilizará el Dockerfile para definir los paquetes utilizados por su aplicación, obtenerlos y compilarlos. Cuando comparte este Dockerfile con los colaboradores, 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 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 la ventana acoplable cli. Nuestros editores han seleccionado los comandos más utilizados, ya que te ayudarán a comprender mejor los conceptos básicos.
Comandos básicos de Docker para principiantes
Discutimos los comandos fundamentales de docker en la siguiente sección. Lo ayudarán a poner en marcha sus propios contenedores y le brindarán información muy necesaria sobre Docker.
1. Crear un contenedor usando imágenes de Docker Hub
Docker Hub es el repositorio oficial de Docker para imágenes de Docker. Contiene miles de imágenes prediseñadas creadas por desarrolladores y empresas de código abierto. Puede activar fácilmente un contenedor docker en funcionamiento 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 usando esta imagen. El indicador -it se usa para decirle a Docker que agregue el terminal integrado a este contenedor. Además, la parte de bash le dice a docker que ejecute el comando bash.
2. Mostrar contenedores de Docker
Una vez creado, querrá verificar si el contenedor se creó correctamente o no. El comando ps le dice a docker que enumere los contenedores actuales.
$ docker ps
Lo más probable es que este comando no muestre ningún contenedor en ejecución. Sucede porque aún no ha iniciado su contenedor docker. Sin embargo, puede utilizar -a bandera 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 docker start 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. Pondrá en marcha su contenedor en cuestión de segundos.
4. Conexión a su contenedor
Una vez iniciado con éxito, deberá conectarse a este contenedor para poder usarlo. El comando adjuntar ventana acoplable 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 aviso. Y ahora estás 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. Terminando el Contenedor
Puede terminar fácilmente un contenedor activo usando el comando docker stop. Es uno de los comandos docker más útiles para los 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 ejecutaba el contenedor y no tiene la ventana acoplable en su interior. Otra solución fácil es simplemente salir del contenedor usando Ctrl + D o escribiendo exit dentro del contenedor.
6. Eliminación de 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. Use 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 eliminar un contenedor en ejecución. La diferencia entre detener un contenedor y matar uno es bastante sutil, al menos en Docker. Cuando usa docker stop, primero finaliza los procesos que se ejecutan dentro del contenedor y luego finaliza el contenedor.
$ docker kill CONTAINER_ID
Pero, el comando docker kill elimina 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 estos comandos de ventana acoplable para Ubuntu.
8. Separación de contenedores
Suponga que ha comenzado y se ha adherido a un contenedor. Ahora quiere dejar este contenedor ejecutándose pero quiere usar su sesión de terminal. Dado que los comandos docker stop y kill finalizan 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 ejecución, lo desconectará de ese contenedor. Por ejemplo, simplemente presiono Ctrl y presiona P y P uno tras otro.
9. Copia de contenidos 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 Unix cp -a y copia contenidos recursivamente.
$ docker cp CONTAINER_ID:/test_file test_file
Este comando copiará el test_file del contenedor con CONTAINER_ID a la máquina anfitriona. 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 CONTAINER_ID contenedor.
11. Enumerar 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 acoplables en sus sistemas. El siguiente comando nos muestra cómo listar todas las imágenes en su máquina.
$ docker images
Simplemente llamar a este comando mostrará todas las imágenes acoplables de nivel superior junto con su tamaño, etiquetas y repositorio. La -q La opción se puede usar solo para obtener el IMAGE_ID .
12. Eliminar 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 ejecuta el comando imágenes acoplables.
Comandos productivos de Docker para desarrolladores intermedios
Si ya entendió el concepto de la ventana acoplable y los contenedores, es posible que desee ver algunas funciones avanzadas. Discutimos varios comandos útiles de la ventana acoplable destinados a aumentar la productividad de los desarrolladores en la siguiente sección.
13. Adición de 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
Ejecutar el comando anterior vinculará su directorio de trabajo actual a /var/www ubicación 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 los iniciamos. Sin embargo, Docker 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 indicamos a la ventana acoplable que ejecute este contenedor en segundo plano usando -d bandera. Eliminar esto lo llevará al contenedor tan pronto como se cree.
15. Creación de un contenedor con nombre
El –nombre La opción se puede utilizar para crear contenedores que lleven nombres específicos. Puede usarlos como reemplazo de CONTAINER_ID para la mayoría de los comandos docker. El siguiente comando muestra esto en acción.
$ docker create --name TEST nginx
Este comando extraerá la imagen de Nginx 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 de ejecución de la ventana acoplable.
16. Exposición de puertos para contenedores
Puede comunicarse con sus contenedores directamente desde el host sin usar el tiempo de ejecución de la ventana acoplable. Esto funciona mediante el uso de algún tipo de esquema de red definido por el administrador. Exponer algunos puertos para el contenedor es una de esas técnicas ampliamente extendidas.
$ docker run --name NEW nginx -p 8080:80
El comando anterior crea un contenedor llamado NUEVO y une su puerto 80 al puerto 8080 del sistema huésped. Entonces, ahora podrá enviar solicitudes/respuestas a su contenedor usando este puerto.
17. Buscar cambios en un contenedor
A menudo, el más mínimo error de configuración 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 está seguro de que un determinado 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 CONTAINER_ID contenedor.
19. Servidor de supervisión para contenedores Docker
El comando de eventos docker permite a los desarrolladores monitorear servidores para obtener información en tiempo real sobre contenedores, imágenes, complementos y mucho 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 recibirá notificaciones en tiempo real en la primera terminal.
20. Inspeccionar historiales de imágenes
Como se discutió anteriormente, las imágenes son los componentes básicos de los contenedores docker. Por lo tanto, puede ver fácilmente los historiales de imágenes para detectar problemas repentinos en un contenedor. Es sencillo usar este comando.
$ docker history IMAGE_ID
Simplemente obtenga la identificación de la imagen del contenedor usando docker ps y utilícela como se muestra arriba. Mostrará cómo se crea la imagen actual.
21. Cargando imágenes 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 usar 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 Docker lo ayudará a monitorear sus contenedores. Además, proporciona información crucial que puede ser útil para los depuradores debido a su naturaleza reveladora. Use 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 acoplables.
23. Cambio de nombre de contenedores Docker
Uno de los comandos de docker más útiles para los desarrolladores principiantes es el comando de cambio de nombre de docker. 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 Nombre para representar su contenedor. El NEW_NAME El campo 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, deberá lidiar con contenedores que están colgados o 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 utilizando -t bandera. Los valores deben ser enteros.
Comandos de Docker para redes
Es esencial tener una comunicación sin problemas 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. Listar todas las redes
La utilidad de red es una de las mejores herramientas de docker cli. Puede usarlo para enumerar todas las redes disponibles para su daemon docker de la siguiente manera.
$ docker network ls
Imprimirá cualquier red que pueda ser conectada por sus contenedores.
26. Conectarse a redes
Puede conectar rápidamente uno o más contenedores docker en ejecución a una red de múltiples 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 usar 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 NET red. También puede agregar la -f bandera para forzar la desconexión.
28. Crear redes
También puede aprovechar el comando de red docker para crear redes personalizadas entre sus contenedores. Esto se usa regularmente 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 las 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 -v marca para hacer que la salida sea más legible por humanos. Además, puede usar -f para formatear la salida basada en una plantilla.
30. Eliminar redes
El comando docker network rm se puede usar para eliminar una o más redes de contenedores muy rápidamente. El siguiente comando te demuestra esto.
$ 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 acoplables. 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 la -f bandera para apagar esto. Este comando es seguro ya que no depende del usuario.
Comandos varios de Docker
Hay muchos comandos adicionales disponibles para el demonio docker. 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. Estos son algunos comandos adicionales de la ventana acoplable para sistemas similares a Ubuntu.
32. Crear imágenes desde Dockerfile
El Dockerfile es la principal herramienta de configuración de compilación para contenedores 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, muy a menudo surgen recursos pendientes. Puede ser improductivo y puede afectar la carga de trabajo del servidor. Puede usar el siguiente comando para eliminar todos esos recursos.
$ docker system prune
Eliminará todos los contenedores, volúmenes y redes no utilizados. Además, puede agregar el -a marcar 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 docker volume se puede usar 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. Puedes pasar la -f opción para saltarse 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 centro de Docker directamente desde la terminal. Puede utilizar el comando de búsqueda de la ventana acoplable para este fin.
$ docker search nginx
Cuando se ejecute, buscará la imagen oficial de Nginx en el repositorio oficial. Puede agregar varios filtros para restringir 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 ser útil en una serie de 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 dentro. Puede hacer su personal aquí, y tan pronto como finalice el contenedor, el motor acoplable eliminará este contenedor automáticamente.
37. Obtener registros de redes en el host
Tener a mano los registros de sus redes de contenedores es extremadamente útil. Puede usar el siguiente comando para obtener registros de contenedor en la máquina host.
$ journalctl -u docker.service
Puede encontrar la mayoría de las soluciones de solución de problemas al inspeccionar el resultado de este comando.
38. Exportar sistemas de archivos de contenedor como Tars
El docker cli proporciona el comando de exportación que se puede usar 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 Docker y sus contrapartes del servidor con los siguientes comandos.
$ docker version
También puede obtener la versión del demonio docker 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 utilizando simplemente la ventana acoplable de comandos.
$ docker
Para obtener datos adicionales sobre los comandos secundarios, utilice la siguiente sintaxis.
$ docker command[S] --help $ docker network --help
De modo que puede ampliar fácilmente la profundidad de la documentación de cli.
Pensamientos finales
Los comandos de Docker son esenciales para los mantenedores y desarrolladores 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 Docker. Por lo tanto, las oportunidades laborales bien remuneradas también están disponibles para los graduados de informática en todo el mundo. Por lo tanto, aprender algunos de estos comandos demostrará ser una gran inversión para los futuros ingenieros. Con suerte, pudimos brindarle el conocimiento que buscaba. Coméntanos tus pensamientos y déjanos saber si tienes más preguntas sobre docker.