Descripción general de los conceptos básicos de Docker

 

Tabla de contenido

editar

1. Introducción a Docker

2. La diferencia entre Docker y máquina virtual

1.1 seis aislamientos de espacio de nombres

2. El concepto central de Docker

2.1 Duplicación

2.2 Contenedor

2.3 Almacén

3. Instale Docker

3.1 Ver información de la versión de Docker

4. Operación de imagen de Docker

4.1 Espejo de búsqueda

4.2 Obtener la imagen

4.3 Descarga acelerada por espejo

4.4 Ver información de la imagen

4.5 Según el número de identificación único de la imagen, obtenga la información detallada de la imagen

4.6 Agregar una nueva etiqueta a la imagen local

4.7 Eliminar imagen

4.8 Guardar la imagen ====: guardar la imagen como un archivo local

4.9 Cargar imagen ====: Importar el archivo de imagen a la biblioteca de imágenes

4.10 Subir imagen

5. Operación del contenedor Docker

5.1 Ver el estado de ejecución del contenedor

5.2 Iniciar el contenedor

5.3 Crear e iniciar el contenedor

5.4 Terminar la operación del contenedor

5.5 Acceso a contenedores

5.6 Copiar al contenedor

5.7 Copiar archivos del contenedor al host

5.8 Exportación e importación de contenedores

5.9 Eliminar contenedor

5.10 Procesamiento por lotes


1. Introducción a Docker

      Docker es un motor contenedor de aplicaciones de código abierto, desarrollado en base al lenguaje go y siguiendo el protocolo apache2.0 de código abierto. Docker es una herramienta de código abierto para ejecutar aplicaciones en contenedores de Linux, una "máquina virtual" liviana. La tecnología de contenedores de Docker facilita la creación de un contenedor liviano, portátil y autosuficiente para cualquier aplicación en un solo host.

      El logotipo de Docker está diseñado como una ballena azul que arrastra muchos contenedores. La ballena puede considerarse como una máquina anfitriona y el contenedor puede entenderse como un contenedor aislado entre sí, y cada contenedor contiene su propia aplicación.

      El principio de diseño de Docker: crear, enviar y ejecutar cualquier aplicación, en cualquier lugar, es decir, a través de la gestión del ciclo de vida de los componentes de la aplicación, como la encapsulación, el lanzamiento, la implementación y la operación, el propósito de "encapsular una vez y ejecutar en todas partes". a nivel de componente de aplicación. Un componente aquí puede ser una aplicación, un conjunto de servicios o incluso un sistema operativo completo.

La contenerización está ganando popularidad porque los contenedores son:

● Flexible: Incluso las aplicaciones más complejas se pueden contener.

● Ligero: el contenedor utiliza y comparte el kernel del host.

● Intercambiable: las actualizaciones y mejoras se pueden implementar al instante.

● Portátil: puede construirse localmente, implementarse en la nube y ejecutarse en cualquier lugar.

●Extensible: las réplicas de contenedores se pueden aumentar y distribuir automáticamente.

●Apilable: Los servicios se pueden apilar verticalmente y al instante.

El contenedor se ejecuta de forma nativa en Linux y comparte el kernel del host con otros contenedores. Ejecuta un proceso independiente y no ocupa la memoria de ningún otro archivo ejecutable. Es muy liviano. Una máquina virtual ejecuta un sistema operativo completo y el acceso virtual a los recursos del host se realiza a través de un hipervisor, lo que requiere más recursos en comparación.

2. La diferencia entre Docker y máquina virtual

característica contenedor acoplable máquina virtual
velocidad de inicio segundo nivel nivel de minutos
Pérdida de potencia informática casi ninguno Pérdida 50%
actuación cerca de nativo más débil que
Soporte del sistema Miles Decenas de
aislamiento Aislamiento/limitación de recursos completamente aislado

Los contenedores admiten 2 tecnologías importantes en el kernel:

La esencia de Docker es un proceso de la máquina host. Docker implementa el aislamiento de recursos a través del espacio de nombres, la limitación de recursos a través de cgroup y la operación eficiente de archivos a través de la tecnología de copia en escritura (similar a los discos de la máquina virtual, como la asignación de 500 g. En realidad, no ocupa 500 g del disco físico).

1.1 seis aislamientos de espacio de nombres

espacio de nombres Parámetros de puesta en servicio del sistema contenido de cuarentena
UTS CLONE_NEWUTS Nombre de host y nombre de dominio
PIC CLONE_NEWWIPC Semáforos, colas de mensajes y memoria compartida
PID CLONE_NEWPID número de proceso
RED CLONE_NEWNET Dispositivos de red, pilas de red, puertos, etc.
MONTAR CLONE_NEWNS punto de montaje (sistema de archivos)
USUARIO CLONE_NEWUSER Usuarios y grupos de usuarios (solo admitidos por kernels posteriores a 3.8)

2. El concepto central de Docker

2.1 Duplicación

Las imágenes de Docker son la base para la creación de contenedores, similares a las instantáneas de máquinas virtuales, y pueden entenderse como una plantilla de solo lectura para el motor de contenedores de Docker. Inicie un contenedor con una imagen, un paquete ejecutable que incluye todo lo necesario para ejecutar una aplicación, incluido código, tiempo de ejecución, bibliotecas, variables de entorno y archivos de configuración. La imagen de Docker también es un paquete comprimido, pero este paquete comprimido no es solo un archivo ejecutable y un script de implementación del entorno, sino que también contiene un sistema operativo completo. Debido a que la mayoría de las imágenes se crean en función de un determinado sistema operativo, es fácil crear el mismo entorno local y remoto, que es la esencia de las imágenes de Docker.

2.2 Contenedor

Un contenedor Docker es una instancia en ejecución creada a partir de una imagen, que se puede iniciar, detener y eliminar. Cada contenedor creado está aislado e invisible entre sí para garantizar la seguridad de la plataforma. El contenedor puede considerarse como una versión simple del entorno Linux (que incluye autoridad de usuario raíz, espacio espejo, espacio de usuario y espacio de red, etc.) y las aplicaciones que se ejecutan en él.

2.3 Almacén

El almacén Docker se utiliza para almacenar imágenes de forma centralizada. Después de crear su propia imagen, puede usar el comando push para cargarla en un almacén público (Público) o en un almacén privado (Privado). La próxima vez que desee utilizar esta imagen en otra máquina, consígala del repositorio.

Las imágenes, contenedores, registros, etc. de Docker se almacenan en /var/lib/docker de forma predeterminada.

3. Instale Docker

Actualmente, Docker solo admite sistemas de 64 bits.

systemctl stop firewalld.service
setenforce 0

#安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2 

yum-utils: proporciona la herramienta yum-config-manager. mapeador de dispositivos: es un mecanismo de mapeo de dispositivos de propósito general que admite la administración de volúmenes lógicos en el kernel de Linux y proporciona una arquitectura de kernel altamente modular para implementar controladores de dispositivos de bloque para la administración de recursos de almacenamiento.

El controlador de almacenamiento del mapeador de dispositivos requiere datos persistentes del mapeador de dispositivos y lvm2

#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
docker-ce-20.10.18

systemctl start docker.service

systemctl enable docker.service 

El sistema Docker instalado tiene dos programas, el servidor Docker y el cliente Docker. El servidor Docker es un proceso de servicio responsable de gestionar todos los contenedores. El cliente Docker actúa como un controlador remoto del servidor Docker, que se puede utilizar para controlar el proceso del servidor Docker. En la mayoría de los casos, el servidor y el cliente Docker se ejecutan en la misma máquina.

3.1 Ver información de la versión de Docker

docker version

4. Operación de imagen de Docker

4.1 Espejo de búsqueda

Formato: palabra clave de búsqueda de Docker

búsqueda acoplable nginx

4.2 Obtener la imagen

Formato: nombre del repositorio de extracción de Docker [: etiqueta]

#Si no especifica una etiqueta al descargar la imagen, la última versión de la imagen en el almacén se descargará de forma predeterminada, es decir, la etiqueta seleccionada es la última etiqueta.

ventana acoplable extraer nginx

4.3 Descarga acelerada por espejo

Acceso al navegador Inicio de sesión en Alibaba Cloud: bienvenido a Alibaba Cloud, una plataforma de servicios de computación en la nube segura y estable

Obtener la configuración del acelerador espejo

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["//hqqza5e6.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

4.4 Ver información de la imagen

Una vez descargada la imagen, se almacena en /var/lib/docker. Los recursos locales relacionados con Docker se almacenan en el directorio /var/lib/docker/, donde el directorio de contenedores almacena información del contenedor, el directorio de imágenes almacena información de la imagen y el directorio overlay2 almacena archivos subyacentes de imágenes específicas.

#查看下载的镜像文件信息
cat /var/lib/docker/image/overlay2/repositories.json

#查看下载到本地的所有镜像
docker images

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    89da1fb6dcb9   2 weeks ago     187MB
centos       7         eeb6ee3f44bd   23 months ago   204MB
nginx        1.14      295c7be07902   4 years ago     109MB

REPOSITORIO: el repositorio al que pertenece la imagen;

TAG: La información de la etiqueta de la imagen, que marca diferentes imágenes en el mismo almacén;

ID DE IMAGEN: el número de identificación único de la imagen, que identifica de forma única una imagen;

CREADO: hora de creación del espejo;

TAMAÑO VIRTUAL: tamaño de imagen;

4.5 Según el número de identificación único de la imagen, obtenga la información detallada de la imagen

Formato: Docker inspecciona el número de identificación de la imagen

docker inspect 89da1fb6dcb9

4.6 Agregar una nueva etiqueta a la imagen local

Formato: nombre de la etiqueta acoplable: [etiqueta] nuevo nombre: [nueva etiqueta]

docker tag nginx:latest nginx:web

docker images | grep nginx

4.7 Eliminar imagen

Formato:

nombre del almacén de docker rmi: etiqueta # Cuando un espejo tiene varias etiquetas, simplemente elimine la etiqueta especificada

o

El número de ID de imagen de Docker RMI eliminará completamente la imagen.

Nota: Si el contenedor ha utilizado la imagen, la forma correcta es eliminar todos los contenedores que dependen de la imagen antes de eliminar la imagen.

4.8 Guardar la imagen ====: guardar la imagen como un archivo local

Formato: docker save -o almacena la imagen almacenada en el nombre del archivo

docker save -o nginx nginx:latest			#存出镜像命名为nginx存在当前目录下
ls -lh

4.9 Cargar imagen ====: Importar el archivo de imagen a la biblioteca de imágenes

Formato:

carga de la ventana acoplable <archivo depositado

      o

El archivo depositado por docker load -i

docker load < nginx

4.10 Subir imagen

De forma predeterminada, se carga en el almacén público oficial de Docker Hub y se debe registrar una cuenta para utilizar el almacén público. https://hub.docker.com puede usar el comando de inicio de sesión de Docker para ingresar el nombre de usuario, la contraseña y el correo electrónico para completar el registro e iniciar sesión. Antes de cargar la imagen, debe agregar una nueva etiqueta a la imagen local y luego usar el comando docker push para cargar.

docker tag nginx:latest soscscs/nginx:web		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								#登录公共仓库
Username:soscscs
password:abc123456
docker push soscscs/nginx:web					#上传镜像

5. Operación del contenedor Docker

Creación de contenedor: Es el proceso de cargar la imagen en el contenedor.

El contenedor recién creado está en estado detenido de forma predeterminada y no ejecuta ningún programa. Es necesario iniciar un proceso en él para iniciar el contenedor.

Formato: ventana acoplable crear [opciones] imagen

Opciones comunes:

-i: le dice al contenedor que abra la entrada estándar

-t: permite que Docker asigne un tty pseudo-terminal

-it: Combinado para realizar la interacción con el contenedor, ejecutar un shell de sesión interactivo

docker create -it nginx:latest /bin/bash

5.1 Ver el estado de ejecución del contenedor

docker ps -a #-a 选项可以显示所有的容器

 ID DEL CONTENEDOR IMAGEN COMANDO ESTADO CREADO NOMBRES DE PUERTOS

     Número de identificación del contenedor Imagen cargada Programa en ejecución Hora de creación Estado actual Nombre de asignación de puerto

5.2 Iniciar el contenedor

Formato: ID/nombre del contenedor de inicio de Docker

docker start 8b0a7be0ff58
docker ps -a

5.3 Crear e iniciar el contenedor

Puede ejecutar directamente el comando docker run, que equivale a ejecutar primero el comando docker create y luego el comando docker start. Nota: El contenedor es un terminal que coexiste con el comando de shell que se ejecuta en él. El comando ejecuta el contenedor para ejecutarlo y el comando finaliza el contenedor para salir.

De forma predeterminada, el contenedor acoplable utilizará el primer proceso dentro del contenedor, es decir, el programa con pid = 1, como base para saber si el contenedor acoplable se está ejecutando. Si el proceso con pid = 1 en el contenedor acoplable cuelga, el contenedor Docker saldrá directamente, es decir, debe haber un proceso en primer plano en el contenedor Docker; de lo contrario, se considera que el contenedor está colgado.

Cuando se utiliza Docker Run para crear un contenedor, el proceso de ejecución estándar de Docker en segundo plano es:

(1) Compruebe si la imagen especificada existe localmente. Cuando el mirror no exista, se descargará del repositorio público;

(2) Cree e inicie un contenedor usando la imagen;

(3) Asigne un sistema de archivos al contenedor y monte una capa de lectura y escritura fuera de la capa de imagen de solo lectura;

(4) Conectar una interfaz de máquina virtual desde la interfaz de puente configurada en el host al contenedor;

(5) Asigne una dirección IP en el grupo de direcciones al contenedor;

(6) Ejecute el programa de aplicación especificado por el usuario y el contenedor finalizará una vez completada la ejecución.

docker run centos:7 /usr/bin/bash -c ls /
docker ps -a					#会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了
#在后台持续运行 docker run 创建的容器

Debe agregar la opción -d después del comando docker run para que el contenedor Docker se ejecute en segundo plano como un demonio. Y el programa que se ejecuta en el contenedor no puede finalizar.

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

docker ps -a					#可以看出容器始终处于 UP,运行状态
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS         PORTS     NAMES
2592d3fad0fb   centos:7   "/usr/bin/bash -c 'w…"   2 seconds ago    Up 2 seconds             peaceful_chatelet

docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器

5.4 Terminar la operación del contenedor

Formato: ID/nombre del contenedor Docker Stop

docker stop 2592d3fad0fb

docker ps -a

5.5 Acceso a contenedores

Cuando necesite ingresar al contenedor para operaciones de comando, puede usar el comando docker exec para ingresar al contenedor en ejecución.

Formato: docker exec -it ID/nombre/bin/bash del contenedor

La opción -i significa mantener abierta la entrada del contenedor;

La opción -t le dice a Docker que asigne un pseudoterminal.

docker start 2592d3fad0fb					#进入容器前,确保容器正在运行
docker exec -it 2592d3fad0fb /bin/bash
ls
exit				#退出容器后,容器仍在运行
docker ps -a

docker run -it centos:7 bash      #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

5.6 Copiar al contenedor

echo abc123 > ~/test.txt
docker cp ~/test.txt 2592d3fad0fb:/opt/

5.7 Copiar archivos del contenedor al host

docker cp 2592d3fad0fb:/opt/test.txt ~/abc123.txt

5.8 Exportación e importación de contenedores

Los usuarios pueden migrar cualquier contenedor Docker de una máquina a otra. Durante el proceso de migración, puede utilizar el comando docker export para exportar el contenedor creado como un archivo, independientemente de si el contenedor está ejecutándose o detenido. El archivo de exportación se puede transferir a otras máquinas y la migración del contenedor se puede realizar mediante el comando de importación correspondiente.

#导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar

#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器

5.9 Eliminar contenedor

Formato: docker rm [-f] ID/nombre del contenedor

docker stop 2592d3fad0fb
docker rm 2592d3fad0fb				#删除已经终止状态的容器

docker rm -f 2592d3fad0fb			#强制删除正在运行的容器

5.10 Procesamiento por lotes

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash			#批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi		#删除none镜像

docker rm $(docker ps -a -q)		#批量清理后台停止的容器

Supongo que te gusta

Origin blog.csdn.net/m0_71888825/article/details/132274642
Recomendado
Clasificación