0


Docker | 安装mysql全流程以及镜像打包实战

Dcoker实战-安装打包MySql

  • docker 优点在这里插入图片描述

安装mysql

1. docker hub.上面查找mysql镜像

在这里插入图片描述

2. 从docker hub.上(阿里云加速器)拉取mysql镜像到本地标签为5.7

  1. [root@localhost ~]# docker pull mysql:5.75.7: Pulling from library/mysql
  2. 20e4dcae4c69: Pull complete
  3. 1c56c3d4ce74: Pull complete
  4. e9f03a1c24ce: Pull complete
  5. 68c3898c2015: Pull complete
  6. 6b95a940e7b6: Pull complete
  7. 90986bb8de6e: Pull complete
  8. ae71319cb779: Pull complete
  9. ffc89e9dfd88: Pull complete
  10. 43d05e938198: Pull complete
  11. 064b2d298fba: Pull complete
  12. df9a4d85569b: Pull complete
  13. Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb
  14. Status: Downloaded newer image for mysql:5.7
  15. docker.io/library/mysql:5.7[root@localhost ~]# docker images
  16. REPOSITORY TAG IMAGE ID CREATED SIZE
  17. crpi-yy9yj7syn08stogn.cn-shanghai.personal.cr.aliyuncs.com/zhenh/zyan 1.1 ca7abefb7af7 40 hours ago 191MB
  18. 172.21.47.251:5000/zyan/hgubuntu 1.259ab366372d5 2 weeks ago 78.1MB
  19. ubuntu latest 59ab366372d5 2 weeks ago 78.1MB
  20. mysql 5.75107333e08a8 10 months ago 501MB
  21. registry latest 75ef5b734af4 13 months ago 25.4MB
  22. redis 6.0.816ecd2772934 4 years ago 104MB

3.使用mysql:5.7镜像创建容器(也叫运行镜像)

简单版 – 有坑版

在这里插入图片描述

1. 查看端口 并启动mysql5.7
  1. # 查看端口3306 是否占用
  2. [root@localhost ~]# ps -ef | grep mysql
  3. root 44682013012:30 pts/000:00:00 grep --color=auto mysql
  4. # 执行 ps -ef | grep mysql 后,只显示了一个进程信息,这个进程实际上是你自己运行的 grep 命令本身。这意味着在执行该命令时,并没有找到其他与 mysql 相关的正在运行的进程。
  5. docker run -p 3306:3306-e MYSQL_ROOT_PASSWORD=123456-d mysql:5.7
  • 成功启动在这里插入图片描述
2. 进入mysql 建库建表插入数据

语句后面一定要加 ;

  1. mysql> show database; # 错误语句
  2. ERROR 1064(42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1
  3. mysql> show databases
  4. ->^C
  5. mysql> show databases; # 正确语句
  6. +--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)
  7. mysql> create database db01;
  8. Query OK,1 row affected (0.00 sec)
  9. mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || db01 || mysql || performance_schema || sys |+--------------------+5 rows in set (0.00 sec)
  10. mysql> use db01;
  11. Database changed
  12. mysql> create table t1(id int,name varchar(20));
  13. Query OK,0 rows affected (0.01 sec)
  14. mysql> insert into t1 values(1,'hg');
  15. Query OK,1 row affected (0.02 sec)
  16. mysql> select * from t1;+------+------+| id | name |+------+------+|1| hg |+------+------+1 row in set (0.00 sec)
3. 外部Win10也来连接运行在dokcer上的mysql容器实例服务

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

WIN10插入数据–英文

在这里插入图片描述
在这里插入图片描述

  1. # 再进入docker服务里的 查看数据 发现 win10操作的 同样可以看到
  2. mysql> select * from t1;+------+-------+| id | name |+------+-------+|1| hg ||2| lisi4 |+------+-------+2 rows in set (0.00 sec)
  3. mysql>
WIN10插入数据–中文

在这里插入图片描述
在这里插入图片描述

  • 分析 可能是安装后 和字符集编码相关在这里插入图片描述
  1. mysql> SHOW VARIABLES LIKE 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | latin1 || character_set_connection | latin1 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | latin1 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir |/usr/share/mysql/charsets/|+--------------------------+----------------------------+8 rows in set (0.00 sec)
  2. mysql>

在这里插入图片描述
一定要以容器内部显示的编码格式为依据 删除容器后,里面的nysql数据如何办? 同样,容器数据卷技术也适用于数据库上,需要备份进行持久化存储

实战版 – 埋坑版⭐⭐
  1. docker run -p 3306:3306--name mysql -v /zza/mysql/conf:/etc/mysql/conf.d -v /zza/mysql/logs:/logs -v /zza/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456-d mysql:5.7

以后类比 , 重要的数据都需要挂在容器数据卷

1. 新建容器实例
  1. docker run -p 3306:3306--privileged=true-v /zza/mysql/conf:/etc/mysql/conf.d -v /zza/mysql/log:/var/log/log -v /zza/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456-d mysql:5.7

在这里插入图片描述
在这里插入图片描述

2. 新建my.cnf

通过容器卷同步给mysql容器实例

  1. [root@localhost conf]# ls -l
  2. 总用量 0[root@localhost conf]# vim my.cnf
  3. [root@localhost conf]# cat my.cnf
  4. [client]
  5. default_character_set=utf8
  6. [mysqld]
  7. collation_server = utf8_general_ci
  8. character_set_server = utf8
  9. [root@localhost conf]#
  10. # 要重启 保证配置文件生效
  11. [root@localhost conf]# docker restart 2390dee74aa9
  12. 2390dee74aa9
3.重新启动mysql2容器实例再重新进入并查看字符编码
  1. mysql> SHOW VARIABLES LIKE 'character%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir |/usr/share/mysql/charsets/|+--------------------------+----------------------------+8 rows in set (0.00 sec)
  2. mysql>
  1. mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)
  2. mysql> create database db01;
  3. Query OK,1 row affected (0.00 sec)
  4. mysql> use db01;
  5. Database changed
  6. mysql> create table t1(id int,name varchar(15));
  7. Query OK,0 rows affected (0.01 sec)
  8. mysql> insert into t1(1,'fff');
  9. ERROR 1064(42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1,'fff')' at line 1
  10. mysql> insert into t1 values(1,'fff');
  11. Query OK,1 row affected (0.01 sec)
  12. mysql> select * from t1;+------+------+| id | name |+------+------+|1| fff |+------+------+1 row in set (0.00 sec)
  13. mysql>
4.再新建库新建表再插入中文测试

在这里插入图片描述

  1. mysql> select * from t1;+------+--------+| id | name |+------+--------+|1| fff ||3| 昊哥 |+------+--------+2 rows in set (0.00 sec)
  2. mysql>
  • 结论在这里插入图片描述
5.测试删除容器 从新加载数据是否从新显示
  1. [root@localhost mysql]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 2390dee74aa9 mysql:5.7"docker-entrypoint.s…"15 minutes ago Up 10 minutes 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp,33060/tcp fervent_mclean
  4. [root@localhost mysql]# ls -l
  5. 总用量 4
  6. drwxr-xr-x.2 root root 2010 3013:09 conf
  7. drwxr-xr-x.6 polkitd root 409610 3013:13 data
  8. drwxr-xr-x.2 root root 610 3013:05 log
  9. [root@localhost mysql]# coker rm -f 2390dee74aa9
  10. bash: coker: 未找到命令...[root@localhost mysql]# docker rm -f 2390dee74aa9
  11. 2390dee74aa9
  12. [root@localhost mysql]# docker ps
  13. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  14. [root@localhost mysql]#

在这里插入图片描述
在这里插入图片描述

这个实例再次验证了容器卷挂载的必要性 ,即使日常手误删除了相关的操作, 仍有机会进行数据复原

答疑解惑

关于命令挂载那一块

  1. -v /zza/mysql/conf:/etc/mysql/conf.d
  2. -v /zza/mysql/log:/var/log/log
  3. -v /zza/mysql/data:/var/lib/mysql

在这里插入图片描述
在这里插入图片描述

配置好的mysql上传到私有库进行保存

1. 查看私有库已存在的镜像
  1. 运行registry 镜像
  2. 查看镜像
  3. 查看私有库存在的镜像
  1. [root@localhost conf]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. crpi-yy9yj7syn08stogn.cn-shanghai.personal.cr.aliyuncs.com/zhenh/zyan 1.1 ca7abefb7af7 41 hours ago 191MB
  4. 172.21.47.251:5000/zyan/hgubuntu 1.259ab366372d5 2 weeks ago 78.1MB
  5. ubuntu latest 59ab366372d5 2 weeks ago 78.1MB
  6. mysql 5.75107333e08a8 10 months ago 501MB
  7. registry latest 75ef5b734af4 13 months ago 25.4MB
  8. redis 6.0.816ecd2772934 4 years ago 104MB
  9. [root@localhost conf]# docker run -d -p 5000:5000-v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
  10. 9090b5e984a0ded93b5ff2a00ce4251566ae6422e6162df6b4dfc36caf5a7e92
  11. [root@localhost conf]# docker ps
  12. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  13. 9090b5e984a0 registry "/entrypoint.sh /etc…"3 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp,:::5000->5000/tcp vigilant_euler
  14. 78ba41711142 mysql:5.7"docker-entrypoint.s…"8 minutes ago Up 8 minutes 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp,33060/tcp jovial_bell
  15. [root@localhost conf]# curl -XGET http://172.21.47.251:5000/v2/_catalog
  16. {"repositories":[]}
2. 推送至私有镜像
  1. [root@localhost conf]# docker tag 镜像:Tag Host:Port/Repository:Tag
  2. Error parsing reference:"镜像:Tag" is not a valid repository/tag: invalid reference format
  3. [root@localhost conf]# docker tag mysql:5.7172.21.47.251:5000/mysql_rqj:0.1[root@localhost conf]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 9090b5e984a0 registry "/entrypoint.sh /etc…"15 minutes ago Up 15 minutes 0.0.0.0:5000->5000/tcp,:::5000->5000/tcp vigilant_euler
  6. 78ba41711142 mysql:5.7"docker-entrypoint.s…"23 minutes ago Up 23 minutes 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp,33060/tcp jovial_bell
  7. [root@localhost conf]#
  8. [root@localhost conf]# docker images
  9. REPOSITORY TAG IMAGE ID CREATED SIZE
  10. crpi-yy9yj7syn08stogn.cn-shanghai.personal.cr.aliyuncs.com/zhenh/zyan 1.1 ca7abefb7af7 41 hours ago 191MB
  11. 172.21.47.251:5000/zyan/hgubuntu 1.259ab366372d5 2 weeks ago 78.1MB
  12. ubuntu latest 59ab366372d5 2 weeks ago 78.1MB
  13. 172.21.47.251:5000/mysql_rqj 0.15107333e08a8 10 months ago 501MB
  14. mysql 5.75107333e08a8 10 months ago 501MB
  15. registry latest 75ef5b734af4 13 months ago 25.4MB
  16. redis 6.0.816ecd2772934 4 years ago 104MB
  17. [root@localhost conf]# docker push 172.21.47.251:5000/mysql_rqj:0.1
  18. The push refers to repository [172.21.47.251:5000/mysql_rqj]441e16cac4fe: Pushed
  19. 73cb62467b8f: Pushed
  20. 337ec6bae222: Pushed
  21. 532b66f4569d: Pushed
  22. 0d9e9a9ce9e4: Pushed
  23. 4555572a6bb2: Pushed
  24. 8527ccd6bd85: Pushed
  25. d76a5f910f6b: Pushed
  26. 8b2952eb02aa: Pushed
  27. 7ff7abf4911b: Pushed
  28. cff044e18624: Pushed
  29. 0.1: digest: sha256:4b6c4935195233bc10b617df3cc725a9ddd5a7f10351a7bf573bea0b5ded7649 size:2618[root@localhost conf]# curl -XGET http://172.21.47.251:5000/v2/_catalog
  30. {"repositories":["mysql_rqj"]}[root@localhost conf]#

一个问题 – 待解答 ??

docker push后 我stop了容器 从新run镜像实例,再次curl查看私有库镜像内容 发现没有任何镜像

  1. [root@localhost conf]# curl -XGET http://172.21.47.251:5000/v2/_catalog{"repositories":["mysql_rqj"]}[root@localhost conf]# ^C[root@localhost conf]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 9090b5e984a0 registry "/entrypoint.sh /etc…"21 minutes ago Up 21 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp vigilant_euler
  4. 78ba41711142 mysql:5.7 "docker-entrypoint.s…"29 minutes ago Up 29 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp jovial_bell
  5. [root@localhost conf]# docker stop 9090b5e984a0
  6. 9090b5e984a0
  7. [root@localhost conf]# curl -XGET http://172.21.47.251:5000/v2/_catalog
  8. curl: (7) Failed connect to 172.21.47.251:5000; 拒绝连接
  9. [root@localhost conf]# docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
  10. 90fb924e35e3fcef4103f9d7b642e57af281f379988041f466b739028e9e56c4
  11. [root@localhost conf]# docker ps
  12. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  13. 90fb924e35e3 registry "/entrypoint.sh /etc…"5 seconds ago Up 4 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp sharp_fermi
  14. 78ba41711142 mysql:5.7 "docker-entrypoint.s…"30 minutes ago Up 30 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp jovial_bell
  15. [root@localhost conf]# curl -XGET http://172.21.47.251:5000/v2/_catalog{"repositories":[]}

此问题存疑 等解决了之后再补充!!!!

标签: docker mysql

本文转载自: https://blog.csdn.net/HG0724/article/details/143361542
版权归原作者 胜天半月子 所有, 如有侵权,请联系我们删除。

“Docker | 安装mysql全流程以及镜像打包实战”的评论:

还没有评论