一、 容器技术和docker简介
1. 部署演变
l 在一台物理机部署Application
l 虚拟化技术
2. 容器的必要性
l 开发人员开发一个Application需要各种环境,各种依赖
l 运维人员部署Application时也需要搭建各种环境
3. 容器解决的问题
l 解决了开发和运维之间的矛盾
4. 容器是什么
l 对软件和其依赖的标准化打包
l 应用之间相互隔离
l 共享同一个OS Kernel
l 可以运行在很多主流操作系统上
5. 虚拟机与容器的区别
l 虚拟机是物理层面的隔离,容器是Application层面的隔离
6. docker是什么
l docker是目前最流行的容器技术的实现
l 2004~2008年Linux已经出现了LXC,2013年docker包装了LXC,2013年三月开源,2016年docker分为企业版和社区版
7. docker能做什么
l 简化配置
l 提高效率
8. docker和kubernates
l docker可以被k8s管理
l kubernetes,简称k8s
9. DevOps
l DevOps ——解决开发和运维间合作和沟通
l 不仅仅依赖docker,还需要版本管理,持续集成等
10. docker的应用
l 在2015年的618大促中,京东大胆启用了基于Docker的容器技术来承载大促的关键业务(图片展现、单品页、团购页),当时基于Docker容器的弹性云项目已经有近万个Docker容器在线上环境运行,并且经受住了大流量的考验
l 2016年618中,弹性云项目更是担当重任,全部应用系统和大部分的DB服务都已经跑在Docker上,包括商品页面、用户订单、用户搜索、缓存、数据库,京东线上将会启动近15万个Docker容器
l 京东弹性计算云通过软件定义数据中心与大规模容器集群调度,实现海量计算资源的统一管理,并满足性能与效率方面的需求,提升业务自助上线效率。应用部署密度大幅提升,资源使用率提升,节约大量的硬件资源
二、 docker环境的各种搭建方法
1. docker的安装介绍
l 官网:https://docs.docker.com/
l Docker 提供了两个版本:社区版 (CE) 和企业版 (EE)
2. docker在mac系统上安装
3. docker在windows系统上安装
4. docker在CentOS系统上安装
l 官方文档:Install Docker Engine on CentOS | Docker Documentation
防止有残留
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装可能用到的依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加位置
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
查询可以装什么docker版本
yum list docker-ce --showduplicates | sort -r
安装指定版本
yum -y install docker-ce-18.06.1.ce-3.el7
开启
systemctl start docker
设置开机自启动
systemctl enable docker
查看版本
装完docker,修改如下文件,写入内容,重启docker,配置国内镜像
vi /etc/docker/daemon.json
加入以下内容:
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
重启docker
systemctl restart docker
5. docker在Ubuntu系统上安装
6. docker-machine的使用
l Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在虚拟机中安装 Docker
l 可以通过 docker-machine 命令来管理这些虚拟机和 Docker
7. docker palyground
l 地址:https://labs.play-with-docker.com/
l 直接使用云端的docker
公共的,每个人用4小时
左侧点一下,就增加一个实例
三、 docker的镜像和容器
1. docker的底层技术实现架构
l docker提供了打包运行app的平台
l 将app与底层基础设施隔离
2. docker engine
l docker engine是核心,里面有后台进程dockerd,提供了REST API接口,还提供了CLI接口,另外,docker就是一种C/S的架构
3. 整体架构
4. 底层技术支持
l Namespaces:网络隔离
l Control groups:资源限制
l Union file systems:系统分层
5. docker image概述
l 是文件和meta data的集合
6. 制作baseImage
l baseImage:基于系统的基础镜像
根据当前位置编译镜像
docker build -t gochaochao/hello-world .
可以查看编译后的镜像
docker image ls
运行镜像,成为一个容器
docker run gochaochao/hello-world
也可以官方直接拉取镜像
docker pull redis
查看镜像
7. container概念和使用
l container可以理解为运行时的实例,与image不同
查看所有运行过的container容器
如果没有就去官方下载
可以交互运行容器
此时,可以查到当期运行时的容器
删除某个镜像
还可以删除所有容器
查出所有没有在运行的实例
如下指令可以删除没有在运行的容器
8. 创建Image的两种方式
l 基于image创建container后,如果在container做了一些变化,例如安装了某个软件,可以将这些改变,commit成一个新的image,也可以简写为docker commit
交互运行一个centos实例,给里面装一个lrzsz
装完退出
可以查看到修改后的容器
将这个新的容器,打包成一个新的镜像
生成新的镜像
docker commit determined_hermann gochaochao/centos-lrzsz