docker就是一个容器,里面封装了很多镜像。能够提高服务器资源利用率,可以快速搭建新技术环境,不用学习复杂的部署环境。 虚拟化满足不了一些业务场景。一次构建,多地方部署!




dockerfile安装依赖 如何使用docker打包依赖环境_docker

代码森林的docker里面的镜像



什么是docker?




dockerfile安装依赖 如何使用docker打包依赖环境_docker_02


它是linux容器的一种封装,提供简单易用的容器使用接口。

它是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker的接口相当简单,用户可以方便的创建、销毁容器。

docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。

程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。

Docker的应用场景有哪些?

Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。


dockerfile安装依赖 如何使用docker打包依赖环境_docker_03


了解docker三个重要概念

1)image镜像docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下周一个已经做好的镜像来直接使用

2)container容器docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以吧容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序。

3)repostory仓库仓库是集中存储镜像文件的沧桑,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)仓库分为两种,公有参考,和私有仓库,最大的公开仓库是docker Hub,存放了数量庞大的镜像供用户下载,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务。

l 镜像和容器(contalners)

通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。容器是镜像的运行实例,当被运行时有镜像状态和用户进程,可以使用docker ps 查看。

l 容器和虚拟机

容器时在linux上本机运行,并与其他容器共享主机的内核,它运行的一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。


dockerfile安装依赖 如何使用docker打包依赖环境_应用程序_04


docker的优缺点?

优点:

l 环境治理

l 提高服务器资源利用率

l 快速搭建新技术环境,不用学习复杂的部署环境

l 轻量级

l 虚拟化满足不了一些业务场景

l 完美构建微服务部署环境

l 一次构建,多地方部署

l 快速部署、迁移、回滚,不依赖底层环境

l 高度保持多个环境一致性


dockerfile安装依赖 如何使用docker打包依赖环境_dockerfile安装依赖_05


缺点:

l 安全性不如VM

l 隔离性不如VM

l 大规模不易管理,K8s应用而生

l 不易有状态应用部署

l 排查问题比较难

l 不支持Windows

docker大改变了什么?

面向产品:产品交付

面向开发:简化环境配置

面向测试:多版本测试

面向运维:环境一致性

面向架构:自动化扩容(微服务)

在云原生的时代

传统的虚拟机已经不能满足用户的大部分需求,而且传统的虚拟机比docker启动慢,浪费资源。

代码森林依托于docker承载万物,提高每一点资源的利用率,我们使用 kubernetes把控docker成为一路领航员,去实现用户的桌面云、实训云。

以期创造更多的可能性和提供更多的解决方案!


dockerfile安装依赖 如何使用docker打包依赖环境_docker_06