工欲善其事,必先利其器;
使用环境和下载网址
- 虚拟机:VMware各版本下载地址及激活码
- Linux版本:华为CentOS7镜像(使用
CentOS-7-x86_64-Minimal-2207-02.iso
即可,没有可视化界面) - 连接工具:XShell和XFtp的免费版本
虚拟机安装CentOS
虚拟机的使用方式不再赘述,新建虚拟机
-> 典型
-> 选择iso路径
-> 其他配置默认即可
- 此处注意的是安装过程中,是可以选择安装界面简体中文的;
- 环境配置完成后选择安装位置为虚拟磁盘开始安装
- 此处作为演示,所以只对root账号设置面面,不再配置其他用户
能够通过VMware进行连接即代表,注意安装成功后的CentOS是没有开启SSH功能的,需要开启后才能通过连接工具进行连接
可以看到使用ip addr
命令查看本地IP,只有127.0.0.1
首先开启CentOS的联网功能
首先确认自己的CentOS是使用的NAT桥接模式,具体可以通过 右键 CentOS
-设置
-网络适配器
查看
然后
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
将最后的ONBOOT从no
改成yes
(centos7 默认是使用动态获取IP的方式且是不启动网卡的BOOTPROTO=dhcp,ONBOOT=no
)
修改后保存即可,然后通过
service network restart
重启网络服务,重启后ping一个你知道的网站,正常传递内容即代表开启成功
开启SSH功能
因为是刚刚安装的CentOS,所以这时候还没有vim功能,先使用
yum -y install vim*
安装vim,如果你喜欢其他的文本编辑器也可以安装别的
安装成功后
cd /etc/ssh/
vim sshd_config
讲配置文件中对Port 22
的注释解开,即代表开放22的ssh端口,这个配置文件中还有一些其他比较重要的配置参数
Port 22
:sshd服务的端口
Protocol 2
:也就是外部连接的协议用ssh2,当然如果不设置也可
PermitRootLogin no/yes
:如果允许使用root登陆则设为yes,否则为no
PasswordAuthentication no/yes
:no为不允许使用密码登陆,yes为允许使用密码登陆,一般如果用自己账户登录都用密码,所以这一项最好设为yes,否则会导致window中能ping通linux系统,但是ssh连接不上
原则上我们只需要解开Port 22
的注释即可
解开后保存,并启动ssh服务
systemctl restart sshd.service //重启命令
systemctl start sshd.service //启动命令
启动后讲ssh放入到自启动服务中
systemctl enable sshd.service
防火墙开放22端口
最后就是检查防火墙是否开放了22端口
firewall-cmd --state //查看防火墙是否打开,打开为running
firewall-cmd --zone=public --query-port=22/tcp //端口如果开放则为yes,否则为no
我这里显示no,即需要开放22端口
firewall-cmd --add-port=22/tcp --permanent //添加(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload //添加完成后要重新载入
firewall-cmd --zone= public --query-port=22/tcp //查看端口是否开启
使用XSell连接虚拟机
首先查看CentOS的IP地址,使用ip addr
命令
然后从XShell中输入ip和用户名密码,即可连接成功
安装docker
yum -y install docker // 安装docker
service docker start // 启动docker服务
docker ps // 检查是否启动
docker安装MySQL
本次我们安装的是MySQL5.7,如有其他需要也是一样的
#dokcer pull 镜像名:版本号
docker pull mysql:5.7
pull成功后,可以通过以下的命令启动这个镜像并测试连接
# docker run -p 对外暴露的端口:mysql运行端口 --name 容器名称 -e MYSQL_ROOT_PASSWORD=mysql连接密码 -d 镜像名:版本号
# -p 对外暴露的端口:mysql运行端口
# --name 容器名称 //镜像首次启动时会自动创建容器,需要给容器命名
# -e MYSQL_ROOT_PASSWORD=mysql连接密码 //mysql镜像容器创建时必须设置连接密码,否则无法创建容器
# -d 后台运行
docker run -p 3306:3306 --name mysql5.7 \
-e MYSQL_ROOT_PASSWORD=asd123456 \
-d mysql:5.7
通过docker ps
命令,我们可以看到MySQL镜像已经启动起来了
在数据库连接工具中,我们也能通过3306端口连接数据库
持久化MySQL服务
上述启动MySQL的方式当然是可以用的,但是问题是如果我们将容器删除,并重新启动的时候,这个MySQL服务中保存的数据也将一并清除,所以我们要持久化MySQL服务
而持久化MySQL的方式,就是通过目录挂载
来实现的
首先我们停掉刚刚启动的MySQL服务,并且删除这个容器
# 停止mysql5.7容器(docker stop 容器id)
docker stop mysql5.7
# 删除mysql5.7容器(docker rm 容器id)
docker rm mysql5.7
接着我们创建一些需要挂载的配置
# 创建需要挂载的目录
mkdir -p /home/vm/docker/mysql5.7/conf
mkdir -p /home/vm/docker/mysql5.7/data
mkdir -p /home/vm/docker/mysql5.7/log
接下来我们通过挂载的配置,来启动mysql镜像
# -v 宿主机的被挂载路径:容器内需要挂载的路径
# --privileged=true 这个命令是为了防止容器无权限
docker run -p 3315:3306 --privileged=true --name mysql5.7 \
-v /usr/local/docker/mysql5.7/conf:/etc/mysql/mysql.conf.d \
-v /usr/local/docker/mysql5.7/log:/var/log/ \
-v /usr/local/docker/mysql5.7/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=asd123456 \
-d mysql:5.7
启动成功后依旧可以通过docker ps
命令查看已启动的容器,使用数据库连接工具依旧可以连接成功
设置docker自启动和容器自启动
docker自启动
# 开启 docker 自启动
systemctl enable docker.service
# 关闭 docker 自启动
systemctl disable docker.service
容器自启动
# 开启容器自启动
docker update --restart=always 【容器名】
#例如:docker update --restart=always tracker
# 关闭容器自启动
docker update --restart=no【容器名】
#例如:docker update --restart=no tracker
##### 相关配置解析
#no:不要自动重启容器。(默认)
#on-failure:如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。
#always: 如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目)
#unless-stopped:类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。
结束
所有配置都OK后,可以在VMware中直接重启CentOS,如果还能通过XShell连接,则证明ssh自启动无问题;数据库连接工具依旧能连接MySQL,则证明docker和容器自启动无问题。