Práctica integral de la estructura del sistema: segunda operación

Cuando me desperté esta mañana para ver esta tarea práctica, era completamente ignorante. Después de escuchar las instrucciones del maestro, todavía era ignorante T_T

Entonces leí mucha información en Internet. El video tutorial de Docker de Silicon Valley es bastante bueno (Amway), después de leerlo, queda más claro de qué se trata este dockerfile.

Intercepte algunas imágenes en el video tutorial para facilitar la comprensión de docker y Dockerfile. El contenido que sea demasiado detallado no se repetirá

(1) Implemente un servicio de contenedor web personalizado

Preparación

Cree una nueva carpeta en el directorio raíz para guardar el dockerfile que se escribirá a continuación

mkdir mydocker
cd ~/dockerfile
vim Dockerfile

Aquí, se crea un nuevo archivo Dockerfile con vim

1587201032342

Use Docker Build para construir una imagen

Hay dos formas de usar Docker Build

docker build -t 新镜像名:TAG  #这个是在Dockerfile所在目录下
docker build -f xxxx -t 新镜像名:TAG   #这个在-f后指定具体目录

Hay muchas cosas instaladas, esperando un poco más

Use Docker Run para ejecutar la imagen.

Corre exitosamente

Ingrese el contenedor, ejecute ifconfig para verificar la información básica de la red

Problemas

Problemas encontrados durante la instalación

Debido a razones de red, la instalación de open-ssh falló y no la instalaré

Modifique el Dockerfile original en vim, luego puede

Adjunte el Dockerfile modificado

#设置基础镜像
FROM ubuntu

#镜像作者信息
MAINTAINER zhong_wei_qi<[email protected]>

#下载并安装nginx,还有必要的维护工具
RUN apt-get update && apt-get install -y nginx vim net-tools

#将默认端口改为自定义端口
EXPOSE 8000

#web工作目录设置为/var/tmp
ENV WEBPATH /var/tmp

#启动时登录到工作目录
WORKDIR $WEBPATH

RUN echo "success============OK"

(2) Implementar un servicio de contenedor de base de datos personalizado

Elija el MySQL más familiar aquí.

Consulte el blog https://www.cnblogs.com/UniqueColor/p/11150314.html para obtener una introducción a cómo construir MySQL

Y https://www.cnblogs.com/rimmy/p/7679076.html sobre cómo crear un nuevo usuario en mysql

https://www.cnblogs.com/yfalcon/p/9044246.html Explicación detallada del comando docker run

1. Primero obtenga una versión más estable de mysql, elija MySQL5.7 aquí, y luego use dockerfile para personalizar nuestros requisitos

2. Cree una nueva carpeta para almacenar Dockerfile y archivos de configuración relacionados con MySQL

3. Escribe Dockerfile

#设置基础镜像
FROM mysql:5.7

#镜像作者信息
MAINTAINER zhong_wei_qi<[email protected]>

#配置基础环境,不允许空密码登录,并设置初始密码
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
ENV MYSQL_ROOT_PASSWORD=wayne


#设置容器启动时执行的命令
CMD ["sh", "/mysql/setup.sh"]

4. Escriba el script de inicio del contenedor setup.sh

La siguiente información aparecerá en el registro del contenedor: el uso de echo nos facilitará la interpretación del registro y la búsqueda de errores.

#!/bin/bash
set -e

#查看mysql服务的状态,方便调试,这条语句可以删除
echo `service mysql status`

echo '1.启动mysql....'
#启动mysql
service mysql start
sleep 3
echo `service mysql status`

echo '2.开始导入数据....'
#导入数据
mysql < /mysql/schema.sql
echo '3.导入数据完毕....'

sleep 3
echo `service mysql status`

#为数据库指定新用户并创建密码
echo '4.开始修改密码....'
mysql < /mysql/privileges.sql
echo '5.修改密码完毕....'

#sleep 3
echo `service mysql status`
echo `mysql容器启动完毕,且数据导入成功`

tail -f /dev/null

5. Escriba el script de creación de la base de datos schema.sql

-- 创建数据库并带上字符集!!
create database `docker_mysql` default character set utf8 collate utf8_general_ci;

use docker_mysql;

-- 建一张图书馆表
DROP TABLE IF EXISTS `library`;

CREATE TABLE `library` (
  `id` varchar(20) NOT NULL,
  `bookname` varchar(255) DEFAULT NULL,
  `auther` varchar(255) DEFAULT NULL,
  `class` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 导入初始数据
INSERT INTO `library` (`id`, `bookname`, `auther`, `class`)
VALUES
    ('0001','English','MRw','language');

6. Escriba el archivo de configuración de permisos de la base de datos privileges.sql

-- 使用MySQL中自带的user表创建新用户
use mysql;
select host, user from user;
-- 因为mysql版本是5.7,因此新建用户为如下命令:
create user docker identified by '123456';
-- 将docker_mysql数据库的权限授权给创建的docker用户,密码为123456
--create user 'username'@'host';localhost为本地登录,'%'表示任意一台计算机都可远程登录
grant all on docker_mysql.* to docker@'%' identified by '123456' with grant option;
-- 这一条命令一定要有:
flush privileges;

7. Ejecute Dockerfile para crear una imagen.

8. Ejecute el contenedor, especifique el contenedor que se ejecutará en segundo plano, el contenedor no dejará de funcionar incluso después de la salida; especifique el nombre del contenedor y la asignación de puertos

9. Ver registros

docker logs msql#后跟容器名

Aprendió del blog, esto es muy importante, puede verificar si nuestro archivo de configuración se usa normalmente, también puede averiguar los problemas que ocurren.

10. Ingrese el contenedor e inicie sesión en mysql usando el acoplador de cuenta

11. Visualizar la base de datos existente

12. Ver la base de datos y la tabla creada en el archivo schema.sql

13. Inicie sesión en la base de datos utilizando el usuario raíz creado en schema.sql

Puede ver que el usuario root tiene permisos más altos

14. Ver la configuración de MySQL

show variables;

En este punto, la construcción y configuración de mysql es casi la misma.

Error

Cuando revisé el registro, descubrí que los datos de importación ya no se ejecutaban, lo que indica que la compilación se interrumpió debido a un error.

Solución:

Verifique el archivo schema.sql

Se encuentra que los signos de puntuación utilizados no coinciden, y se modifica a `` esto está bien (no usar) ''

Supongo que te gusta

Origin www.cnblogs.com/WAYNEEZHONG/p/12755716.html
Recomendado
Clasificación