写在前面
工欲善其事必先利其器
看官网:https://docs.docker.com/install/
Dcoker 在MAC Windows10 CentOS VartualBox Vagrant 之间能够擦出什么样的火花呢?
2.1 Docker for Mac :
https://docs.docker.com/docker-for-mac/install/
MAC 安装之后包含:
The Docker Desktop installation includes
Docker Engine,
Docker CLI client,
Docker Compose,
Notary,
Kubernetes,
and Credential Helper.
2.2 Docker for Windows10 :(直接安装并不推荐)
https://docs.docker.com/docker-for-windows/install/
√ 2.3 VartualBox + Vagrant(创建虚拟机) for mac 【mac or windows 都推荐这种模式】
VartualBox ,官网下载安装
Vagrant(创建虚拟机不用自己去找镜像什么的),官网下载安装.
这是下载地址 https://www.vagrantup.com/downloads.html 选择自己对应的版本。
安装成功后:
➜ ~ vagrant --version
Vagrant 2.2.7
➜ ~
创建一台centos7的虚拟机
➜ myimages mkdir centos7
➜ myimages cd centos7
➜ centos7 vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
➜ centos7 ll
total 8
-rw-r--r-- 1 liuge36 staff 2.9K Feb 14 18:46 Vagrantfile
➜ centos7
生成的这个文件描述了我们要去创建一个怎么样的VirtualMachine
➜ centos7 vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7'...
....
==> default: Mounting shared folders...
default: /vagrant => /Users/liuge36/myimages/centos7
➜ centos7
生成成功~
vagrant status
运行vagrant ssh 进入
停止下来使用:vagrant halt
vagrant status
删除使用:vagrant destroy
你要是想找自己想要的OS,可以到 vagrant Cloud 这个网站去找现成,类似于Docker Hub
https://app.vagrantup.com/boxes/search
一个 vagrantfile 可以创建多台主机
我这里贴出我的 Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos7"
config.vm.hostname = "hadoop001"
config.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
config.vm.provider "virtualbox" do |v|
v.gui = false
v.name = "hadoop001"
v.cpus = 2
v.memory = "2048"
end
end
ps:关于上面这个文件有两个点说明一下:
1.要是没有科学上网,直接拉取config.vm.box 中定义的centos7 真的是巨慢。可以先通过其他方式下载到本地,再add到本地,避免远程拉取。
# 01 下载centos7 box:
https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
# 02 add 进去
vagrant box add centos7 centos-7.0-x86_64.box
2.关于Vagrantfile中网络的配置,好像默认是静态地址转换NAT网络模式,这种个人不是很喜欢用,我喜欢桥接模式。所以,上面的file中我新增一张桥接网络网卡。关于网络说明可以参考:http://www.360doc.com/content/18/0627/17/32123204_765866462.shtml
config.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
再来一个三节点的Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos7"
config.vm.define "hadoop001" do |hadoop001|
hadoop001.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
hadoop001.vm.hostname = "hadoop001"
hadoop001.vm.provider "virtualbox" do |v|
v.gui = false
v.name = "hadoop001"
v.cpus = 2
v.memory = "2048"
end
end
config.vm.define "hadoop002" do |hadoop002|
hadoop002.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
hadoop002.vm.hostname = "hadoop002"
hadoop002.vm.provider "virtualbox" do |v|
v.gui = false
v.name = "hadoop002"
v.cpus = 2
v.memory = "2048"
end
end
config.vm.define "hadoop003" do |hadoop003|
hadoop003.vm.network "public_network", :bridge=> 'en0: Wi-Fi (AirPort)'
hadoop003.vm.hostname = "hadoop003"
hadoop003.vm.provider "virtualbox" do |v|
v.gui = false
v.name = "hadoop003"
v.cpus = 2
v.memory = "2048"
end
end
end
2.4 VartualBox + Vagrant(创建虚拟机) for windows
VartualBox ,官网下载安装 对应的windows版本;
Vagrant 对应的windows版本,下载,点击下一步下一步即可。
2.5 Docker for CentOS 【推荐这么玩法】
https://docs.docker.com/install/linux/docker-ce/centos/
使用 vagrant 启动一台CentOS7的机器,
vagrant ssh 进入到机器
- 先卸载之前的版本:
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
2.安装几个依赖
sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
-
添加镜像源
sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo -
sudo yum install docker-ce
-
sudo systemctl start docker
sudo docker version -
sudo docker run hello-world
√ √ √ √ √ Vagrantfile 高级玩法:√ √ √ √ √ √ √
标题:构建自动化的初始容器
在文件最后,可以添加一些自动运行的命令:
比如,可以将安装docker的命令封装进去,
到时候,直接 vagrant up ,就可以起来一台带上docekr环境的centos
答案:
config.vm.provision “shell”, inline: <<- SHELL
sudo yum remove docker docker-common docker-selinux docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager -y --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl start docker
sudo docker version
sudo echo “恭喜您,安装Docker完成~”
SHELL
2.6 Docker Machine
https://docs.docker.com/v17.09/machine/overview/
docker for mac/windows10 已经自带了docker-machine;
docker for linux 也可以自己安装 docker-machine;
安装参考:https://docs.docker.com/machine/install-machine/
安装好之后:
可以直接使用docker-machine create demo 来创建一台带Docker的小虚拟机 ;
到VirtualBox 中就可以看见创建的虚拟机demo。
docker-machine ls
docker-machine create demo // 在本地创建一个带docker的小虚机
docker-machine ssh demo // 进入这个带docker软件的小虚拟机
docker-machine stop demo // 停止容器
docker-machine rm demo // 删除容器
√ √ √ √ √ √ √ docekr-machine 高级玩法 √ √ √ √ √ √ √
标题:外部对内部小虚机的Docker进行管理
本地有一个docker server ,
使用本地的docker-machine 创建了一个带docker server的小虚机,
关闭本地的docker server,之后
docker version // 无server可连接
docker-machine env demo,得到小虚机的环境变量
eval $(docker-machine env demo) // 执行环境变量
docker version // 这个时候连接的就是小虚机的server
后面的都是在外部 对 内部小虚机的docker 进行管理操作了。
这样其实在本地只是需要安装一个docker cli 即可,
目的:直接在本地运行docekr-machine create 在远程cloud 云主机上
创建一台安装好docker的小虚机,
2.7 如何在阿里云主机上创建一台带docker 软件的小虚机
https://docs.docker.com/machine/get-started-cloud/
2.8 如何在AWS云主机上创建一台带docker 软件的小虚机
2.9 Dcoker playground
docekr 训练场
共享 临时的
登录 https://labs.play-with-docker.com/
登录上去之后:就可以使用到cloud 云主机;
有什么问题,欢迎留言讨论~~
更多文章:系统学习Docker 不迷路:https://blog.csdn.net/liuge36/category_7651616.html