VirtualBox+Vagrant+Centos 7,安装Docker,使用Docker安装配置MySQL
一.安装Linux虚拟机
本次讲解的是开源免费的虚拟机实现方案:VirtualBox+Vagrant
1.下载VirtualBox:
1.1 浏览器搜索VirtualBox,进入官网
1.2
1.3 安装,建议不要安装在C盘,安装完成打开后如下图
1.4 电脑开启虚拟化技术
注:电脑配置低或老电脑一般不会开启虚拟化
是否开启判断方式:如果电脑曾经安装过VMware+CentOS,并且正确启动,肯定已经打开了虚拟化
2.安装Vagrant获取并安装系统
2.1 浏览器搜索Vagrant,进入官网
2.2 点击下载Windows 64版本
2.3 安装,建议不要安装在C盘,安装完重启电脑
2.4
2.5 获取镜像:在cmd中输入vagrant init centos/7
,获取一个CentOs镜像,效果如下图,意思为在你电脑系统当前登录用户目录下,创建了一个Vagrantfile文件
注: vagrant init xxx
表示初始化一个镜像,xxx取值来自于vargrant的镜像仓库。
2.6 启动虚拟环境:cmd中输入命令vagrant up
,会去官方下载镜像,并自动导入到VirtualBox内,并自动启动。下载是一个漫长的过程,出现如下图这样的话表示启动成功:
3.使用系统
3.1 接着cmd继续下去:
ctrl+c 结束启动提示
vagrant ssh 连接虚拟机
连接完毕,即可把cmd当成xshell使用。
3.2 上上图中出现的xfyuao_default
虚拟机上右键可以启动或停止虚拟机,也可在cmd中输入vagrant up
启动虚拟机
3.3 可能的问题:VirtualBox可能会和以下软件有冲突导致虚拟机无法启动等:红蜘蛛、净网大师、360、其他未知软件。解决办法:卸载这些软件并重启电脑。
4.其他终端连接
4.1 为方便我们外部的W10直连虚拟机,需要在Vagrantfile文件内配置虚拟机的ip地址,ip地址段要和VirtualBox保持一致。
Vagrantfile文件在电脑登录用户的目录下,如我的在:C:\Users\xfyuao
ip段查看方式如下图,要在cmd中输入ipconfig/all
,找到对应网卡的地址
编辑Vagrantfile文件,大约在35行,#表示注释,复制#后内容,粘贴到下一行,ip改为VirtualBox同一地址段,如上图可修改为:
config.vm.network "private_network", ip: "192.168.56.x"
其中x取2-255之间,建议范围100-200,修改后如下图:
4.2 重启虚拟机或输入命令vagrant rolad
重启虚拟机,即可和W10互相ping通
4.3 开启远程登录,修改“/etc/ssh/sshd_config”
PermitRootLogin yes
PasswordAuthentication yes
然后重启SSHD
systemctl restart sshd
即可使用Xshell等进行远程连接
二.Docker
docker是一种虚拟化容器技术,基于镜像,可以秒级启动各种容器,每一种容器都是一个完整的运行环境,容器之间互相隔离。换句话说就是docker会为每个软件都创建一个linux系统存放它们。
1.Cent OS下安装Docker
1.1 安装docker,获取响应系统下的安装命令,如下图:
1.2 以下命令均来自上图。先卸载旧版本:连上centos的终端,建议使用Xshell,管理员角色运行
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1.3 要执行的命令和含义:
命令 | 含义 |
---|---|
第一个命令卸载旧版本在上面呢,这里不好粘贴 | shell中见到换行就执行,添加\表示当前命令未结束 |
yum install -y yum-utils |
安装依赖工具 |
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | docker安装地址 |
yum install docker-ce docker-ce-cli containerd.io | 安装docker引擎、客户端、容器,需要输入y确认两次 |
systemctl start docker | 启动docker |
docker -v | 查看版本 |
docker images | 查看使用docker下载的所有镜像 |
systemctl enable docker | 开机启动docker |
docker pull 软件名:版本 | 下载镜像 |
docker ps | 查看docker中正在运行的容器 |
docker ps -a | 查看docker中所有的容器 |
docker run xxx | 根据某个镜像创建并启动一个容器,就是安装软件,run一次安一个 |
docker start 容器名/id | 启动容器 |
docker stop 容器名/id | 停止容器 |
docker restart 容器名/id | 重启容器 |
docker rm 容器名/id | 删除容器,就是卸载软件 |
1.4 docker是国外的,默认下载镜像的地址是国外,我们更改为国内镜像。去阿里云获取镜像加速地址,登录阿里云,进入控制台,如下图
1.5 运行下面四个命令即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fs0pkpfq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.Docker内安装MySQL
在docker下安装一个软件分为以下几步:1.获取镜像版本;2.pull安装;3.run命令启动该镜像的一个容器;4.(可选)exec进入容器查看安装的软件;5.(可选)设置docker启动时就启动、停止、启动容器
2.1 去docker镜像仓库找到要下载的软件的版本,搜索docker hub
进入官网
2.2 我们下载mysql5.7版本,输入命令
docker pull mysql:5.7
2.3 启动一个mysql容器,输入下段代码。如果电脑内自行安装过mysql(不是使用docker),可能出现3306端口被占用的问题,这里把冒号前的3306改成3307等,再粘贴运行,改完再粘。
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=admin \
-d mysql:5.7
代码含义:因为docker会为每个软件建立一个独立的运行环境,也就是docker在安装一个软件前,先在自己内部创建一个linux系统,然后在这个linux系统内安装这个软件。
第一行:启动一个容器,给这个容器命名为mysql,-p端口映射,把容器内的3306端口映射到docker外,映射成3306;
第2-4行:-v是挂载,可以理解为快捷方式,指的是把docker内的linux内的目录创建一个快捷方式,:前是快捷方式在docker外的位置,:后是docker内的linux内的目录;
第5行:-e是设置环境变量,这里修改root用户的密码为admin;
第6行:被启动容器基于mysql:5.7镜像(docker images内的一个)
注意: pull下来的叫镜像(软件安装包),一个镜像可以启动(run)很多个容器,所以下次使用这个mysql时就使用start和stop来启动和停止mysql容器,如果使用run会新建一个mysql容器。你可以使用rm命令移除一个停止运行的容器。
2.4 验证docker的独立容器
查看正在运行的镜像: docker ps
进入到某个容器内部,也就是docker创建的linux的内部:
docker exec -it 容器名或id /bin/bash
在容器内部可以查看mysql安装位置: whereis mysql
2.5 修改mysql默认编码
切换到/mydata/mysql/conf目录下,编辑my.cnf,插入如下内容:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启镜像,我们可以去内部看看是否修改成了。
2.6 设置启动docker时,即运行mysql
docker update mysql --restart=always
3 自行安装JDK、Tomcat、Nginx、Redis......
JDK安装,无需配置环境变量,自动配好的,注意是安装在docker内部的,外部用不了,所以要把项目部署在docker内才能使用docker安装的JDK。