工欲善其事,必先利其器;

使用环境和下载网址

  1. 虚拟机:VMware各版本下载地址及激活码
  2. Linux版本:华为CentOS7镜像(使用CentOS-7-x86_64-Minimal-2207-02.iso即可,没有可视化界面)
  3. 连接工具: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和容器自启动无问题。