Docker es una aplicación que simplifica el proceso de gestión de procesos de aplicaciones en contenedores. Los contenedores le permiten ejecutar aplicaciones en procesos aislados de recursos. Son similares a las máquinas virtuales, pero los contenedores son más fáciles de trasplantar, consumen menos recursos y dependen más de los recursos del sistema host.
En este artículo, Docker Community Edition (CE) se instalará y utilizará en Ubuntu 20.04. Simultáneamente, simplemente use el contenedor y la imagen, y finalmente envíe la imagen al repositorio de Docker.
Este artículo asume que tiene una cuenta de usuario con privilegios de grupo sudo, pero no root.
Si no es así, cree uno debajo de la raíz.
adduser sammy
usermod -aG sudo sammy
Esto crea un usuario con privilegios de sudo.
1: instalar Docker
Primero actualice todos los paquetes de instalación:
actualización de sudo apt
Luego instale algunos paquetes de requisitos previos para usar el paquete a través de HTTPS:
sudo apt install apt-transport-https ca -ificates curl software-properties-common
Agregue la clave GPG del repositorio oficial de Docker al sistema:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add-
Agregue el repositorio de Docker a la fuente APT:
sudo add-apt-repository "deb [arch = amd64] https://download.docker.com/linux/ubuntu focal estable"
Actualice la base de datos del paquete con el paquete Docker en el almacén recién agregado:
sudo apt update
Asegúrese de que desea instalar desde el repositorio de Docker en lugar del repositorio predeterminado de Ubuntu:
apt-cache policy docker-ce
Finalmente, Docker está realmente instalado
sudo apt install docker-ce
Docker ahora está instalado, el demonio se inicia y el proceso se iniciará la próxima vez que se habilite el sistema. Compruebe si se está ejecutando:
sudo systemctl estado de la ventana acoplable
puede ser visto:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-02-20 18:05:52 UTC; 5min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 11985 (dockerd)
Tasks: 8
Memory: 39.4M
CGroup: /system.slice/docker.service
└─11985 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...
2: ejecutar comandos de Docker sin sudo
De forma predeterminada, solo puede ejecutar comandos de la ventana acoplable como usuario raíz o usuarios en el grupo de la ventana acoplable, y el grupo de la ventana acoplable se crea automáticamente durante el proceso de instalación de Docker. Para no usar el prefijo sudo, debe unirse al grupo de doccker:
sudo usermod -aG docker $ {USER}
necesita cerrar sesión y luego iniciar sesión en la información de este grupo para que surta efecto. O esto también está bien. Me desconecté y luego me conecté. No probé los siguientes métodos.
su - $ {USER}
El comando para verificar en qué grupo estás es:
id -nG
Se debe mostrar la siguiente información
sammy sudo docker
Si agrega a alguien al grupo de la ventana acoplable, use el siguiente comando, donde nombre de usuario es el nombre de usuario de otra persona
sudo usermod -aG nombre de usuario de la ventana acoplable
El comando de la ventana acoplable que se usa más adelante en este artículo asume que está en el grupo de la ventana acoplable; de lo contrario, sudo
3: use los comandos de Docker
El uso de Docker implica pasarle una serie de opciones y comandos, seguidos de parámetros. La gramática toma la siguiente forma:
docker [opción] [comando] [argumentos]
Para ver todos los subcomandos disponibles, escriba:
docker
Para ver las opciones disponibles para un comando específico, escriba:
docker docker-subcommand --help
El siguiente comando para ver la información del sistema de la
ventana acoplable : información de la ventana acoplable
4 : Imagen de Docker
Los contenedores de Docker se crean a partir de imágenes de Docker. De forma predeterminada, Docker extrae estas imágenes de Docker Hub, que es un registro de Docker administrado por Docker, la empresa detrás del proyecto Docker. Cualquiera puede alojar sus imágenes de Docker en Docker Hub, por lo que la mayoría de las aplicaciones y distribuciones de Linux que necesita alojarán las imágenes.
Probemos un simple hola mundo:
Docker ejecutar hola-mundo
Debería mostrarse información similar a la siguiente:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Inicialmente, Docker no pudo encontrar la imagen de hello-world localmente, por lo que descargó la imagen del repositorio predeterminado Docker Hub. Después de descargar la imagen, Docker creará un contenedor basado en la imagen, ejecutará la aplicación en el contenedor y mostrará un mensaje.
Puede usar el comando docker y el subcomando de búsqueda para buscar imágenes disponibles en Docker Hub. Por ejemplo, para buscar imágenes de Ubuntu, ingrese:
docker buscar ubuntu
En la columna OFICIAL, OK representa una imagen construida y respaldada por la empresa detrás del proyecto. Después de determinar la imagen que desea usar, puede usar el subcomando pull para descargarla a su computadora.
Ejecute el siguiente comando para descargar la imagen oficial de ubuntu al local:
docker extraer ubuntu
Después de descargar la imagen, puede usar la imagen descargada con el subcomando ejecutar para ejecutar el contenedor. Como se ve en el ejemplo de hello-world, si la imagen no se descarga al ejecutar la ventana acoplable con el subcomando ejecutar, el cliente de Docker primero descargará la imagen y luego usará la imagen para ejecutar el contenedor.
Para ver la imagen que se descargó en la computadora, escriba:
imágenes de docker
La información de la pantalla es la siguiente:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest f63181f19b2f 4 weeks ago 72.9MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
5: contenedor Docker
El contenedor hello-world que se ejecuta en el paso anterior es un ejemplo de un contenedor que se ejecuta y sale después de emitir un mensaje de prueba. Los contenedores pueden ser mucho más útiles que esto y pueden ser interactivos. Después de todo, son similares a las máquinas virtuales, pero son más amigables con los recursos.
Por ejemplo, ejecutemos un contenedor usando la última imagen de Ubuntu. La combinación de los conmutadores -i y -t le permite acceder de forma interactiva al shell:
Docker ejecutar -it ubuntu
Luego está la siguiente pantalla, e ingrese el ubuntu del contenedor
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker run -it ubuntu
root@bd612e776819:/#
Primero actualice la lista de paquetes:
root@bd612e776819:/# apt update
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Por ejemplo, instale nodejs
root@bd612e776819:/# apt install nodejs
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
Luego, verifique la versión del nodo:
root@bd612e776819:/# node -v
v10.19.0
Todas las operaciones son solo para este contenedor.
Para salir, escriba:
Salida
root@bd612e776819:/# exit
exit
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
6: Administrar contenedores de Docker
Después de usar Docker por un tiempo, habrá muchos contenedores activos (en ejecución) e inactivos en su computadora. Para ver la actividad, use:
docker ps
No tengo actividad aquí, por lo que se muestra así:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Para mostrar todos los contenedores, haga esto:
docker ps -a
La pantalla es así:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 53 minutes ago Exited (0) 22 minutes ago gallant_visvesvaraya
bdbf06b1c3bc hello-world "/hello" About an hour ago Exited (0) About an hour ago nifty_benz
Para ver los contenedores creados recientemente, use -l
docker ps -l
Para iniciar un contenedor detenido, use docker start seguido del ID del contenedor o el nombre del contenedor. Comencemos el contenedor basado en Ubuntu con el ID bdbf06b1c3bc:
docker start bdbf06b1c3bc
Esta ID es diferente, como puede ver en la vista docker ps -a, lo siguiente es después del inicio y luego use docker ps para ver:
docker start bd612e776819
bd612e776819
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" About an hour ago Up 7 seconds gallant_visvesvaraya
Para detener un contenedor en ejecución, use docker stop seguido del ID o el nombre del contenedor. Esta vez, usaremos el nombre de contenedor gallant_visvesvaraya asignado por Docker:
parada de estibador gallant_visvesvaraya
Después de confirmar que el contenedor ya no es necesario, use el comando docker rm para eliminarlo nuevamente usando el ID o el nombre del contenedor. Use el comando docker ps -a para encontrar el ID del contenedor o el nombre del contenedor asociado con la imagen de hello-world y elimínelo.
docker rm nifty_benz
El siguiente es el proceso de verificar con ps -a primero y verificar después de rm. nifty_benz es el nombre que ve ps, cada uno es diferente.
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 6 hours ago Exited (0) About a minute ago gallant_visvesvaraya
bdbf06b1c3bc hello-world "/hello" 6 hours ago Exited (0) 5 hours ago nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker rm nifty_benz
nifty_benz
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd612e776819 ubuntu "/bin/bash" 6 hours ago Exited (0) 2 minutes ago gallant_visvesvaraya
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
Puede iniciar un nuevo contenedor y nombrarlo con el interruptor --name. También puede usar el modificador --rm para crear un contenedor, que se eliminará cuando se detenga. Para obtener más información sobre estas y otras opciones, consulte el comando docker run help.
Los contenedores se pueden convertir en imágenes y se pueden usar para construir nuevos contenedores. Veamos cómo funciona.
7: Confirmar cambios en el contenedor
Al iniciar una imagen de Docker, puede crear, modificar y eliminar archivos como si estuviera usando una máquina virtual. Los cambios realizados solo se aplicarán a ese contenedor. Puede iniciarse y detenerse, pero una vez que se destruye con el comando docker rm, los cambios se perderán para siempre.
Esta sección explica cómo guardar el estado del contenedor como una nueva imagen de Docker.
Después de instalar Node.js en el contenedor de Ubuntu, ahora hay un contenedor para ejecutar la imagen, pero el contenedor es diferente de la imagen utilizada para crearlo. Pero en el futuro, es posible que desee reutilizar este contenedor Node.js como base para una nueva imagen.
Luego, use el siguiente comando para confirmar los cambios en la nueva instancia de imagen de Docker.
docker commit -m "Qué le hiciste a la imagen" -a "Nombre del autor" container_id repository / new_image_name
El modificador -m se usa para enviar un mensaje, lo que le ayuda a usted y a otras personas a conocer los cambios que realizó, y -a se usa para especificar el autor. El container_id es el que anotó cuando inició la sesión interactiva de Docker anteriormente en este tutorial. A menos que se cree otro repositorio en Docker Hub, el repositorio suele ser el nombre de usuario de Docker Hub.
Por ejemplo, para el usuario sammy y el ID del contenedor es d9b100f2f636, el comando será:
docker commit -m "agregó Node.js" -a "sammy" d9b100f2f636 sammy / ubuntu-nodejs
Cuando se envía la imagen, la nueva imagen se guardará en la computadora local. Más adelante en este tutorial, aprenderá a enviar una imagen a un repositorio de Docker, como Docker Hub, para que otros puedan acceder a ella.
Volver a enumerar la imagen de Docker mostrará la nueva imagen, así como la imagen anterior:
imágenes de docker
El siguiente es el proceso de operación:
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker commit -m "added Node.js" -a "leon" bd612e776819 leon/ubuntu-nodejs
sha256:e5120a19cee69adfa4ea83f9e97934aa0ba33624ce4230b92a999c4cb4d2f75d
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
leon/ubuntu-nodejs latest e5120a19cee6 About a minute ago 167MB
ubuntu latest f63181f19b2f 4 weeks ago 72.9MB
hello-world latest bf756fb1ae65 13 months ago 13.3kB
leon@ubuntu-s-1vcpu-1gb-tor1-01:~$
8: Empuje la imagen de Docker al repositorio de Docker
Después de crear una nueva imagen a partir de una imagen existente, el siguiente paso es compartir esa imagen con amigos, el mundo entero en Docker Hub u otras bibliotecas de Docker a las que tenga acceso. Para enviar una imagen a Docker Hub o cualquier otro registro de Docker, debe tener una cuenta en él.
El primer paso es iniciar sesión en su cuenta:
docker login -u docker-registro-nombre de usuario
Si el nombre de usuario y la cuenta de inicio de sesión no coinciden:
etiqueta docker sammy / ubuntu-nodejs docker-registry-username / ubuntu-nodejs
Luego empuja:
docker push docker-registry-username / docker-image-name
Si el nombre de usuario es sammy y la imagen es ubuntu-nodejs, use el siguiente comando:
docker empujar sammy / ubuntu-nodejs
9: Algunos comandos para Ccontainer e Images
Lista de todos los ID de contenedor
docker ps -aq
Detener todos los contenedores
docker stop $ (docker ps -aq)
Eliminar todos los contenedores
docker rm $ (docker ps -aq)
Eliminar todos los espejos
docker rmi $ (docker images -q)
Este artículo se completa aprendiendo cómo instalar y usar Docker en Ubuntu 20.04 .
Eso es todo para la introducción.