vagrant的使用和docker安装以及常用镜像安装(附加使用vagrant导致虚拟机磁盘爆满解决办法)

首先安装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 文件中的恢复原样不做修改(把修改的那段注释掉!)
在这里插入图片描述
最后成功决绝这个虚拟机磁盘爆满的问题哈哈~~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值