小白第一次买阿里云服务器,开开心心的打开,修改登录密码,就直接用ssh连接服务器安装docker了(至此埋下了大雷。。。)
首先说连接阿里云服务器,根据文档指示,修改密码,重启服务器,连接成功。开始安装docker;
在刚开始的时候,由于网络的原因,我们在下载的镜像的时候,常常速度是非常慢的。所以如果下载镜像很慢的同学,可以尝试配置国内的加速器加速镜像下载
附上安装docker文档连接:
1.登录阿里开发者平台:https://dev.aliyun.com/search.html
2.点击“创建我的容器镜像”
3.注册/登录后,进入Docker 镜像仓库 (https://cr.console.aliyun.com/#/imageList),选中加速器 Tab
根据文档操作非常简单,使用加速器拉取mysql镜像速度贼快
docker run --name mysql -v $PWD/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxx -d mysql:5.7
成功创建mysql镜像
1.查看已经运行的docker镜像
docker ps(加-a 是查看所有镜像)
2.连接到mysql镜像中
docker exec -it mysql bash
mysql是镜像的名字,镜像每次启动都必须有一个名字,该名字可以手动指定也可以自己生成,我这里指定了名字和端口号
连接成功以后,如下图,已经进入到了docker mysql镜像中
3.查看mysql的启动状态
service mysql status
4.mysql没有启动可以使用以下命令启动
service mysql start
5.输入mysql 验证mysql是否启动成功
这个博主的文章非常值得参考
https://www.cnblogs.com/areyouready/p/8948552.html
我自己踩的坑:1.navicat客户端连接不上,开始以为端口号不对,查资料后发现自己定义的是3306,端口号正确;
2.然后ip地址以为不对,以为是容器的ip地址,反复试了也是不对;ip地址其实就是宿主机ip,也就是服务器ip
3.以为账号密码错误,经排查发现没有问题
4.由于mysql中root执行绑定在了localhost
,因此需要对root进行授权,授权后,刷新后重新登录:flush privileges;查找授权,show grants for @IP地址,发现授权没有问题
5.mysql是否启动着,在启动中;
最后的最后。。。。百度可能外部访问服务器本身就不通。。。
1.阿里云服务器防火强是否没有对3306端口进行授权?(至此防火墙命令学的差不多了。。确实没有打开,但是打开后,利用telnet在windows系统上访问远程访问该ip端口号依然连接不上!!!)
windows电脑如何开启telnet命令可以自行百度
如下图失败:
进入系统之后,发现CentOS 7默认已安装Firewall,但是没有启动,所以需要先启动Firewall,同时设置开机自启动。
- 登录ECS实例,执行如下命令,启动Firewall。
systemctl start firewalld
- 执行如下命令,设置开机自启动。
systemctl enable firewalld.service
- 执行如下命令,查看防火墙状态,是否为running。
firewall-cmd --state
- 执行如下命令,重新载入配置。比如在添加规则等之后,需要执行此命令。
firewall-cmd --reload
- 执行如下命令,列出支持的zone。
firewall-cmd --get-zones
- 执行如下命令,列出支持的服务,在列表中的服务是放行的。
firewall-cmd --get-services
- 执行如下命令,查看FTP服务是否支持,返回yes表示支持,返回no表示不支持。
firewall-cmd --query-service ftp
- 执行如下命令,临时开放FTP服务。
firewall-cmd --add-service=ftp
- 执行如下命令,永久开放FTP服务。
firewall-cmd --add-service=ftp --permanent
- 执行如下命令,永久移除FTP服务。
firewall-cmd --remove-service=ftp --permanent
- 执行如下命令,永久添加80端口。
firewall-cmd --add-port=80/tcp --permanent(开启该端口访问权限)
- 执行如下命令,查看规则,此命令和iptables相同。(查看开启的端口)
iptables -L -n
- 执行如下命令,查看帮助。
man firewall-cmd
- 执行如下命令,查看防火墙状态,是否为running。
2. 防火墙端口开启后依然访问不到,但是可以ping通服务器网络,又一顿百度,阿里云服务器中安全组没有打开,如下图:
控制台-已开通的产品-云服务器ECS:,点击该服务器,跳转到实例列表
访问本实例安全组,打开,点击克隆,修改配置将3306端口放开,授权对象为0.0.0.0/0是指所有网段均可以访问该服务器的端口
3.至此我担心还不生效,重启了服务器;重启之后,再次telnet IP 3306,依旧连接不成功,有一个坑!!docker早已经关闭了,mysql当然没在运行。。。。
4.打开docker,重新运行mysql镜像,再次访问telnet IP 3306,连接成功,navicat客户端连接成功!!!想哭,我咋那么难呢!
5.同时也证明了重启服务器后docker关闭,但是mysql镜像还在,手动打开镜像,mysql正常运行;