使用VirtualBox和Vagrant搭建Docker环境

    科技2022-08-11  96

    前言

    学习docker之旅第一天——使用VirtualBox和vagrant搭建docker环境。

    软件下载

    VirtualBox下载链接:选择对应安装的操作系统即可。

    Vagrant下载链接

    使用Vagrant安装虚拟机

    使用前提

    vagrant的使用前提是必须安装好了virtualbox,因为vagrant是在virtualbox中创建虚拟机的。

    当vagrant安装好后,在一个空的目录下执行vagrant init centos/7会生成一个Vagrantfile文件:

    查看下文件内容可以看到配置文件就是我们输入的centos/7:

    如果想创建别的系统在初始化vagrant的时候执行就可以了,比如说创建一台ubuntu/16.0系统: vagrant init ubuntu/16.0。

    初始化完毕后,就执行vagrant up来创建一个虚拟机,它是从vagrant云上拉取一个box,在使用virtualbox创建一台虚拟机:

    打开virtualbox可以看到一台正在运行的虚拟机就是刚才创建的:

    自定义Vagrantfile

    使用默认的Vagrantfile创建的虚拟机是没有ip的,Vagrantfile主要包括三个方面的配置:

    虚拟机的配置SSH配置Vagrant基础配置

    设置box名称(操作系统类型)

    config.vm.box = "centos/7"

    使用这个box创建出来的虚拟机的操作系统就是centos/7的。

    虚拟机(VM)配置

    config.vm.provider "virtualbox" do |vb| vb.memory = "1024" vb.name = "zzy-centos7" vb.cpus = 2 end

    网络配置

    默认情况下,对于Virtualbox而言,Vagrant将使用Virtualbox的NAT网络方式,允许虚拟机访问外部网络,但是不允许外界访问虚拟机,包括主机也ping不通。

    虚拟机的网络配置有两种方式:

    private_network

    相当于虚拟机和Host机共同组成了一个单独的局域网,外界无法访问该局域网,但是虚拟机可以访问外界,Host机和虚拟机之间也可以互访。

    使用private_network时,可以给虚拟机指定固有的稀有IP:

    Vagrant.configure("2") do |config| config.vm.network "private_network", ip: "192.168.0.4" end

    也可以通过动态分配IP:

    Vagrant.configure("2") do |config| config.vm.network "private_network", type: "dhcp" end

    public_network

    顾名思义公开网络,只要在同一个网段下都可以访问:

    config.vm.network "public_network"

    共享目录

    首先要安装一个插件:

    vagrant plugin install vagrant-vbguest

    然后修改配置文件:

    # 第一个参数是主机的目录,第二个参数是虚拟机挂载的目录 config.vm.synced_folder "D:/vagrant/data", "/vagrant_data"

    端口转发

    将宿主机器上8081端口的访问请求转发到虚拟机的80端口的服务上 :

    config.vm.network :forwarded_port, guest: 80, host: 8081

    配置hostname

    config.vm.hostname = "node1"

    使用Vagrant操作虚拟机

    注:vagrant和git一样都要在初始化的那个目录下才能对创建的虚拟机操作。

    连接虚拟机

    使用vagrant ssh可以连接刚才创建的虚拟机:

    退出虚拟机

    使用exit命令:

    查看虚拟机状态

    使用命令vagrant status可以看到有一台运行着的虚拟机:

    挂起虚拟机

    使用命令vigrant halt可以看到此时虚拟机是挂起状态:

    删除虚拟机

    使用命令vagrant destroy:

    在查看virtualbox发现不存在虚拟机了:

    搭建docker环境

    手动搭建

    使用前边创建的centos虚拟机搭建docker环境:

    更换阿里源

    卸载旧版本

    sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

    使用官方安装脚本安装

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    将非root用户添加进docker组中

    前边使用vagrant创建的虚拟机默认用户是非root用户:vagrant,将该用户添加进docker组中。

    sudo usermod -aG docker vagrant sudo gpasswd -a vagrant docker

    启动docker

    sudo systemctl start docker

    查看docker 版本:

    docker version

    经典hello-world

    sudo docker run hello-world

    使用vagrantfile配置搭建

    vagrantfile是可配置的,我们可以通过配置shell脚本使vagrant在创建完虚拟机后执行shell语句:

    Processed: 0.015, SQL: 9