Docker de cero a maestro (detallado)

Tabla de contenido

1. Conozca Docker primero

1.1 ¿Por qué utilizar la ventana acoplable?

1.2 Tecnología acoplable

1.3 Instalar Docker

1.4.Arquitectura Docker

1.5 Configurar el acelerador de imágenes Docker

2.Comandos comunes de Docker

2.1.Comandos relacionados con el servicio Docker

2.2.Comandos relacionados con la imagen de Docker

2.3.Comandos relacionados con el contenedor Docker

3. El volumen de datos del contenedor.

3.1 El concepto y función del volumen de datos.

3.2 Configurar el volumen de datos

4.Implementación de la aplicación Docker

4.1 Implementación de Docker MySQL

4.2.Docker implementa Redis

4.3.Tomcat de implementación de Docker

4.4.Implementación de Docker nginx

4.5.Docker implementa RabbitMQ

5. Espejo personalizado

5.1 Principio de la imagen Docker

5.2 Creación de imágenes reflejadas

5.3 El concepto de dockerfile [pesado]

5.4 Palabras clave del archivo Docker

5.5 Caso Dockerfile

Caso 1

Caso 2

Caso 3

5.6 Cargue la imagen local en el almacén de imágenes remotas de Ali

6.Idea asociada con Docker 

6.1.Docker habilita el acceso remoto

6.2.Idea para instalar el complemento Docker

7. Orquestación del servicio Docker

7.1 Descripción general

7.2.Instalación y uso de Docker Compose

8. Necesita una interfaz gráfica



1. Conozca Docker primero

1.1 ¿Por qué utilizar la ventana acoplable?

Puedo empaquetar el proyecto y la configuración de la que depende el proyecto con el software --- [espejo] --- ejecutar el espejo directamente en el entorno de prueba. No hay necesidad de preocuparse por la imposibilidad de ejecutarlo debido a diferentes entornos.  

1.2 Tecnología acoplable

Docker es un proyecto de código abierto en la nube basado en el lenguaje Go.

El objetivo principal de Docker es "compilar, enviar y ejecutar cualquier aplicación, en cualquier lugar", que es hacer que la aplicación del usuario (que puede ser una aplicación WEB o una aplicación de base de datos, etc.) y su entorno operativo puedan lograr "un espejo una vez, correr por todas partes".

La aparición de la tecnología de contenedores de Linux resuelve este problema y Docker se desarrolla sobre esta base. La aplicación se refleja y la imagen se convierte en una instancia que se ejecuta en el contenedor Docker, y el contenedor Docker es coherente en cualquier sistema operativo , lo que permite realizar múltiples plataformas y servidores. Solo necesita configurar el entorno una vez y puede implementarlo en otra máquina con un solo clic, lo que simplifica enormemente la operación.

aplicación acoplable

1.3 Instalar Docker

Docker puede ejecutarse en MAC, Windows, CentOS, UBUNTU y otros sistemas operativos.

Demostración: instale Docker en CentOS7

Título: Docker: desarrollo acelerado de aplicaciones en contenedores

Pasos a ejecutar en la máquina virtual:

# 1. Actualice el paquete yum a la última
actualización de yum
# 2. Instale el paquete de software requerido, yum-util proporciona la función yum-config-manager y los otros dos dependen del controlador de devicemapper
yum install -y yum-utils device- mapper-persistent -data lvm2
# 3. Establezca la fuente de yum: especifique el sitio web donde descarga el software de Docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce .repo
# 4. Instale Docker, presione y en la interfaz de entrada --- descargue e instale docker-ce [versión comunitaria] docker-ee [versión empresarial]
yum install -y docker-ce
# 5. Verifique la versión de Docker y verifique si la verificación es exitosa,
ventana acoplable - v

1.4.Arquitectura Docker

  • Una imagen de Docker (Imagen) es una plantilla de solo lectura. Las imágenes se pueden utilizar para crear contenedores Docker y una imagen puede crear muchos contenedores.

  • Contenedor (Contenedor): Docker utiliza un contenedor (Contenedor) para ejecutar una aplicación o un grupo de aplicaciones de forma independiente. Al igual que las clases y los objetos de instancia en Java, las imágenes son definiciones estáticas y los contenedores son entidades cuando se ejecutan imágenes . Los contenedores proporcionan un entorno operativo estándar y aislado para imágenes, que se pueden iniciar, iniciar, detener y eliminar. Cada contenedor es una plataforma aislada y segura

  • El almacén (Repositorio) es un lugar donde los archivos de imágenes se almacenan de forma centralizada.

    Similar a

    Almacén Maven, donde se almacenan varios paquetes de frascos;

    almacén de github, donde se almacenan varios proyectos de git;

    El registro oficial proporcionado por Docker se llama Docker Hub, donde se almacenan varias plantillas de imágenes.

    Los almacenes se dividen en almacenes públicos (Públicos) y almacenes privados (Privados).

    El repositorio público más grande es Docker Hub ( https://hub.docker.com/ ),

    Se almacena una gran cantidad de imágenes para que los usuarios las descarguen. Los almacenes públicos nacionales incluyen Alibaba Cloud, NetEase Cloud, etc.

1.5 Configurar el acelerador de imágenes Docker

De forma predeterminada, la imagen de Docker se descargará desde Docker Hub ( https://hub.docker.com/ ) en el futuro, lo cual es demasiado lento. Generalmente, los aceleradores de espejo están configurados:

USTC: Acelerador de espejos de la Universidad de Ciencia y Tecnología de China ( https://docker.mirrors.ustc.edu.cn )

Alibaba Cloud-- NetEase Cloud--Tencent Cloud

Demostración: configuración de Mirror Accelerator en Alibaba Cloud

Ingrese al sitio web oficial de Alibaba Cloud

buscar

 

 

2.Comandos comunes de Docker

2.1.Comandos relacionados con el servicio Docker

  • Detenga el servicio Docker: systemctl stop docker
  • Inicie el servicio Docker: systemctl start docker
  • Reinicie el servicio Docker: systemctl restart docker
  • Inicie el servicio Docker: systemctl enable docker

2.2.Comandos relacionados con la imagen de Docker

1. Busque imágenes relevantes del almacén.

docker search 镜像名
例如: docker search mysql

2. Lleva la imagen al local.

docker pull 镜像名:版本号 ===如果没有跟版本号,那么它会拉取最新的latest

3. Verifique qué espejos están disponibles localmente

docker images

4. Eliminar la imagen especificada localmente.

docker rmi 镜像名:版本号 或镜像编号

5. Eliminar todos los espejos

docker rmi $(docker images -q)    [慎用]

6. Comando de ayuda

docker --help  [找到所有的docker命令]

docker 命令 --help  [命令的语法]

2.3.Comandos relacionados con el contenedor Docker

Ejecute el contenedor centos: e ingrese al contenedor

docker run -it --name=c1 centos:7 /bin/bash
  •  -i: ingresa al contenedor
  • -t: plataforma interactiva === funciona casi con -i.
  • --name: asigne un nombre al contenedor; si no usa --name, Docker asignará un nombre automáticamente.
  • centos:7===nombre de la imagen: número de versión
  • /bin/bash===proporciona una ventana de comando de shell

contenedor de salida

exit: ---会关闭容器
ctrl+q+p:--退出不会关闭容器

ver el contenedor actual

docker ps:  查看所有正在运行的容器
docker ps -a:查看所有的容器。
docker ps -aq: 查看所有容器的id

Crear un contenedor sin ingresar al contenedor

docker run -id --name=容器的名称  centos:7 /bin/bash

Ingrese el contenedor especificado: --- usar exit no cerrará el contenedor

docker exec 容器的id或者容器的名称  /bin/bash

apagar|iniciar|eliminar contenedor

docker stop 容器名|容器id
docker start 容器名|容器id
docker rm 容器名|容器id  [只能删除停止的容器]
docker rm -f 容器名|容器id [强制删除容器]
docker rm -f $(docker ps -aq): 删除所有容器

Ver registros de contenedores

docker logs 容器id

3. El volumen de datos del contenedor.

3.1 El concepto y función del volumen de datos.

Pensamiento: después de eliminar el contenedor Dockers, ¿los datos generados en el contenedor siguen ahí?

Pensando: ¿Pueden los contenedores Docker y las máquinas externas intercambiar archivos directamente?

 Pensamiento: los contenedores quieren interactuar con los datos

Para garantizar la confiabilidad de los datos del contenedor, es necesario montar un determinado directorio dentro del contenedor en un determinado directorio en el host.

Este directorio en el host es el volumen de datos.

 concepto:

  • Un volumen de datos es un directorio o archivo en el host.
  • Cuando el directorio del contenedor y el directorio del volumen de datos están vinculados, la modificación de la otra parte se sincronizará inmediatamente
  • Un volumen de datos se puede montar en varios contenedores al mismo tiempo.
  • Un contenedor también se puede montar con múltiples volúmenes de datos.

efecto:

  • Resuelva el problema de la persistencia de datos.
  • Resolver el problema de la comunicación indirecta entre máquinas externas y contenedores.
  • Resolver el intercambio de datos entre contenedores.

3.2 Configurar el volumen de datos

  • Al crear un contenedor de inicio, use el parámetro -v para configurar el volumen de datos
  • docker run ... -v 宿主机目录(文件):容器内目录(文件) ...

Precauciones:

  • El directorio debe ser una ruta absoluta.
  • Si el directorio no existe, se creará automáticamente
  • Se pueden montar múltiples volúmenes de datos.

ejemplo:

 docker run -id --name=c2 -v /usr/app:/usr/ykq -v /usr/app2:/usr/ykq2 centos:7 /bin/bash

4.Implementación de la aplicación Docker

4.1 Implementación de Docker MySQL

 

Buscar espejo mysql

docker search mysql

 Extraer imagen de MySQL

docker pull mysql:5.7

 Crear un contenedor, establecer mapeo de puertos, mapeo de directorios

# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql

contenedor de versión completa de mysql

docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

Descripción del parámetro :

  • -p 3307:3306 : asigna el puerto 3306 del contenedor al puerto 3307 del host.
  •  -v $PWD/conf:/etc/mysql/conf.d : monte conf/my.cnf en el directorio actual del host en /etc/mysql/my.cnf en el contenedor. directorio de configuración

  • -v $PWD/logs:/logs : monta el directorio de registros en el directorio actual del host en /logs del contenedor. directorio de registro

  • -v $PWD/data:/var/lib/mysql : monta el directorio de datos en el directorio actual del host en /var/lib/mysql del contenedor. directorio de datos

  • -e MYSQL_ROOT_PASSWORD=123456: inicializa la contraseña del usuario root.

4.2.Docker implementa Redis

(1) Extraiga la imagen de Redis

docker pull redis:6.0.20 

(2) Ejecute la imagen de Redis

docker run -id --name=redis6 -p 6380:6379 redis:6.0.20 
-p: 端口映射  容器内部的端口和宿主机之间的映射。

(3) Utilice una máquina externa para conectarse a redis

Si se elimina el contenedor de Redis --- ¿Hay algún dato en él? --- Si quiero modificar el contenido de configuración de Redis.


Persistencia

1. Especifique el archivo de configuración al iniciar el contenedor redis

  • Cree un directorio /app/redis y coloque redis.conf en este directorio
  • Cree un directorio /app/redis/data --- almacene datos persistentes de redis
  • mkdir -p /app/redis/data
  • ejecutar contenedor redis
  • docker run -id --name=redis6 -v /app/redis/redis.conf:/usr/redis/redis.conf -v /app/redis/data:/usr/redis/data -p 6379:6379 redis:6.0.20 redis-server /usr/redis/redis.conf
    

  • Cada contenedor equivale a una máquina virtual

4.3.Tomcat de implementación de Docker

Buscar espejo de Tomcat

docker search tomcat

 Extrae la imagen de Tomcat

docker pull tomcat

Crear un contenedor, establecer mapeo de puertos, mapeo de directorios

# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat

ejecutar contenedor Tomcat

docker run -id --name=tomcat -p 8080:8080 镜像名

 Ingrese tomcat y modifique

puerto de acceso --éxito

4.4.Implementación de Docker nginx

 

Buscar espejo nginx

docker search nginx

Tira del espejo nginx

docker pull nginx

Crear un contenedor, establecer mapeo de puertos, mapeo de directorios

# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
 worker_connections  1024;
}


http {
 include       /etc/nginx/mime.types;
 default_type  application/octet-stream;

 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                   '$status $body_bytes_sent "$http_referer" '
                   '"$http_user_agent" "$http_x_forwarded_for"';

 access_log  /var/log/nginx/access.log  main;

 sendfile        on;
 #tcp_nopush     on;

 keepalive_timeout  65;

 #gzip  on;

 include /etc/nginx/conf.d/*.conf;
}
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
  • Descripción de parámetros:

    • -p 80:80 : asigna el puerto 80 del contenedor al puerto 80 del host.

    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf : monte /conf/nginx.conf en el directorio actual del host en: /etc/nginx/nginx.conf en el contenedor. directorio de configuración

    • -v $PWD/logs:/var/log/nginx : monte el directorio de registros en el directorio actual del host en /var/log/nginx del contenedor. directorio de registro

4.5.Docker implementa RabbitMQ

Buscar la imagen de Rabbitmq

docker search rabbitmq

Extrae la imagen de RabbitMQ

docker pull rabbitmq

Ejecute conejomq:

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5673:5672 rabbitmq

 Al docker ps -aver la identificación del contenedor mq implementado,  ejecutar docker exec -it 容器id /bin/bash dentro del contenedor ingresando
:rabbitmq-plugins enable rabbitmq_management

Ahora puede acceder a la interfaz web visitando http://linuxip:15672. El nombre de usuario y la contraseña aquí son invitados de forma predeterminada.
Ingrese el comando: salir para salir del directorio del contenedor.

5. Espejo personalizado

Las imágenes reflejadas necesarias para el contenido explicado anteriormente se extraen del almacén remoto. ¿También podemos convertir el proyecto que escribimos en una imagen reflejada? DE ACUERDO. Requiere un espejo personalizado

5.1 Principio de la imagen Docker

pensar:

  • ¿Cuál es la esencia de una imagen Docker? --- Es un archivo Dockerfile [escriba uno por uno para obtener comandos]

  • ¿Por qué una imagen de CentOS en Docker solo tiene 200MB, pero cuántos G tiene el archivo ISO de un sistema operativo CentOS?

  • ¿Por qué una imagen de Tomcat en Docker tiene 500 MB, mientras que un paquete de instalación de Tomcat solo tiene más de 10 MB?

El sistema de archivos de Linux consta de dos partes, bootfs y rootfs.

  • bootfs: contiene el cargador de arranque (cargador de arranque) y el kernel (kernel)

  • rootfs: sistema de archivos raíz, que contiene directorios y archivos estándar como /dev, /proc, /bin, /etc en un sistema Linux típico

  • Diferentes distribuciones de Linux, bootfs es básicamente el mismo, pero rootfs es diferente, como ubuntu, centos, etc.

  • La imagen de Docker está superpuesta por un sistema de archivos especial.

  • La parte inferior son bootfs y usa los bootfs del host;

  • La segunda capa es el sistema de archivos raíz rootfs, llamado imagen base: imagen base

  • Luego puedes superponer otros archivos espejo encima

  • La tecnología Unified File System (Union File System) puede integrar diferentes capas en un sistema de archivos, proporcionando una perspectiva unificada para estas capas, ocultando así la existencia de múltiples capas. Desde el punto de vista del usuario, solo hay un sistema de archivos.

  • Se puede colocar un espejo encima de otro espejo. La imagen siguiente se denomina imagen principal y la imagen inferior se convierte en la imagen base.

  • Al iniciar un contenedor desde una imagen, Docker monta un sistema de archivos de lectura y escritura en la parte superior como contenedor.

Resumir:

 5.2 Producción de imágenes especulares

Imagen personalizada: se proporcionan dos métodos:

  • La primera: según el envase a realizar
  • El segundo: atravesar el archivo dockerfile.

El primer tipo de contenedor se convierte en un espejo: solo se puede crear un nuevo espejo en un contenedor espejo existente ----- comprenda 

Pasos: cree la imagen existente --- ejecútela como un contenedor --- modifique el contenido en el contenedor ---> conviértala en un espejo --- comprima el archivo de imagen ---> dáselo a otros --- convertirlo en una imagen local

Manifestación:

 

  • Docker commit ID del contenedor nombre de la imagen: número de versión [convertir el contenedor especificado en una imagen]
  • docker save -o nombre de archivo comprimido nombre de imagen: número de versión [comprimir la imagen especificada en un archivo comprimido]
  • docker load -i nombre del archivo comprimido [convertir el archivo comprimido en una imagen local]

5.3 El concepto de dockerfile [pesado]

  • Dockerfile es un texto --- cualquier imagen se crea a través de dockerfile

  • El archivo contiene una línea de instrucciones.

  • Cada instrucción construye una capa, basada en la imagen base, y finalmente construye una nueva imagen.

  • Para desarrolladores: puede proporcionar un entorno de desarrollo completamente consistente para el equipo de desarrollo.

  • Para evaluadores: puede tomar directamente la imagen creada durante el desarrollo o crear una nueva imagen a través del archivo Dockerfile para comenzar a trabajar.

  • Para el personal de operación y mantenimiento: durante la implementación, se puede lograr una perfecta portabilidad multiplataforma de las aplicaciones.

5.4 Palabras clave del archivo Docker

5.5 Caso Dockerfile

Caso 1

Crear y editar el archivo Docker  

 

duplicación de componentes

 docker build -f centos_dockerfile -t aaa_centos:v1.0 
  •  -f: indica el archivo dockerfile
  • -t: número de versión del nombre de la imagen 
  • .: debe agregarse
  •  

 crear contenedor

docker run -it --name=c1 aaa_centos:v1.0 /bin/bash

 


Caso 2

 Prepare el paquete jar springboot y transfiéralo al directorio raíz del host

 

Cree el archivo springboot_dockerfile y edítelo

FROM openjdk:8
MAINTAINER wqg
ADD springboot-docker01-0.0.1-SNAPSHOT.jar docker01.jar
EXPOSE 8080
CMD java -jar docker01.jar

Haz un espejo según springboot_dockerfile

docker build -f ./springboot_dockerfile -t springboot:v1.0 .

 

Iniciar y hacer mapeo de puertos

 docker run -id --name=s2 -p 8080:8080 springboot:v1.0

acceso exitoso

 


Imagen a archivo comprimido

 docker save -o springboot.tar springboot:v1.0

 


Caso 3

Requisito: la imagen de Centos7 tiene vim+ifconfig+jdk8

 

jdk_centos 

FROM centos:7
MAINTAINER wqg
WORKDIR /usr/local
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#创建目录
RUN mkdir -p /usr/local/java
#ADD 把宿主机中的压缩文件放入到/usr/local/java 并会自动解压 
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV PATH $JAVA_HOME/bin:$PATH
CMD echo "success--------------ok"
CMD /bin/bash

5.6 Cargue la imagen local en el almacén de imágenes remotas de Ali

Ali nube:

  • Como desarrollo: necesitamos convertir nuestro proyecto en un espejo a través de dockerfile; subirlo al almacén remoto [hub.docker o almacén espejo de Alibaba Cloud].
  • Como operación y mantenimiento: descargue la imagen del almacén remoto --- ejecute el contenedor a través de la imagen. Implementar el proyecto.
  • Uso: Almacén espejo en la nube de Alibaba

 


 


Extraiga la imagen del Registro

 correr tras tirar

docker run -id --name=ccc -p 8089:8080 [镜像版本id]

6.Idea asociada con Docker 

6.1.Docker habilita el acceso remoto

#修改该Docker服务文件
vi /lib/systemd/system/docker.service 
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

 

6.2.Idea para instalar el complemento Docker

7. Orquestación del servicio Docker

7.1 Descripción general

  • Docker sugiere que solo ejecutemos un servicio en cada contenedor, porque el contenedor Docker en sí consume muy pocos recursos, por lo que es mejor separar cada servicio por separado, pero luego nos enfrentamos a otro problema.
  • Si necesito implementar varios servicios al mismo tiempo, ¿tengo que escribir un Dockerfile para cada servicio por separado y luego crear un espejo y un contenedor? Esto es agotador, por lo que Docker nos proporciona oficialmente una herramienta para Docker-compose multi. -despliegue de servicios.
  • Compose permite a los usuarios definir un conjunto de contenedores de aplicaciones asociados como un proyecto a través de un archivo de plantilla docker-compose.yml separado [usted escribe] (formato YAML).
  • Es fácil definir una aplicación de contenedores múltiples con un archivo de configuración y luego usar un comando para instalar todas las dependencias de la aplicación para completar la compilación. Docker-Compose resuelve el problema de cómo gestionar la orquestación entre contenedores.

7.2.Instalación y uso de Docker Compose


1. Instale Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

2. Desinstale Docker Compose [elija según sea necesario]

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

3. Utilice Docker Compose para organizar el proyecto Springboot+redis+mysql

pasos de composición de Docker

  • Escriba Dockerfile para definir cada aplicación de microservicio y cree el archivo de imagen correspondiente
  • Utilice docker-compose.yml para definir una unidad de negocio completa y organizar cada servicio de contenedor en la aplicación general.
  • Finalmente, ejecute el comando docker-compose up para iniciar y ejecutar la aplicación completa para completar la implementación con un solo clic y conectarse.

1. Cree un directorio Docker-Compose (este artículo no se ha creado aquí y todavía se encuentra en el directorio /root/dockerfile)

mkdir ~/docker-compose
cd ~/docker-compose

2. Proyecto Springboot del paquete

 

3. Escribe el archivo Docker

# 基础镜像使用java
FROM openjdk:8
# 作者
MAINTAINER qy165
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD springboot-redis-cache-0.0.1-SNAPSHOT.jar qy165.jar
EXPOSE 8080
CMD java -jar qy165.jar

4. Crea una imagen reflejada

docker build -f Dockerfile -t qy165:v1.0

 

Orquestación de servicios:

Escribe el archivo docker-compose.yml

version: "3"
services:
  microService:
    image: qy165:v1.0      #镜像名
    container_name: qy165  #容器名
    ports:  #端口映射
      - "8080:8080"
    volumes:  #数据卷
      - /app/microService:/data
    networks: #网络(network=aaa_net)
      - aaa_net
    depends_on: #依赖服务名
      - redis
      - mysql
  redis:
    image: redis:6.0.20
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - aaa_net
    command: redis-server /etc/redis/redis.conf
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'qy165'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - aaa_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks: #等价于 docker network create aaa_net
  aaa_net:

docker rm -f $(docker ps -aq)

 Utilice docker-compose para iniciar el contenedor en el directorio ~/docker-compose

docker-compose up

 

8. Necesita una interfaz gráfica

implementar

docker run -d -p 8000:8000 -p 9000:9000 --name portainer     --restart=always     -v /var/run/docker.sock:/var/run/docker.sock     -v portainer_data:/data     portainer/portainer

acceso

http://192.168.223.147:9000/

 

 

Supongo que te gusta

Origin blog.csdn.net/WQGuang/article/details/132071310
Recomendado
Clasificación