互联网开发中,我们为了在本地模拟线上环境,但是又局限于我们机器的数量,所有我们在我们的window机子上按照docker容易来装我们日常使用的服务,由于我们生成环境大多都是用centos,所有我们需要在window环境下搭建centos环境,然后我们在centos上装我们开发常用的运行环境,如mysql、redis、elaticsearch、nginx等应用软件;
大概流程如下
地址:https://www.virtualbox.org/,安装环境很简单,根据步骤下一步即可
地址:https://www.vagrantup.com/,安装环境很简单,根据步骤下一步即可
官方镜像地址:https://app.vagrantup.com/boxes/search(国内访问很慢)
第三方镜像地址:http://www.vagrantbox.es/
我自己是自第三方地址,找到对应的镜像后用迅雷下载下来的,速度快很多。
1.添加本地box
比如我下载后的box放在 e盘, E:\HashiCorp\vm\目录下,文件名字为 centos-7.0-x86_64.box,那添加box的本地地址就是
E:\HashiCorp\vm\centos-7.0-x86_64.box ,命令如下:
vagrant box add centos7 E:\HashiCorp\vm\centos-7.0-x86_64.box
执行后,出现以下内容即成功添加一个box
==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'centos7' (v0) for provider: box: Unpacking necessary files from: file:///E:/HashiCorp/vm/centos-7.0-x86_64.box box: ==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!
vagrant box list 用命令查看本地的box是否添加成功,可以看到我们刚刚创建centos7
这个box
2.初始化centos7文件并启动
注意名字要跟本地的box名字一样,不然vagrant会去官方仓库找和下载,速度很慢,命令如下:
vagrant init centos7
vagrant up
因为我们是下载到本地使用的,所有这个过程很快,看到如下信息,说明初始化centos系统已经完成。
config.vm.synced_folder ‘/host/path’, ‘/guest/path’, SharedFoldersEnableSymlinksCreate: false
==> default: Clearing any previously set network interfaces…
==> default: Preparing network interfaces based on configuration…
default: Adapter 1: nat
==> default: Forwarding ports…
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM…
==> default: Waiting for machine to boot. This may take a few minutes…
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest…
default: Removing insecure key from the guest if it’s present…
default: Key inserted! Disconnecting and reconnecting using new SSH key…
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM…
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.3.28
default: VirtualBox Version: 6.1
==> default: Mounting shared folders…
default: /vagrant => C:/Users/Administrator
之后打开VirtualBox,能看到新加了一个centos7的虚拟机,我们可以通过vagrant ssh 进入centos7交互终端页面
C:\Users\Administrator>vagrant ssh
Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
默认vagrant 会初始化两个账号 vagrant和root ,密码都为vagrant;
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
Vagrantfile中设定语法为:
config.vm.forwarded_port 80, 8080
以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。
默认只转发TCP包,UDP需要额外添加以下语句:
config.vm.forwarded_port 80, 8080, protocol: "udp"
优点:
简单易理解
容易实现外网访问虚拟机
缺点:
如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。
不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。
设定语法为:
config.vm.network "private_network", ip: "192.168.50.4"
优点:
安全,只有自己能访问
缺点:
因为私有的原因,所以团队成员其他人不能和你写作
设定语法如下:
config.vm.network "public_network", ip: "192.168.1.120"
公有网络中还可以设置桥接的网卡,语法如下
config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'
优点:
方便团队协作,别人可以访问你的虚拟机
缺点:
需要有网络,有路由器分配IP
这里我们就用私有网络,修改vagrantfile 配置文件,重启vagrant reload
$ vagrant init # 初始化
$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ vagrant suspend # 挂起虚拟机
$ vagrant resume # 唤醒虚拟机
$ vagrant status # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机
#box管理命令
$ vagrant box list # 查看本地box列表
$ vagrant box add # 添加box到列表
$ vagrant box remove # 从box列表移除
要安装Docker Engine,您需要一个CentOS 7的维护版本。不支持或未测试存档版本。
该centos-extras
库必须启用。默认情况下,此存储库是启用的,但是如果已禁用它,则需要 重新启用它。
overlay2
建议使用存储驱动程序。
较旧的Docker版本称为docker
或docker-engine
。如果已安装这些程序,请卸载它们以及相关的依赖项。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
如果yum
报告未安装这些软件包,则可以。内容(/var/lib/docker/
包括图像,容器,卷和网络)被保留。Docker Engine软件包现在称为docker-ce
。
您可以根据需要以不同的方式安装Docker Engine:
在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。
安装yum-utils
软件包(提供yum-config-manager
实用程序)并设置稳定的存储库。
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装最新版本的Docker Engine和容器,或转到下一步以安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示您接受GPG密钥,请验证指纹是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,如果是,则接受它。
要安装特定版本的Docker Engine,请在存储库中列出可用版本,然后选择并安装:
一个。列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序,并被截断:
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
返回的列表取决于启用的存储库,并且特定于您的CentOS版本(.el7
在此示例中以后缀表示)。
b。通过其完全合格的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce
)加上版本字符串(第二列),从第一个冒号(:
)一直到第一个连字符,并用连字符(-
)分隔。例如,docker-ce-18.09.1
。
$ sudo yum install docker-ce- docker-ce-cli- containerd.io
Docker已安装但尚未启动。docker
创建该组,但没有用户添加到该组。
启动Docker。
$ sudo systemctl start docker
通过运行hello-world
映像来验证是否正确安装了Docker Engine 。
$ sudo docker run hello-world
此命令下载测试图像并在容器中运行。容器运行时,它会打印参考消息并退出。更多docker安装配置使用见这个文章 docker深入浅出之安装教程