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
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) ''