docker流程
Docker概述
docker出现
开发代码 --- 上线代码
问题:
- 开发环境可以运行,部署到线上环境出现他各种错误
- 版本更新,服务不能用了
环境配置十分麻烦,每一台机器都要部署环境(集群redis,ES, Hadoop)
发布一个项目j ar + (Redis Mysql jdk ES), 项目能不能带上环境安装打包
之前在服务器配置一个应用的环境 Redis,MYSQL, JDK ES Hadoop,配置麻烦, 不能跨平台
windows 最后发布到linux
传统: 开发提供jar包,其他的运维做
现在:开发打包部署上线,一套流程做完
Docker给以上的问题提出了解决方案
开发:Java --- jar + 环境 --- 打包成docker镜像. --- 发送到docker仓库
运维:从镜像仓库下载镜像并运维, 直接用
镜像仓库理解为应用商店
java - apk -发布到应用商店
安卓客户端-- 从应用商店下载 - 本地运行 -- 直接使用
JRE --- 多个应用 (比如说都是8088端口,产生了端口冲突)
---》使用docker将项目代码以及依赖的的环境打包成docker镜像然后在服务器上运行
docker历史
2013 docker 开源
2014.4.9。docker 1.0 发布
虚拟机
在windows中装一个vmware, 通过这个软件我们可以虚拟出来一台或多台电脑(硬件+软件)
虚拟机属于虚拟化技术, docker是容器技术,也是虚拟化技术的一种
vm, linux centos原生镜像。 隔离,需要开启多个虚拟机, 几个G,启动速度分钟级
docker, 隔离, 镜像(最核心的环境4m+jdk+mysql)小巧,几M,启动速度秒级
docker基于Go语言开发,2013年开源项目
docker能干嘛
虚拟机技术缺点
资源占用多
冗余步骤多
启动慢
容器化技术不是模拟的完整的一个系统
比较docker和虚拟机技术的不同:
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内核,容器内是没有内核的,也没有虚拟硬件,所以轻便了
- 每个容器是相互隔离,每个容器内都有一个属于自己的文件系统,互不影响
DevOps(开发,运维)
应用快速的交付和部署
传统:一堆帮助文档,安装程序
Docker: 打包发布测试,一键运行
更便捷的升级和扩容
使用了docker以后, 升级只需要更新镜像
Springboot 1.5 Redis 5 tomcat8
项目打包一个镜像,扩展服务器A. 服务器B
更简单的系统运维
容器化后,开发,测试环境高度一致
更高效的计算资源利用
Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,服务器的性能可以被压榨到极致
Docker安装
docker的名词解释
镜像(image):
docker镜像就好比是一个模版,可以通过这个模版来创建容器服务, tomcat镜像》run=>tomcat容器(提供服务器),
通过这个镜像可恶意创建多个容器(最终服务运行或者项目运行就是在容器中)
容器(container):
Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建
启动,停止,删除,基本命令
目前就可以把这个容器理解就是一个简易的linux系统
仓库(repository):
仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
Docker Hub(默认是国外的)
阿里云。。都有容器服务器(配置镜像加速!)
环境准备
# uname -r
3.10.0-1160.11.1.el7.x86_64
# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
文档:https://docs.docker.com/engine/install/centos/
第一步:卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第二步:需要的安装包
yum install -y yum-utils
第三步:设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo