首先安装Linux虚拟机,这里使用VirtualBox(安装的时候需要开启cup虚拟化,开启后重启电脑在安装)
可以到https://www.virtualbox.org/
官网下载
(tip:为了避免版本导致的问题这里把VirtualBox和Vagrant的安装包以及centos7镜像放在了百度网盘里–>https://pan.baidu.com/s/1Rl3twgZlcIoY9460Q5k_cg
提取码: 5iqj)
1)安装Vagrant
1.vagrant下载:
https://www.vagrantup.com/downloads
2.vagrant官方镜像库
https://app.vagrantup.com/boxes/search
3.打开cmd运行 (推荐使用第六步初始化centos/7速度快!)
vagrant init centos/7
即可快速给virtualbox创建一个虚拟机初始化一个centos/7系统.
vagrant相关指令:vagrant up 启动;vagrant ssh 连接;vagrant reload 重启
5.执行完上面的命令后,会在用户的家目录下生成Vagrantfile文件
6.下载镜像过程比较漫长,也可以采用先用下载工具下载到本地后(网盘里有),然后使用“ vagrant box add ”添加,再“vagrant up”即可
vagrant box add centos/7 D:\vagrant\CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box
7.启动
vagrant up
8.开启SSH,并登陆到centos7
vagrant ssh
9.在virtualbox中默认是网络地址转换和端口转发的方式,希望给虚拟机一个ip地址,可是直接访问:
10.配置网络信息,打开家目录下的"Vagrantfile"文件:
config.vm.network "private_network", ip: "192.168.56.10"
这里的ip需要在物理机下使用ipconfig找到
必须是192.168.56开头 给虚拟机一个固定的Ip地址,和主机可以互相ping通
12.修改完成后,保存重启vagrant
vagrant reload
13.检查宿主机和virtualBox之间的通信是否正常
14.开启远程登陆,修改“/etc/ssh/sshd_config”
PermitRootLogin yes
PasswordAuthentication yes
然后重启SSHD,使用Xshell进行远程连接
systemctl restart sshd
2)虚拟机中安装docker
1.虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间互相隔离.docker镜像官方地址https://hub.docker.com
2.进入官网进行安装https://docs.docker.com/engine/install/centos/
也可以先切换到root用户 su root
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
执行以上命令docker就已经在虚拟机中安装完成啦,下面我们来启动docker吧
sudo systemctl start docker
3.查看docker版本
docker -v
4.查看docker中安装了哪些镜像
docker images
5.查看docker中有哪些镜像在运行
docker ps
6.设置docker开机自启动
sudo systemctl enable docker
7.配置docker镜像加速:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ct46jer0.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3)在docker中安装mysql镜像
1.下载mysql5.7 使用root用户su root
docker pull mysql:5.7
2.下载完以后查看docker镜像
docker images
3.启动mysql
sudo 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=root \
-d mysql:5.7
(tip:-p 3306:3306 --将容器的3306 端口映射到主机的3306 端口
-v /mydata/mysql/log:/var/log/mysql --将日志文件挂载到主机的madata下
-v /mydata/mysql/data:/var/lib/mysql–将配置文件挂载到主机的mydata下
-v /mydata/mysql/conf:/etc/mysql–将配置文件挂载到主机的mydata下
-e MYSQL_ROOT_PASSWORD=root --初始化root用户密码)
4.查看挂载在主机的mysql配置文件:
5.重启mysql容器
docker restart mysql
6.进入mysql容器查看相关配置
docker exec -it mysql /bin/bash
whereis mysql
ls /etc/mysql
cat /etc/mysql/my.cnf
4)docker中安装redis镜像:
1.下载redis镜像
docker pull redis
2.创建挂载主机的配置文件:
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
3.启动容器(挂载说明和mysql相似)
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
4.重启redis镜像
docker restart redis
5.连接到docker的redis
docker exec -it redis redis-cli
6.开启 redis的aof 持久化
vi /mydata/redis/conf/redis.conf
在挂载在主机的配置文件中加入appendonly yes
7.将mysql和redis镜像都设置为开机自启动
sudo docker update mysql --restart=always
sudo docker update redis --restart=always
4)使用vagrant后发现虚拟机磁盘爆满填坑
1.后续由于在虚拟机中安装其他应用时发现说磁盘空间不够,cd /
根目录下
du -sh *
发现vagrant目录占用了39G的磁盘空间(图中的0是已被我处理过了)
再一细看不得了, 这个/vagrant下除了AppData文件夹,怎么还有一堆文件感觉跟我的PC电脑 里的 user文件夹里的东西一模一样? 比如有 download , 有document, 有music , 还有OneDrive, 虚拟机上怎么可能有微软的OneDrive? 于是突然灵光一现,难道vagrant把我电脑里的 文件都复制到虚拟机里了? 顺着这个思路百度,果然柳暗花明又一村,彻底找到了问题所在,那就是:
vagrant提供了将本机目录挂载到虚拟机目录下的功能,默认是将vagrant配置文件所在目录挂载到虚拟机/vagrant目录下
解决办法:
1.一开始找到的是 C:\Users\dell\Vagrantfile 文件里有一行配置(默认是注释掉的):
于是修改这个文件,改成下面(MyVagrantSyncFolder是自己新建得文件夹,空的,放在C:\Users\dell\下面)
config.vm.synced_folder "./MyVagrantSyncFolder", "/vagrant_data"
2.再用vagrant reload
重启, 果然发现没有用,心里一紧,不会吧, 再用Everything软件搜一遍,发现另外还有一个地方有一个vagrant配置文件: C:\Users\dell.vagrant.d\boxes\centos-VAGRANTSLASH-7\0\virtualbox\Vagrantfile\Vagrantfile 原来如此: 每一个虚拟机的操作系统里还有自己的配置文件!!!啊啊啊! 打开发现有如下配置:
Vagrant.configure("2") do |config|
config.vm.base_mac = "5254004d77d3"
config.vm.synced_folder ".", "/vagrant", type: "rsync"
end
修改为:
Vagrant.configure("2") do |config|
config.vm.base_mac = "5254004d77d3"
config.vm.synced_folder "./MyVagrantSyncFolder", "/vagrant", type: "rsync"
end
3.保存文件,再用vagrant reload
重启的时候已经加载了自己创建的文件夹MyVagrantSyncFolder,
现在是 ./MyVagrantSyncFolder 文件夹与 虚拟机中的/vagrant文件夹进行映射, 这样就不会将大量主机文件复制到虚拟机了。
但是还报了一个错: unknown filesystem type 'vboxsf
解决办法:将第一步的C:\Users\dell\Vagrantfile 文件中的恢复原样不做修改(把修改的那段注释掉!)
最后成功决绝这个虚拟机磁盘爆满的问题哈哈~~