Comandos de instalación y funcionamiento básico de Docker (¡imágenes y textos detallados!)

Comandos de instalación y funcionamiento básico de Docker (¡imágenes y textos detallados!)

Directorio de artículos

1. Introducción a Docker

Docker utiliza el lenguaje Go lanzado por Google para el desarrollo y la implementación. Se basa en las tecnologías cgroup, espacio de nombres y tipo AUFS de Union FS del kernel de Linux para encapsular y aislar procesos, que es una tecnología de virtualización a nivel del sistema operativo. Dado que el proceso aislado es independiente del host y otros procesos aislados, también se denomina contenedor. La implementación inicial se basó en LXC. Desde la versión 0.7, LXC se ha eliminado y se usa el libcontainer de desarrollo propio. A partir de la 1.11, ha evolucionado aún más para usar runC y containerd.

Sobre la base de contenedores, Docker ha llevado a cabo un mayor encapsulado, desde el sistema de archivos, la interconexión de redes hasta el aislamiento de procesos, etc., lo que simplifica enormemente la creación y mantenimiento de contenedores. Esto hace que la tecnología Docker sea más portátil y más rápida que la tecnología de máquina virtual.

1. Comparación de la máquina virtual tradicional y Docker

  • La siguiente figura y tabla comparan las diferencias entre Docker y los métodos de virtualización tradicionales. La tecnología de máquina virtual tradicional consiste en virtualizar un conjunto de hardware, ejecutar un sistema operativo completo en él y luego ejecutar el proceso de aplicación requerido en el sistema; mientras que el proceso de aplicación en el contenedor se ejecuta directamente en el kernel del host y el El contenedor no tiene su propio núcleo y no hay virtualización de hardware. Por lo tanto, los contenedores son más portátiles que las máquinas virtuales tradicionales.

Comparación de la arquitectura entre la máquina virtual tradicional y Docker
Inserte la descripción de la imagen aquí
Comparación de las características de las máquinas virtuales tradicionales y Docker

característica máquina virtual envase
Hora de inicio lento rápido
Capacidad ocupada Grande (nivel de GB) Pequeño (nivel de MB)
sistema Aislamiento lógico Depende del kernel (compartido)
Soporte del sistema Generalmente docenas Una sola máquina admite miles de contenedores
rendimiento Más débil que el nativo Cerca de nativo
La seguridad Fuerte débil

2. ¿Qué es Docker?

  • Es una "máquina virtual" ligera
  • Herramientas de código abierto para ejecutar aplicaciones en contenedores de Linux

Las comillas dobles en la máquina virtual aquí se deben a que no es necesario instalar el sistema en el contenedor.

3. Escenarios de uso de Docker

Las aplicaciones empaquetadas simplifican la implementación y
se pueden migrar libremente desde el hardware subyacente (por ejemplo: migración del servidor de Tencent Cloud a
Alibaba Cloud) . El escenario típico de Docker se menciona en el sitio web de Docker:

Automating the packaging and deployment of applications(使应用的打包与部署自动化)

Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)

Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)

Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)

4. Por qué usar Docker

1) Uso más eficiente de los recursos del sistema

2) Tiempo de inicio más rápido

3) Entorno operativo consistente

4) Entrega y despliegue continuos

5) Migración más sencilla

6) Mantenimiento y expansión más fáciles

5. Estructura de tres niveles de la computación en nube

SAAS(应用即服务) devops CI/CD 持续交付/持续集成  极速迭代产品(亚马逊11.6秒)
PAAS(平台即服务) 环境(架构) docker kubernets mysql
IAAS(基础设施即服务) 硬件(服务器、网络设备、防火墙等)虚拟化、网络虚拟化——>大二层

6. Concepto básico y método de instalación de Docker

1) El concepto central de Docker

  • Reflejar
    una plantilla de solo lectura para el motor de contenedor de Docker

  • Instancia en ejecución de contenedor creada a partir de la imagen
  • Almacén
    Un lugar donde las imágenes espejo se almacenan de forma centralizada

2) Dos formas de instalar Docker en CentOS

  • Use CURL para obtener el script de instalación de Docker para la instalación
  • Use el repositorio de YUM para instalar Docker

En segundo lugar, instale Docker

1. Instale la última versión del entorno de versión dependiente de Docker

iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
yum install -y yum-utils device-mapper-persistent-data lvm2 		#在线源安装

#yum-utils提供了yum-config-manager
#Device Mapper 存储驱动程序需要device-mapper-persistent-data和lvm2
#Device Mapper是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。

Inserte la descripción de la imagen aquí

2. Configure la fuente de imagen de Alibaba Cloud de la versión de la comunidad de Docker.

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Inserte la descripción de la imagen aquí

Establecimiento de caché de metadatos Después de
actualizar la fuente de yum o configurar la fuente de yum, yum makecache se usa generalmente para generar caché;
este comando almacena en caché la información del paquete localmente con anticipación para mejorar la velocidad de búsqueda e instalación de software.

yum makecache fast

Inserte la descripción de la imagen aquí

3. Instale la ventana acoplable y configúrela para que se inicie automáticamente después de arrancar y verifique la versión de la ventana acoplable.

yum -y install docker-ce
cd /etc/docker  #这里因为还没启动docker所以还没生成目录

systemctl start docker
systemctl enable docker
cd /etc/docker
ls

ifconfig

docker version

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

4. Configure el acelerador de imágenes de Alibaba Cloud

Sitio web oficial de Alibaba Cloud: https://account.aliyun.com/
Inicie sesión en Alibaba Cloud -> Consola -> Busque el servicio de duplicación de contenedores en él -> Haga clic en el menú desplegable "Herramienta de espejo" en la esquina inferior izquierda y haga clic en en "Mirror Accelerator" para
configurar el acelerador y reiniciar el servicio de carga

tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["阿里云镜像加速地址"]
}
EOF

systemctl daemon-reload 
systemctl restart docker

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

5. Optimización de la red

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker

Inserte la descripción de la imagen aquí

Tres comandos básicos

Ver información de la versión de la ventana acoplable

docker version

Inserte la descripción de la imagen aquí

1. Operación para duplicar

Encuentra el espejo especificado

docker search 服务名
例如:
docker search nginx

Inserte la descripción de la imagen aquí

Descargar espejo

docker pull 服务名
例如:
docker pull nginx

Inserte la descripción de la imagen aquí

Ver información de espejo

docker images
docker inspect 镜像的ID
例如
docker images
docker inspect f6d0b4767a6c

Inserte la descripción de la imagen aquí

Etiqueta el espejo

Nota: la identificación del espejo permanece sin cambios después del etiquetado

docker tag 仓库名:原镜像名 仓库名:新镜像名
例如:
docker tag nginx:latest nginx:test
docker images
docker images | grep nginx

Inserte la descripción de la imagen aquí

Eliminar espejo

docker rmi 镜像的ID
docker rmi 仓库名:镜像名
例如:
docker rmi f6d0b4767a6c
docker images
docker rmi nginx:test
docker images

Inserte la descripción de la imagen aquí

Almacenamiento de espejo

docker save -o 存放镜像的位置 仓库名:镜像名
例如:
docker save -o /opt/nginx_latest nginx:latest

Inserte la descripción de la imagen aquí

Cargando imagen

方法一:
docker load < 本地导出的镜像名
方法二:
docker --input 本地导出的镜像名

例如:
docker load < nginx_latest
docker load --input nginx_latest

Inserte la descripción de la imagen aquí

Cargar imagen

docker push [OPTIONS] NAME[:TAG]

例如:按照下面的流程就可以上传到公有云,有兴趣的可以上传
#改标签
docker tag 仓库名:镜像名 用户名/仓库名:镜像名
#登录
docker login
Username:   #用户名
Password:   #密码

#上传
docker push 用户名/仓库名:镜像名

2. Operaciones para contenedores

Ver el estado de ejecución del
contenedor El estado de ESTADO del contenedor es
activo
Salido (0) es un contenedor que se ha detenido normalmente
Salido (no 0) Un contenedor que se ha detenido de forma anormal.

docker ps       #查看运行中的容器
docker ps -a    #加-a 列出所有的容器,包括未运行的容器

Inserte la descripción de la imagen aquí

Crea un contenedor

docker create [选项] 镜像运行的程序
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端

例;
docker create -it nginx:latest /bin/bash

Inserte la descripción de la imagen aquí

Iniciar, detener y reiniciar el contenedor

docker start 容器ID:启动一个或多个已经被停止的容器
docker stop 容器ID:停止一个运行中的容器
docker restart 容器ID:重启容器
例:
docker start 25827a2ed368
docker ps -a
docker stop 25827a2ed368
docker ps -a
docker restart 25827a2ed368

Inserte la descripción de la imagen aquí

Operación de contenedores

docker run [选项] 镜像 [命令] [变量]
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-c 命令表示后面的参数将会作为字符串读入作为执行的命令
-v: 绑定一个卷
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
--name="名称": 为容器指定一个名称
--link name:alias 添加链接到另一个容器,格式“--link容器名:别名”
例如:
docker run nginx
docker run -d nginx
docker run -d nginx /bin/bash -c "ls" #命令表示后面的参数将会作为字符串读入作为执行的命令

Nota: puede utilizar ejecutar por primera vez e intentar utilizar inicio / parada / reinicio para el mantenimiento posterior
Inserte la descripción de la imagen aquí

Entrar y salir del contenedor

Nota: solo puede ingresar si el contenedor se está ejecutando

docker exec [选项] 容器 命令
例:
docker exec -it 22550a179349 /bin/bash
docker exec -it 344fb940bebf /bin/bash
exit//退出容器

Inserte la descripción de la imagen aquí

Exportación e importación de contenedores

#容器导出
docker export 容器ID > 备份文件名

#容器导入(会生成镜像,而不会创建容器)
cat 备份文件名 | docker import - 仓库名:镜像名

例如:
docker export 22550a179349 > nginx_up
docker export 344fb940bebf > nginx_exited

cat nginx_up | docker import - nginx:web

Inserte la descripción de la imagen aquí

Eliminar contenedor

docker rm 容器ID
例如:
docker rm 4d8dcf51a4ef
//批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash

Inserte la descripción de la imagen aquí

3. Operaciones para depósitos privados

Crea un almacén privado

Inserte la descripción de la imagen aquí
Modifique el archivo de configuración /etc/docker/daemon.json
Nota: asegúrese de agregar una coma de símbolo en inglés después de los corchetes anteriores; de lo contrario, se informará un error

vim /etc/docker/daemon.json
{
    
    
"insecure-registries": ["192.168.2.4:5000"],     这里添加
"registry-mirrors": ["阿里云加速地址"]
}
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a

docker start 8480e3f87c8e

Inserte la descripción de la imagen aquí

Montaje del contenedor

Nota: Docker Run creará automáticamente directorios relacionados y volverá a crear el contenedor.

docker run -d -p 宿主机端口:容器内部端口 -v 宿主机目录:容器内目录 镜像
例:
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry

Inserte la descripción de la imagen aquí

Etiquetado

docker tag nginx:latest 192.168.2.4:5000/nginx

Inserte la descripción de la imagen aquí

Sube la imagen al almacén privado

docker push 192.168.2.4:5000/nginx

Inserte la descripción de la imagen aquí

Obtenga una lista de repositorios privados

curl -XGET http://192.168.2.4:5000/v2/_catalog
//显示上传成功
(""repositories":[""nginx"")

Inserte la descripción de la imagen aquí

Descarga de repositorios privados

先移除原有的
docker rmi 192.168.2.4:5000/nginx
再下载测试下
docker pull 192.168.2.4:5000/nginx

Inserte la descripción de la imagen aquí

4. Volumen de datos y contenedor de volumen de datos

Volumen de datos

La ejecución del comando docker run creará automáticamente el directorio relevante

docker run -v /var/www:/data1 --name test -it centos:7 /bin/bash

cd /data1/
touch test01

返回宿主机进行查看
ls /var/www/

Inserte la descripción de la imagen aquí

Contenedor de volumen de datos

//数据卷容器
docker run --name sjj -v /data1 -v /data2 -it centos:7 /bin/bash
//新容器挂载数据卷容器juan
docker run -it --volumes-from sjj --name test2 centos:7 /bin/bash

Inserte la descripción de la imagen aquí
Nota:
La diferencia entre el volumen de datos y el contenedor de volumen de datos. El
volumen de datos se monta en el host. El
contenedor de volumen de datos se monta entre el contenedor y el contenedor a través de –volumes-from

5. Mapeo de puertos

Mapeo de puertos aleatorio

docker run -d -P nginx

Inserte la descripción de la imagen aquí
Visite
192.168.2.4:49153 en el navegador para
acceder directamente a la página de inicio de nginx
Inserte la descripción de la imagen aquí

Especificar mapeo de puertos

docker run -d -p 40000:80 nginx

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

6. Interconexión de contenedores

//创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web1 centos /bin/bash

//创建并运行容器取名web2,链接到web1和其通信进web22容器 ping web1
docker run -itd -P --name web2 --link web1:web1 centos /bin/bash

--link name:alias                  --link容器名:别名

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_35456705/article/details/115122226
Recomendado
Clasificación