Docker

来源:互联网 发布:发票数据导出软件 编辑:程序博客网 时间:2024/06/01 07:19

一、Docker 是什么

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

Docker就是集装箱,可以实现虚拟机隔离应用环境的功能,开销比虚拟机小,能把开发环境之间封装成镜像,然后直接部署到生产环境,速度快且不容易出问题。


二、Docker 中的基础概念

1. Docker 守护进程

Docker 守护进程运行在一台主机上。用户并不直接和守护进程进行交互,而是通过 Docker 客户端间接和其通信。

2. Docker 客户端

Docker 客户端,实际上是 docker 的二进制程序,是主要的用户与 Docker 交互方式。它接收用户指令并且与背后的 Docker 守护进程通信,如此来回往复。

3. Dokcer 镜像

Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。当你改变了一个 Docker 镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新 的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发 Docker 镜像变得简单和快速。

Docker的架构中,Docker镜像就是类似于“ubuntu操作系统发行版(基于Linux内核)”。

镜像存储:包含镜像层文件和镜像json文件。

4. Docker 容器

Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker容器是Docker的运行部分。

5. Dockerfile

FROM java:8  //设置基础镜像
VOLUME /tmp  //生成json文件
RUN mkdir /app
ADD ui-1.0.0-SNAPSHOT.jar /app/app.jar
ADD runboot.sh /app/  //将 Dockerfile 所在目录的文件 runboot.sh 加至/app文件夹,此时新一层的镜像只有一项内容,即/app文件夹下的 runboot.sh
RUN bash -c 'touch /app/app.jar'
WORKDIR /app  //为后续的RUN、CMD、ENTRYPOINT指令配置工作目录
RUN chmod a+x runboot.sh
EXPOSE 80
CMD /app/runboot.sh  //生成json文件
RUN echo "Asia/Shanghai" > /etc/timezone;

6. Dokcer 镜像、Docker 容器、Dockerfile 关系

Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。

Dockerfile构建出Docker镜像,通过Docker镜像运行Docker容器。

Docker 镜像属于静态的内容;Docker 容器属于动态的内容。

Docker镜像转化为一个动态的Docker容器:转化的依据是每个镜像的json文件,Docker可以通过解析Docker镜像的json的文件,获知应该在这个镜像之上运行什么样的进程,应该为进程配置怎么样的环境变量,此时也就实现了静态向动态的转变。

转化工作的执行:Docker守护进程 手握Docker镜像的json文件,为容器配置相应的环境,并真正运行Docker镜像所指定的进程,完成Docker容器的真正创建。

Docker容器运行起来之后,Docker镜像json文件就失去作用了。此时Docker镜像的绝大部分作用就是:为Docker容器提供一个文件系统的视角,供容器内部的进程访问文件资源。

转载:http://www.open-open.com/lib/view/open1446695630904.html

http://www.open-open.com/lib/view/open1423703640748.html

http://www.csdn.net/article/2015-08-21/2825511

0 0
原创粉丝点击