Docker为什么会出现
对于互联网公司的产品研发,通常有两个环境,一个是开发环境,一个是上线环境。
产品从研发到上线,两个环境的应用配置要对齐,这个时候容易出现这样的问题:
这段代码在我的电脑上能运行,在你的电脑上不能运行了?这个时候开发和运维就会因为这个问题陷入焦灼。
后端程序员需要掌握:
- 开发
- 运维
- 架构
这个时候开发运维一体化了,所以要学习Docker了,要去把运维的工作也干了!运维的工作难度,复杂度主要体现在环境配置这个方面,那我们这帮程序员要去卷运维该怎么卷?
环境的配置十分繁琐,每一个机器都要部署环境(集群Redis、ES、Hadoop)耗时费力。
过去程序员发布一个jar包出来,运维工程师就去配置环境,把这个jar包跑在服务器上。现在的情况变成了:程序员发布jar包的时候,把环境也带上了,把项目+环境一起打包。
总结
传统:开发jar包,运维来做。
- Java–apk–发布(应用商店)–张三使用apk–安装即可
现在:开发打包部署上线,一套流程做完。
- Java–jar(环境)–打包项目带上环境(镜像)–(Docker仓库:商店)—下载我们发布的镜像—直接运行即可,
Docker的思想
Docker 的思想来源于集装箱!Docker的核心思想是: 隔离
打包箱子,每个箱子是互相隔离的!
Docker可以利用隔离机制将服务器利用到极致。
Docker历史
Docker出现之前还是虚拟机的天下,虚拟机技术就是我们在VM中用Linux编程搞环境那套东西。但是后来出现了容器技术,这个容器技术就是我们今天谈的Docker!
Docker 的出现是为了解决虚拟机技术带来的笨重!
总结
虚拟机用的是虚拟化技术,虚拟软件、硬件需要的环境。Docker用的是容器技术,但这种容器技术也是虚拟化技术,只是一种轻量级的虚拟化技术罢了。
传统的虚拟机搞隔离要开很多个虚拟机才能实现分布式集群。这是一种非常笨重的方法。
Docker用了一个叫镜像的东西,把应用需要的环境,比如jdk+mysql等等环境安装打包到镜像里面,你直接运行镜像即可,非常快,非常小巧方便。
Docker能干嘛
虚拟机技术
之前的虚拟机技术:
虚拟机技术的缺点
- 资源占用多
- 冗余步骤多
- 启动很慢
容器化技术
现在的容器化技术:
容器化技术不是模拟一个完整的操作系统。
Docker和虚拟机技术的区别
比较docker和虚拟机技术的不同
- 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
- 容器内的应用直接运行在宿主机的内容。容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了。
- 每个容器之间都是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
DevOps(开发、运维)
应用更快速的交付和部署
传统:
- 一堆帮助文档、安装程序
Docker:
- 打包镜像发布测试、一键运行
更便捷的升级和扩容
使用了Docker之后,我们部署应用就像搭积木一样!
项目打包为一个镜像,扩展服务器A!B!
更简单的系统运维
在容器简化之后,我们的开发,测试环境都是高度一致的。
更高效的计算资源利用
Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多容器实例!服务器的性能可以被利用到极致!
Docker概念
Docker的基本组成
镜像(image)
Docker镜像好比是一个模板,可以通过这个模板来创建容器服务,Tomcat镜像===>run===>Tomcat01容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器(container)
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
启动、停止、删除、基本命令!
目前就可以把容器理解成一个简易的Linux系统
仓科(repository)
仓库就是存放镜像的地方!仓库分为公有仓库和私有仓库!
安装Docker
卸载旧版本
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
需要的安装包
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
设置镜像仓库
sudo yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
启动docker
$ sudo systemctl start docker
验证docker
docker version
测试Helloworld
docker run hello-world
Helloworld执行流程
上面的执行Helloworld
流程如下:
查看镜像文件
docker images
阿里云镜像加速
1、登录阿里云官网
用自己的手机号进行注册即可。
2、找到镜像加速器配置
这里选择CentOS!
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://kjrexsxz.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
《Docker技术革命:从虚拟机到容器化,全面解析Docker的原理与应用-上篇》(二)+https://developer.aliyun.com/article/1625019