【Docker】Docker中创建CentOS容器,并在该容器中搭建MySQL服务

对5.11-5.14的MySQL学习做个总结。起初想深入学习MySQL有关锁和事务的内容,但找到的视频是从linux环境搭建mysql开始讲起的,恰好自己linux忘的差不多了,也就跟着学了下去。结果他的linux是在Docker沙盒中运行的,Docker我是一点都没接触,正好趁此机会从Docker开始学习。结果一套流程走下来,花了三天时间还没有开始自己最初的学习目标。第四天经过群里大佬点拨成功实现虚拟机中mysql的允许外部访问。下面是从Docker开始的安(cai)装(keng)总结。

1 Docker相关

1.1 Docker安装过程中踩过的坑

我是直接安装了DockerToolBox工具集(Releases · docker-archive/toolbox · GitHub),本来以为一路next,再配个共享文件夹,最后输一次用户名密码就可以搞定,最后发现自己还是太天真。

1.1.1 Docker QuickStart Terminal缺少快捷方式

问题描述:因为我Oracle VM VirtualBox和Git之前都是安装过的,安装路径都是自定义的,所以桌面上的DQT快捷方式追踪不到Git的bash.exe

解决方法:右键DQT -> 属性 -> 修改‘目标’中的bash.exe路径

1.1.2 looks like something went wrong in step ‘looking for vboxmanage.exe’

问题描述:好不容易docker开了,结果蹦出来上面那句话,一个回车就退出了。。。

解决方法:墙裂推荐Docker安装的那些坑之“looks like something went wrong in step ‘looking for vboxmanage.exe’”_cheniie的博客-CSDN博客这篇博客,我遇到的问题和他一模一样,明明环境变量都配了,对应的路径下docker-machine.exe和VBoxManager.exe也都是有的。重装了好几遍,docker就是正常启动不了,最后真的重启一下就好了。大概真的是环境变量的配置要等重启后才生效?可能和start.sh有关,要重启这个进程才会让一些新的配置生效(留个疑问)

1.1.3 找不到共享文件夹路径

问题描述:docker开起来以后该创建linux容器了,因为从docker大仓库里pull太慢,所以我找了个centOS的tar包准备load下来。但docker找不到放在VirtualBox自动挂载的共享文件夹里面的tar包。

解决方法:一番操作后,我感觉是共享文件夹出问题了,虚拟机的共享文件夹是和本地关联的,而docker是由虚拟机启动的,虚拟机相当于docker的宿主机,虚拟机和本地机的共享文件夹和docker有关系吗?docker是有关于挂载本地目录的方法,但毕竟docker不是我这个阶段的学习重点,所以最后还是先绕过这个坑,直接用WinSCP手动拖了。

2 Linux下MySQL安装相关

第二天开始搞Linux下MySQL的安装,下面是官方文档提供的mysql安装流程

shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 770 mysql-files
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql
# MySQL 5.7.6 and up
shell> bin/mysql_ssl_rsa_setup
# MySQL 5.7.6 and up
shell> chown -R root .
shell> chown -R mysql data mysql-files
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server

2.1  MySQL安装踩过的坑

安装的时候没什么大问题,网上常见的什么data文件夹不存在什么的坑我都没遇到过,安装之后的使用出问题了。mysql的搭建过程比较顺利,开始膨胀,想试着让自己本地的navicat连接到linux里面的mysql。这也是我之前完全没有接触过的东西,一个接一个的报错。因为接下来的坑有的还没解决,有的解决的莫名其妙,部分就只做个记录留坑知道为什么无法连接到mysql了,因为docker启动容器的时候没有做端口映射!!!暴雨哭泣QAQ

2.1.1 mysqld: uncognized service

问题描述:这个问题一开始是不存在的,我的mysql是能正常启动并进入的,在我开始试着远程连接以后,改了些配置,然后就进不去了。。。奇葩的是,当时太晚洗洗睡了,第三天又能正常启动了。。。

一切结束后,回过头查看mysql的日志发现是3306的端口已经占用了,也就是说mysqld的服务已经开起来了,再试图启动mysqld就无法正常启动了。有个问题:如果端口被占用,会报uncognized service这个错吗,奇奇怪怪的。好几天前的错,我也懒得去重现了。但也学到了教训,遇到问题首先想到查日志!

2.1.2 ERROR 2002 (HY000):Can't connect to local MySQL server through socket '/tmp/mysql.sock'

问题描述:第三天可以正常启动mysql但进不去,真的是吐血了。给我报出ERROR 2002的错误,但我/tmp/mysql.sock明明是存在的,是我瞎改配置的时候给/tmp/mysql.sock设置了无法访问?只能这么想,真的晕了。

解决方法:用ln软连接,关联到var下面的mysql.sock,如果没有的话复制过去。ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

3 总结

3.1 docker

学会了基础的run,stop,start,ps,images,pull,load等命令行,理清了宿主机,沙盒,容器,镜像的概念和它们之间的关系。

3.2 linux

加深了对groupadd,useradd,cd,tar -zxvf,mkdir,ln,chown,chmod,chkconfig,ifconfig,lsof,cp等操作的印象,大致熟悉了linux安装mysql的流程。

解决了这个ERROR 2002能让mysql正常启动后,身心俱疲。毕竟之前在学校里用linux也全部都是可视化,一下子自己给自己挖这么多坑真的吃不太消。先回到正轨学MySQL相关的内容,之后再安排专门的时间系统深入学习docker和linux。

好了,四天时间饶了很大一圈,终于完成了,基本上所有的坑都被我踩了一遍...就是docker跑linux容器的时候没有做端口的映射,这个好像挺基础的,但我之前完全没有接触过docker。然后经过群里大佬的点拨,我发现docker里面完全不用搞linux,直接构建mysql就好,又是一个大坑。从四天前什么都不会一路踩坑,踩实了好多基础的坑。会自己搞服务器了,服务器里的安全组什么的有了接触;docker相关的端口映射和数据卷配置会搞;linux防火墙什么的也可以;mysql的权限相关以及各种命令行也都行。突然发现收获颇丰,竟然能不靠百度直接敲出大部分常用命令(docker,linux,mysql)。完结撒花!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值