第一课 Docker践行DevOps理念-导学和安装
tags:
- Docker
- 慕课网
categories:
- Docker
- Devlop实践
- Docker安装
第一节 Docker导学
1. 1 Docker简介
- docker是容器技术的典型代表(还有其他的容器技术)。下面图代表传统虚拟机和Docker容器技术的区别。
- 传统虚拟技术创建虚拟机,让不同的应用运行在不同的虚拟机上,实现应用的隔离。
- 容器技术同样也可以到应用的隔离,它比虚拟化技术更方便,更小巧,因为他不需要虚拟化这这一层Hypervisor(虚拟机),也不需要虚拟机的操作系统。他直接在我们本地的操作系统之上,就可以实现app的隔离。
- docker技术的落地场景如下:
如简化配置: 实现源代码、运行环境、配置可以打包到一个容器中,这个容器可以运行在不同的环境中。
1.2 DevOps介绍
- Devlops的具体流程
1.3 容器技术的发展史
- 刚开始时,大家都是部署到物理机上。但是物理服务器部署应用有很多缺点如:
- 部署非常慢
- 成本非常高
- 资源浪费
- 难于迁移和扩展
- 可能会被限定硬件厂商
- 传统虚拟化技术出现以后,部署应用就简单、方便、容易管理。优点如下
- 资源池使一 个物理机的资源分配到了 不同的虚拟机里
- 很容易扩展 加物理机器or加虚拟机
- 很容易云化 亚马逊AWS ,阿里云等
- 但是传统虚拟化技术也有一些缺点。
- 每一个虚拟机都是一个完整的操作系统 ,要给其分配资源,当虚拟机数量增多时,操作系统本身消耗的资源势必增多
- 容器技术出现的原因。
- 开发人员:技术选取可用性多 运维人员:环境安装非常麻烦
- 开发和运维之间没有有效的标准模式。开发的测试环境和运维的部署环境可能不一样。
- 容器技术可以解决开发和运维之间的矛盾。
1.4 容器介绍
- 容器实现对软件和其依赖的标准化打包、应用之间相互隔离、共享同一个OS Kernel可以运行在很多主流操作系统上
- 容器和传统虚拟机的区别
- 虚拟机加容器
- docker只是容器技术的一种实现。(例如:Rocket技术)
第二节 虚拟机中创建Docker虚拟机
2.1 Vagrant安装
- 首先安装VirtualBox
- 然后安装Vagrant
- vagrant --help 确定是否安装成功
2.2 Vagrant基本使用
-
创建并进入文件夹E:/vagrant_VM/centos7,然后执行
-
配置虚拟机创建的路径。设置环境变量:VAGRANT_HOME为:E:\vargant_home
-
基本命令
| 命令 | 作用 |
| ---- | ---- |
| vagrant box add | 添加box的操作 |
| vagrant init | 初始化box的操作,会生成vagrant的配置文件Vagrantfile |
| vagrant up | 启动本地环境 |
| vagrant ssh | 通过ssh登录本地环境所在虚拟机 |
| vagrant halt | 关闭本地环境 |
| vagrant suspend | 暂停本地环境 |
| vagrant resume | 恢复本地环境 |
| vagrant reload | 修改了Vagrantfile后,使之生效。相当于先halt,再 up |
| vagrant destroy | 彻底移除本地环境 |
| vagrant box list | 显示当前已经添加的box列表 |
| vagrant box remove | 删除相应的box |
| vagrant package | 打包命令,可以把当前的运行的虚拟机环境进行打包 |
| vagrant plugin | 用于安装卸载插件 |
| vagrant status | 获取当前虚拟机的状态 |
| vagrant global-status | 显示当前用户Vagrant的所有环境状态 | -
Vagrant开源社区提供了许多已经打包好的操作系统,我们称之为box。你可以从box下载地址(下文列出),找到你想要的box,当然你也可以自己制作一个。
- 官方仓库:https://atlas.hashicorp.com/boxes/search
- 官方镜像:https://vagrantcloud.com/boxes/search
- 第三方仓库:http://www.vagrantbox.es/
-
Vagrant提供在线安装服务,非常方便,但由于伟大的GFW,我们需要先FQ把box下载到本地,然后导入安装。
-
vagrant box add是添加box的命令,{title}是以后创建虚拟机的别名,{url}是下载到本地box的路径,也可以是服务器端的URL。
vagrant box add {title} {url}
vagrant init {title}
vagrant up
# 1. 使用本地文件(从协议来说,和上面一样,相当于file:///协议的地址)
vagrant box add precises64 ./precise64.box
# 2.使用仓库名称
vagrant box add precises64 ubuntu/precise64
# 3. 这种方式,vagrant会自动在中央仓库查找镜像,并下载到本地镜像库中。(省略本地镜像名称,则直接用中央仓库中的镜像名作为本地镜像名,这样做的好处是可以跟仓库中的镜像对应。)
vagrant box add ubuntu/precise64
2.3 虚拟机安装分发
- 在线安装太慢啦。https://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1905_01.VirtualBox.box
- 下载到E:/vagrant_VM/centos7。
# 建议采取离线安装,这样有利于放置虚拟机文件到指定路径
vagrant box add centos7 E:\vagrant_VM\centos7\CentOS-7-x86_64-Vagrant-1905_01.VirtualBox.box
# 初始化镜像 初始化成功后,vagrant会在当前的初始化目录生成一个Vagrantfile配置文件,我们可以修改它,进行个性化定制。
vagrant init centos7
# 启动系统
vagrant up
# SSH连接安装的虚拟机
# 方法一 vagrant登录 退出exit 0
vagrant ssh
# 方法二 使用第三方工具,如secureCRT IP为Vagrantfile中指定的hostonly地址,用户名与密码默认都是vagrant
# 方法三 在宿主机的命令行,ssh到本地端口的方式登录。观察客户机的22端口映射到宿主机的是多少,一般是2200或者2222,用户名与密码默认都是vagrant
ssh -p 2222 127.0.0.1
- 打包分发:
- –output NAME:(可选)设置通过NAME来指定输出的文件名;
- –vagrantfile FILE:(可选)将Vagrantfile直接封进box中
vagrant halt # 在开发环境的目录,关闭centos7
vagrant status # 确认centos7关机
vagrant package centos7 --output centos7.box --vagrantfile Vagrantfile
注:如果网络模式中使用private_network的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:rm -f /etc/udev/rule.d/70-persistent-net.rules
4. 打包完成后会在当前目录生成一个centos7.box的文件,将这个文件分发给其他用户(开发者)。其他用户只要添加这个 box ,并用其初始化自己的开发目录,就能得到一个一模一样的开发环境了。
2.4 docker基本安装
- 社区版本:Community Edition (CE) 免费的
- 企业版本:Enterprise Edition (EE) 收费的
- 官网:https://docs.docker.com/engine/release-notes/
- 在官网右上角可以选择版本。选择好后网页布局也会改变,本次学习使用18.09版本的docker。
- Mac上安装docker。直接傻瓜安装就行。
- Window安装docker,也比较傻瓜。
- window 10以上才可以
- Hyper-V 支持
- centos上安装docker
- 先安装虚拟机如:Vagrant 或 Vmware
- 通过镜像下载速度快 这里用阿里镜像
- 安装依赖库
- 指定我们的安装版本(17. 09.1-ce), 防止和出现版本和课程不一致导致的bug情况。
# 配置阿里镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://eyzd1v97.mirror.aliyuncs.com"]
}
EOF
# 安装依赖库
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
# 更新yum包索引
yum makecache fast
# 查看可用版本
yum list docker-ce --showduplicates|sort -r
# 关闭测试版本list(只显示稳定版)
sudo yum-config-manager --disable docker-ce-edge
sudo yum-config-manager --disable docker-ce-test
# 指定版本安装
sudo yum install docker-ce-17.09.1.ce -y
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证是否安装成功
sudo docker version
sudo docker run hello-world
- 可以把上述配置写到vagrantfile文件中,让以后创建的虚拟机直接安装docker
config.vm.provision "shell", inline: <<-SHELL
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://eyzd1v97.mirror.aliyuncs.com"]
}
EOF
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 makecache fast
sudo yum install docker-ce-17.09.1.ce -y
sudo systemctl daemon-reload
sudo systemctl restart docker
SHELL
第三节 windows上使用docker-machine创建docker虚拟机
3.1 Win安装配置docker-machine
- 下载地址:http:/github.com/docker/machine
- 页面中的Release,下载win10的docker-machine-Windows-x86_64.exe
- 直接把docker-machine-Windows-x86_64.exe,复制到D:/docker-machine文件夹下。并改名为docker-machine.exe。
- 把文件夹D:/docker-machine,配置到环境变量path中。
- 进入power shell,输入docker-machine。有输出则表示安装配置成功
3.2 使用docker-machine
- 通过Virtualbox创建安装docker的虚拟机demo1:docker-machine create demo1
- 下载慢,可以下载完成镜像放到 C:\Users\11542.docker\machine\cache\boot2docker.iso
- docker-machine ls 查看创建的docker虚拟机
- docker-machine ssh demo1连接docker虚拟机
- docker-machine stop demo1停止docker虚拟机
- docker-machine rm demo1 删除docker虚拟机
第四节 Aws亚马逊云创建docker虚拟机
- 需要一张信用卡,用来注册账号
- 当然也可以选择国内的云服务商。
- 通过Security, ldentity & Compliance -> IAM -> Your Security Credentials ->Access keys创建认证信息。记下Security Key
- 创建文件夹~/. aws/credentials,根据官网配置信息
[default]
aws_access_key_id=AKID1234567890
aws_secret_access_key=MY-SECRET-KEY
- 通过本地的docker-machine,创建aws上的docker虚拟机。
# docker-machine名字aws-imooc
docker -machine create --driver amazonec2 --amazonec2- open-port 8000 --amazonec2-region us-west-1 aws-imooc
- 导入Aws的docker服务器到本地:eval $( docker-machine env aws - imooc)
- 创建完别忘记删除,因为会从你信用卡上扣费呀。
第五节 docker Playground 使用docker
- 访问网站:https://labs.play-with-docker.com/
- 它的登录名和密码在这个网站注册:https://www.docker.com
- 优点:不用安装直接使用
- 缺点: 共享资源,超时自动销毁