前言
学习docker之旅第一天——使用VirtualBox和vagrant搭建docker环境。
软件下载
VirtualBox下载链接:选择对应安装的操作系统即可。
使用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
newgrp docker
启动docker
sudo systemctl start docker
查看docker 版本:
docker version
经典hello-world
sudo docker run hello-world
使用vagrantfile配置搭建
vagrantfile是可配置的,我们可以通过配置shell脚本使vagrant在创建完虚拟机后执行shell语句: