Notas prácticas de Docker

Todo provenía del contenido de los artículos de otras personas, pero su blog estaba demasiado atascado y toda la computadora no era buena, por lo que se copió el contenido y se explicó el encabezado del archivo.
Dirección de referencia:

Notas prácticas de Docker

Uno, introducción a Docker

1. Descarga el entorno en el que se basa Dcoker

Para instalar Docker, primero debe descargar todos los entornos dependientes, al igual que Maven depende de JDK

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

2. Especifica la fuente de la imagen de Docker.

La descarga predeterminada de Docker irá a un servidor externo para descargar, la velocidad es más lenta, se puede configurar como la fuente espejo Aliyun, la velocidad es más rápida

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

3. Instale Docker

yum makecache fast
yum -y install docker-ce

4. Inicie Docker y pruebe

Después de que la instalación sea exitosa, debe iniciarla manualmente, configurarla para que se inicie y probar Docker

#启动docker服务
systemctl start docker
#设置开机自动启动
systemctl enable docker
#测试
docker run hello-world

Dos, almacén central de Docker

1. Almacén central oficial de Docker: este almacén tiene la duplicación más completa, pero la velocidad de descarga es más lenta.

https://hub.docker.com/

2. Sitios web de duplicación nacionales: NetEase Hive, daoCloud, etc., la velocidad de descarga es rápida, pero la duplicación es relativamente incompleta.

https://c.163yun.com/hub#/home 
http://hub.daocloud.io/ (推荐使用)

3. Dentro de la empresa, el servidor privado extraerá el espejo (agregar configuración)

#需要创建 /etc/docker/daemon.json,并添加如下内容
{
    
    
	"registry-mirrors":["https://registry.docker-cn.com"],
	"insecure-registries":["ip:port"]
}
#重启两个服务
systemctl daemon-reload
systemctl restart docker

En tercer lugar, la operación de duplicar

1. Tira del espejo

Tira de la imagen del almacén central al local.

docker pull 镜像名称[:tag]
#举个栗子:docker pull daocloud.io/library/tomcat:8.5.15-jre8

2. Ver todos los espejos locales

Ver la información de la imagen que se ha instalado localmente, incluido el logotipo, el nombre, la versión, la hora de actualización y el tamaño

docker images

3. Eliminar el espejo local

La imagen ocupará espacio en el disco y se puede eliminar directamente de forma manual. El logotipo se puede obtener viendo

docker rmi 镜像的标识

4. Importación y exportación de réplicas

Si la imagen se puede transferir a través del disco duro por razones de red, aunque no está estandarizada, es efectivo, pero el nombre y la versión de la imagen exportada de esta manera son ambos nulos y deben modificarse manualmente.

#将本地的镜像导出
docker save -o 导出的路径 镜像id
#加载本地的镜像文件
docker load -i 镜像文件
#修改镜像文件
docker tag 镜像id 新镜像名称:版本

Cuarto, el funcionamiento del contenedor.

1. Ejecute el contenedor

La imagen específica debe personalizarse para ejecutar el contenedor. Si la imagen no existe, se descargará directamente.

#简单操作
docker run 镜像的标识|镜像的名称[:tag]
#常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识|镜像名称[:tag]
#-d:代表后台运行容器
#-p 宿主机端口:容器端口:为了映射当前Linux的端口和容器的端口
#--name 容器名称:指定容器的名称

2. Ver el contenedor en ejecución

Ver toda la información del contenedor en ejecución

docker ps [-qa]
#-a 查看全部的容器,包括没有运行
#-q 只查看容器的标识

3. Ver el registro del contenedor

Ver el registro del contenedor para ver información sobre el funcionamiento del contenedor

docker logs -f 容器id
#-f:可以滚动查看日志的最后几行

4. Ingrese al interior del contenedor.

Puede entrar en el interior del contenedor para su operación.

docker exec -it 容器id bash

5. Copie el contenido en el contenedor.

Copie los archivos de la máquina host en el directorio especificado dentro del contenedor, por supuesto, también se puede copiar en la dirección inversa

#将宿主机的文件复制到容器内部的指定目录
docker cp 文件名称 容器id:容器内部路径
#将容器内的文件复制到外部位置
docker cp 容器id:容器内部路径 文件名称

6. Reiniciar, iniciar, detener y eliminar el contenedor

Iniciar, detener, eliminar y otras operaciones del contenedor, que serán de uso frecuente en el seguimiento

#重新启动容器
docker restart 容器id
#启动停止运行的容器
docker start 容器id
 
#停止指定的容器(删除容器前,需要先停止容器)
docker stop 容器id
#停止全部容器
docker stop $(docker ps -qa)
#删除指定容器
docker rm 容器id
#删除全部容器
docker rm $(docker ps -qa)

Cinco, aplicación Docker

1.Docker instalar tomcat

Ejecute el contenedor Tomcat para prepararse para implementar el proyecto ssm

docker run -d -p 8080:8080 --name tomcat  daocloud.io/library/tomcat:8.5.15-jre8
#或者已经下载了tomcat镜像
docker run -d -p 8080:8080 --name tomcat 镜像的标识

2. Ejecute el contenedor MySQL

docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.4

3. Implementar el proyecto ssm

Modifique el entorno del proyecto SSM y configúrelo con la información del contenedor Docker en Linux.
Vuelva a escribir el paquete war a través del
paquete Maven . Copie el paquete war en Windows a Linux.
Copie el paquete war de la máquina host en el interior de el contenedor a través del comando docker.

docker cp 文件名称 容器id:容器内部路径

Probar el acceso al proyecto SSM

Seis, volumen de datos

Para implementar el proyecto SSM, debe usar el comando cp para copiar el archivo ssm.war en el host al contenedor.
Volumen de datos: asigne un directorio de la máquina host a un directorio del contenedor.

Puede manipular el contenido del directorio en el host, y los archivos mapeados dentro del contenedor también cambiarán junto con él.

1. Crea un volumen de datos

#Después de crear el volumen de datos, se almacenará en un directorio por defecto / var / lib / docker / volúmenes / nombre del volumen de datos / _data

docker volume create 数据卷名称

2. Ver todos los volúmenes de datos

#查看全部数据卷信息
docker volume ls

3. Ver detalles del volumen de datos

#查看数据卷的详细信息,可以查询到存放的路径,创建时间等等
docker volume inspect 数据卷名称

4. Elimina el volumen de datos

#删除指定的数据卷
docker volume rm 数据卷名称

5. Volumen de datos de mapeo de contenedores

#通过数据卷名称映射,如果数据卷不存在。Docker会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。
docker run -d -p 8080:8080 --name tomcat -v 数据卷名称:容器内部的路径 镜像id
 
#通过路径映射数据卷,直接指定一个路径作为数据卷的存放位置。但是这个路径下是空的。
docker run -d -p 8080:8080 --name tomcat -v 路径(/root/自己创建的文件夹):容器内部的路径 镜像id

Siete, imagen personalizada de Dockerfile

1.Dockerfile

Para crear una imagen personalizada, necesita crear un Dockerfiler, el siguiente es el idioma del Dockerfile

from: especifique el entorno en el que el espejo personalizado actual depende de la
copia: copie el contenido en la ruta relativa al espejo personalizado
workdir: declare el directorio de trabajo predeterminado del espejo
ejecutar: ejecute comandos, puede escribir varios
cmd: comandos que necesitan ser ejecutado (en Ejecutar bajo workdir, cmd puede escribir múltiples, solo prevalecerá el último)

#示例:
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps

2.Haga una imagen a través de Dockerfile

#编写完Dockerfile后需要通过命令将其制作为镜像,并且要在Dockerfile的当前目录下,之后即可在镜像中查看到指定的镜像信息,注意最后的 .
docker build -t 镜像名称[:tag] ./

八 、 Docker-Compose

1. Descargue e instale Docker-Compose

1.1 Descargar Docker-Compose

#去github官网搜索docker-compose,下载1.24.1版本的Docker-Compose
下载路径:https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

1.2 Establecer permisos

#需要将DockerCompose文件的名称修改一下,给予DockerCompose文件一个可执行的权限
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose

1.3 Configurar variables de entorno

#方便后期操作,配置一个环境变量
#将docker-compose文件移动到了/usr/local/bin,修改了/etc/profile文件,给/usr/local/bin配置到了PATH中
 
mv docker-compose /usr/local/bin
vi /etc/profile
#添加内容:export PATH=$JAVA_HOME:/usr/local/bin:$PATH
source /etc/profile

1.4 prueba

Entrar en cualquier directorio

docker-compose

2.Docker-Compose gestiona contenedores MySQL y Tomcat

El archivo yml usa key: value para especificar la información de configuración.
La información de configuración múltiple se distingue por un salto de línea + sangría
. No use pestañas en el archivo docker-compose.yml.

version: '3.1'
services:
  mysql:           # 服务的名称
    restart: always   # 代表只要docker启动,那么这个容器就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4  # 指定镜像路径
    container_name: mysql  # 指定容器名称
    ports:
      - 3306:3306   #  指定端口号的映射
    environment:
      MYSQL_ROOT_PASSWORD: root   # 指定MySQL的ROOT用户登录密码
      TZ: Asia/Shanghai        # 指定时区
    volumes:
     - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql   # 映射数据卷
  tomcat:
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

3. Utilice el comando docker-compose para administrar el contenedor.

Al usar el comando docker-compose, el archivo docker-compose.yml se encontrará en el directorio actual de forma predeterminada

#1.基于docker-compose.yml启动管理的容器
docker-compose up -d
 
#2.关闭并删除容器
docker-compose down
 
#3.开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
 
#4.查看由docker-compose管理的容器
docker-compose ps
 
#5.查看日志
docker-compose logs -f

4. docker-compose usado con Dockerfile

Use el archivo docker-compose.yml y el archivo Dockerfile para iniciar la imagen actual mientras genera una imagen personalizada, y docker-compose para administrar el contenedor

4.1 archivo docker-compose

Escribir archivo docker-compose

# yml文件
version: '3.1'
services:
  ssm:
    restart: always
    build:            # 构建自定义镜像
      context: ../      # 指定dockerfile文件的所在路径
      dockerfile: Dockerfile   # 指定Dockerfile文件名称
    image: ssm:1.0.1
    container_name: ssm
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

4.2 Dockerfile

Escribir Dockerfile

from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps

4.3 Operación

#可以直接基于docker-compose.yml以及Dockerfile文件构建的自定义镜像
docker-compose up -d
# 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已经存在,会直接运行这个自定义镜像
#重新构建自定义镜像
docker-compose build
#运行当前内容,并重新构建
docker-compose up -d --build

9. Introducción y preparación de CI y CD

1. Introducción a CI y CD

Implementación del proyecto
1. Compile y empaquete el proyecto a través de maven
2. Cargue el archivo en el servidor especificado
3. Coloque el paquete war en el directorio tomcat
4. Utilice Dockerfile para convertir Tomcat y el paquete war en una imagen reflejada, que será ejecutado por DockerCompose Después de actualizar el proyecto del contenedor, el proceso anterior debe ejecutarse nuevamente de principio a fin. Si las operaciones anteriores se realizan una vez para cada actualización, lleva mucho tiempo y es laborioso. Podemos ayudarnos a lograr una integración continua, una entrega e implementación continuas a través de CI y CD

Introducción 2.CI

CI (integración continua) Integración continua
: al escribir código, después de completar una función, envíe inmediatamente el código al repositorio de Git y reconstruya y pruebe el proyecto.
1. Encuentre errores rápidamente.
2. Evite que el código se desvíe de la rama principal.

3. Cree el servidor de Gitlab

3.1. Preparar el medio ambiente

Para implementar CI, debe usar el almacén remoto de Gitlab. Primero,
cree un Gitlab a través de Docker para crear una nueva máquina virtual y especifique al menos 4G de memoria en ejecución, que es el tamaño de memoria recomendado para Gitlab.
E instale Docker y Docker-Compose

3.2 Modificar el puerto 22 de ssh

#将ssh的默认22端口,修改为60022端口,因为Gitlab需要占用22端口
 
vi /etc/ssh/sshd_config
  PORT 22 -> 60022
systemctl restart sshd

3.3 编写 docker-compose.yml

docker-compose.yml文件去安装gitlab(下载和运行的时间比较长的)
 
version: '3.1'
services:
 gitlab:
  image: 'twang2218/gitlab-ce-zh:11.1.4'
  container_name: "gitlab"
  restart: always
  privileged: true
  hostname: 'gitlab'
  environment:
   TZ: 'Asia/Shanghai'
   GITLAB_OMNIBUS_CONFIG: |
    external_url 'http://192.168.199.110'
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['gitlab_shell_ssh_port'] = 22
  ports:
   - '80:80'
   - '443:443'
   - '22:22'
  volumes:
   - /opt/docker_gitlab/config:/etc/gitlab
   - /opt/docker_gitlab/data:/var/opt/gitlab
   - /opt/docker_gitlab/logs:/var/log/gitlab

Diez, compila GitlabRunner

1. Preparar documentos

Prepare el paquete de instalación de maven, el paquete de instalación jdk1.8, Dockerfile, daemon.json y docker-compose en el entorno de carpetas

daemon.json
{
    
    
“registry-mirrors”: [“https://registry.docker-cn.com”],
“insecure-registries”: [ip:ports]
}

2. Empiece a construir

Cree el directorio de trabajo / usr / local / docker_gitlab-runner
y copie todo el archivo docker-compose.yml y el directorio de entorno en el directorio anterior. Después de que el host inicie el programa docker, ejecute sudo
chown root: root / var / run / docker .sock (si ha reiniciado la ventana acoplable, ejecútelo de nuevo)
Ejecute docker-compose up -d --build en el directorio / usr / local / docker_gitlab-runner para iniciar el contenedor y
agregar permisos de contenedor para asegurarse de que el contenedor pueda usar los docker exec -it gitlab-runner usermod- aG
root gitlab-Runner Runner información de registro en gitlab

3. Vaya a los siguientes pasos

docker exec -it gitlab-runner gitlab-runner register


 
# 输入 GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.199.109/
 
# 输入 GitLab Token
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh
 
# 输入 Runner 的说明
Please enter the gitlab-ci description for this runner:
可以为空
 
# 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci
Please enter the gitlab-ci tags for this runner (comma separated):
deploy
 
# 这里选择 true ,可以用于代码上传后直接执行(根据版本,也会没有次选项)
Whether to run untagged builds [true/false]:
true
 
# 这里选择 false,可以直接回车,默认为 false(根据版本,也会没有次选项)
Whether to lock Runner to current project [true/false]:
false
 
# 选择 runner 执行器,这里我们选择的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell

Once, prueba introductoria del proyecto de integración

1. Crea un proyecto

Cree un proyecto maven, agregue un archivo web.xml, escriba una página HTML

2. Escriba el archivo .gitlab-ci.yml

stages:
  - test
 
test:
  stage: test
  script:
    - echo first test ci   # 输入的命令

3. Envía el proyecto maven a gitlab

Ejecute el comando git para enviar a Gitlab

git push origin master

4. Ver el efecto

Puede ver el contenido escrito por gitlab-ci.yml en gitlab

12. Mejorar la configuración del proyecto

Agregue Dockerfile y docker-compose.yml, y modifique el archivo .gitlab-ci.yml

1. Crea un Dockerfile

# Dockerfile
FROM daocloud.io/library/tomcat:8.5.15-jre8
COPY testci.war /usr/local/tomcat/webapps

2. Cree docker-compose.yml

# docker-compose.yml
version: "3.1"
services:
  testci:
    build: docker
    restart: always
    container_name: testci
    ports:
      - 8080:8080

3. 修改 .gitlab-ci.yml

# ci.yml
stages:
  - test
 
test:
  stage: test
  script:
    - echo first test ci
    - /usr/local/maven/apache-maven-3.6.3/bin/mvn package
    - cp target/testci-1.0-SNAPSHOT.war docker/testci.war
    - docker-compose down
    - docker-compose up -d --build
    - docker rmi $(docker images -qf dangling=true)

Supongo que te gusta

Origin blog.csdn.net/qq_15915293/article/details/108099451
Recomendado
Clasificación