Pratique globale de la structure du système - Deuxième opération

Quand je me suis réveillé ce matin pour voir ce devoir pratique, il était complètement ignorant. Après avoir écouté les instructions du professeur, il était encore ignorant T_T

J'ai donc lu beaucoup d'informations sur Internet. Le tutoriel vidéo du docker de la Silicon Valley est assez bon (Amway), après l'avoir lu, il est plus clair de quoi parle ce dockerfile.

Interceptez certaines images dans le didacticiel vidéo pour faciliter la compréhension de Docker et Dockerfile. Le contenu trop détaillé ne sera pas répété

(1) Mettre en œuvre un service de conteneur Web personnalisé

La préparation

Créez un nouveau dossier dans le répertoire racine pour enregistrer le dockerfile à écrire ensuite

mkdir mydocker
cd ~/dockerfile
vim Dockerfile

Ici, un nouveau fichier Dockerfile est créé avec vim

1587201032342

Utilisez Docker Build pour créer une image

Il existe deux façons d'utiliser la construction de docker

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

Il y a beaucoup de choses installées, attendant un peu plus longtemps

Utilisez docker run pour exécuter l'image

Exécuter avec succès

Entrez dans le conteneur, exécutez ifconfig pour vérifier les informations réseau de base

Problèmes

Problèmes rencontrés lors de l'installation

Pour des raisons de réseau, l'installation d'Open-SSH a échoué et je ne l'installe pas

Modifiez le Dockerfile d'origine dans vim, alors vous pouvez

Attachez le Dockerfile modifié

#设置基础镜像
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) Implémenter un service de conteneur de base de données personnalisé

Choisissez le MySQL le plus familier ici.

Reportez-vous au blog https://www.cnblogs.com/UniqueColor/p/11150314.html pour une introduction à la façon de construire MySQL

Et https://www.cnblogs.com/rimmy/p/7679076.html pour savoir comment créer un nouvel utilisateur dans mysql

https://www.cnblogs.com/yfalcon/p/9044246.html Explication détaillée de la commande docker run

1. Commencez par tirer une version plus stable de mysql, choisissez MySQL5.7 ici, puis utilisez dockerfile pour personnaliser selon nos besoins

2. Créez un nouveau dossier pour stocker le Dockerfile et les fichiers de configuration liés à MySQL

3. Écrire 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. Écrivez le script de démarrage du conteneur setup.sh

Les informations suivantes apparaîtront dans le journal du conteneur. L'utilisation d'écho nous permettra d'interpréter plus facilement le journal et de trouver des erreurs.

#!/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. Écrivez le script de création de base de données 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. Écrire le fichier de configuration des autorisations de base de données 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. Exécutez Dockerfile pour créer une image

8. Exécutez le conteneur, spécifiez le conteneur à exécuter en arrière-plan, le conteneur ne cessera pas de fonctionner même après la sortie, spécifiez le nom du conteneur et le mappage de port

9. Afficher les journaux

docker logs msql#后跟容器名

Tiré du blog, c'est très important, vous pouvez vérifier si notre fichier de configuration est normalement utilisé, vous pouvez également découvrir les problèmes qui se produisent.

10. Entrez dans le conteneur et connectez-vous à mysql en utilisant le docker de compte

11. Affichez la base de données existante

12. Affichez la base de données et la table créées dans le fichier schema.sql

13. Connectez-vous à la base de données à l'aide de l'utilisateur root créé dans schema.sql

Vous pouvez voir que l'utilisateur root a des autorisations plus élevées

14. Affichez la configuration de MySQL

show variables;

À ce stade, la construction et la configuration de mysql sont presque les mêmes.

Erreur

Lorsque j'ai vérifié le journal, j'ai constaté que les données d'importation ne s'exécutaient plus, ce qui indique que la génération a été interrompue en raison d'une erreur.

Solution:

Vérifiez le fichier schema.sql

On constate que les signes de ponctuation utilisés ne correspondent pas, et il est modifié en `` c'est très bien (ne pas utiliser) ''

Je suppose que tu aimes

Origine www.cnblogs.com/WAYNEEZHONG/p/12755716.html
conseillé
Classement