Comandos de instalación y funcionamiento básico de Docker (¡imágenes y textos detallados!)
Directorio de artículos
- Comandos de instalación y funcionamiento básico de Docker (¡imágenes y textos detallados!)
- 1. Introducción a Docker
- En segundo lugar, instale Docker
-
- 1. Instale la última versión del entorno de versión dependiente de Docker
- 2. Configure la fuente de imagen de Alibaba Cloud de la versión de la comunidad de Docker.
- 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.
- 4. Configure el acelerador de imágenes de Alibaba Cloud
- 5. Optimización de la red
- Tres comandos básicos
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
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内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
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
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
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
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
5. Optimización de la red
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
service network restart
systemctl restart docker
Tres comandos básicos
Ver información de la versión de la ventana acoplable
docker version
1. Operación para duplicar
Encuentra el espejo especificado
docker search 服务名
例如:
docker search nginx
Descargar espejo
docker pull 服务名
例如:
docker pull nginx
Ver información de espejo
docker images
docker inspect 镜像的ID
例如
docker images
docker inspect f6d0b4767a6c
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
Eliminar espejo
docker rmi 镜像的ID
docker rmi 仓库名:镜像名
例如:
docker rmi f6d0b4767a6c
docker images
docker rmi nginx:test
docker images
Almacenamiento de espejo
docker save -o 存放镜像的位置 仓库名:镜像名
例如:
docker save -o /opt/nginx_latest nginx:latest
Cargando imagen
方法一:
docker load < 本地导出的镜像名
方法二:
docker --input 本地导出的镜像名
例如:
docker load < nginx_latest
docker load --input nginx_latest
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 列出所有的容器,包括未运行的容器
Crea un contenedor
docker create [选项] 镜像运行的程序
-i:让容器的标准输入保持打开
-t:让Docker分配一个伪终端
例;
docker create -it nginx:latest /bin/bash
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
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
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//退出容器
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
Eliminar contenedor
docker rm 容器ID
例如:
docker rm 4d8dcf51a4ef
//批量删除容器
docker ps -a | awk '{print "docker rm "$1}' | bash
3. Operaciones para depósitos privados
Crea un almacén privado
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
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
Etiquetado
docker tag nginx:latest 192.168.2.4:5000/nginx
Sube la imagen al almacén privado
docker push 192.168.2.4:5000/nginx
Obtenga una lista de repositorios privados
curl -XGET http://192.168.2.4:5000/v2/_catalog
//显示上传成功
(""repositories":[""nginx"")
Descarga de repositorios privados
先移除原有的
docker rmi 192.168.2.4:5000/nginx
再下载测试下
docker pull 192.168.2.4:5000/nginx
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/
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
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
Visite
192.168.2.4:49153 en el navegador para
acceder directamente a la página de inicio de nginx
Especificar mapeo de puertos
docker run -d -p 40000:80 nginx
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容器名:别名