Introducción a la teoría de la orquestación de contenedores de Docker Compose y pasos experimentales detallados

1. Introducción a Docker Compose

1.1 Introducción a Docker Compose

  • El predecesor de Docker Compose fue Fig. Después de que Fig fue adquirido por Docker, se renombró oficialmente Compose. Compose es compatible con Fig.
  • El uso de Docker Compose ya no requiere el uso de scripts de shell para iniciar el contenedor;
  • Docker Compose es muy adecuado para escenarios en los que se combinan varios contenedores para el desarrollo.

1.2 Estructura de archivos de Docker Compose

vim docker-compose.yml
  • YAML es un formato de serialización de datos muy intuitivo con un lenguaje de marcado. El formato de archivo y las notas de escritura son los siguientes:
1.不支持制表符Tab 建缩进,需要使用空格缩进
2.通常开头缩进2个空格
3.字符后缩进1个空格,如:冒号,逗号,横杆
4.用井号注释
5.如果包含特殊字符用单引号引起来
6.布尔值必须用单引号括起来

1.3 Tres pasos utilizados por Docker componen

1.使用Dokcerfile 定义应用程序的环境
2.使用docker-compose.yml 定义构成应用程序的服务,这样它们就可以再隔离环境中一起运行
3.最后执行 docker-compose up 命令来启动并运行整个应用程序

Conceptos importantes de Redactar:

  • Proyecto: Unidad de negocio completa compuesta por un conjunto de contenedores de aplicaciones asociados, definidos en el archivo docker-compose.yml.
  • Servicio: un contenedor de aplicación puede incluir varias instancias de contenedor que ejecutan la misma imagen.

Dos, Docker redacta información de configuración

2.1 Dokcer compone comandos comunes

Comandos comunes descripción
construir Reconstruir el servicio
PD Contenedores de lista
hasta Crea e inicia el contenedor
ejecutivo Ejecutar comandos en el contenedor.
escala Especifique la cantidad de contenedores de servicios para comenzar
cima Mostrar proceso de contenedor
registros Ver la salida del contenedor
abajo Eliminar contenedores, redes, volúmenes de datos y espejos
detener / iniciar / reiniciar Detener / iniciar / reiniciar el servicio

2.2 Docker compone campos comunes de configuración

Campo descripción
construir contexto dockerfile Especifique el nombre del archivo Dockerfile para crear la ruta del contexto de la imagen
imagen Espejo especificado
mando Ejecute el comando, sobrescriba el comando predeterminado
nombre del contenedor Especifique el nombre del contenedor, porque el nombre del contenedor es único, si especifica un nombre personalizado, no puede escalar
desplegar Especifique la configuración relacionada con el servicio de implementación y operación, que solo se puede usar en el modo Swarm
ambiente Agregar variables de entorno
redes Si la red (espacio de nombres)
publicaciones Puerto de contenedor abierto, igual que -p, pero el puerto no puede ser inferior a 60
volúmenes Monte la ruta del host o el volumen de comando (similar al volumen de datos)
reiniciar Reiniciar política, predeterminada no, siempre, sin fallas, a menos que se detenga
nombre de host Nombre de host del contenedor

2.3 Redactar descripción del comando

  • Formato de uso básico
docker-compose [options] [command] [ARGS...]
  • opciones del comando docker-compose
--verbose 输出更多调试信息
--version 打印版本并退出
-f --file FILE 使用特定的 compose 模板文件,默认为docker-compose.yml
-p --project-name NAME 指定项目名称,默认使用目录名称

Tres, experimento de orquestación de Dokcer

3.1 Entorno del proyecto

centos7 虚拟机一台  IP:192.168.140.22
docker-ce 社区版已安装
本次项目以构建Nginx为主

3.2 Pasos del proyecto

3.2.1 configuración de docker-compose

  • Descargar redactar
[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • Establecer variables de entorno
[root@docker ~]# chmod 755 docker-compose
[root@docker ~]# cp -p docker-compose /usr/local/bin/
[root@docker ~]# docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

3.2.2 Construir Nginx

  • Crea un directorio de trabajo, agrega paquetes
[root@docker ~]# mkdir compose_nginx
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# mkdir nginx
[root@docker compose_nginx]# cd nginx/
[root@docker nginx]# ls
[root@docker nginx]# rz -E
rz waiting to receive.
[root@docker nginx]# ls
nginx-1.12.2.tar.gz
  • Configurar el script de inicio
[root@docker nginx]# vim run.sh
#启动脚本
#!/bin/bash
/usr/local/nginx/sbin/nginx
  • Escribir Dockerfile
[root@docker nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image
RUN yum -y update
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
  • Configurar la página del sitio web
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# mkdir wwwroot
[root@docker compose_nginx]# cd wwwroot/
[root@docker wwwroot]# vim index.html
<h1>This is my web!</h1>
  • Escribir archivo yml
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1106:80
      - 1107:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:
  • Crear imagen nginx
先确认文件位置
[root@docker compose_nginx]# ls
docker-compose.yml  nginx  wwwroot

[root@docker compose_nginx]# ls nginx/
Dockerfile  nginx-1.12.2.tar.gz  run.sh

构建镜像并启动容器
[root@docker compose_nginx]# docker-compose -f docker-compose.yml up -d	
											'//指定以docker-compose.yml文件来启动'

[root@docker compose_nginx]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                         NAMES
68093658e0bb   compose_nginx_nginx   "/run.sh"                13 seconds ago   Up 12 seconds   0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

Posibles errores al iniciar el contenedor
Inserte la descripción de la imagen aquí

解决方法:
查看yml文件中 volumes挂载目录文件是否存在;查看脚本run.sh环境是否正确

3.2.3 Verificación de acceso

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42449832/article/details/114818310
Recomendado
Clasificación