Docker系列文章目录
前言
为什么要使用Docker呢?
相信大家在大学编程中应该学过C语言,C++语言,Java语言来进行编程。
在编程过程中,C\C++语言需要g++来进行编译,Java则需要JDK来编译,并使用JRE来运行。有时候程序在自己电脑上运行成功,但室友copy过去之后就报错;实验室运行成功,但是拷贝到本机就不行;网络上的代码片段拷贝下来,在本机编译过了但也无法运行;
为了解决由于机器环境不同,机器资源不同而导致程序运行出现差异的问题,Docker就应运而生。
Docker是什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。简言之,就是可以在Linux上镜像使用的这么一个容器。
Docker解决的问题
-
环境不一致,导致水土不服;
开发的时候jdk使用1.8,测试服务器的jdk版本1.7 -
多用户的操作系统相互不能隔离,会相互影响;
一台服务器如果部署多个应用程序,当某个程序运行除了问题牵连其他的服务. -
当做活动需要快速搭建服务集群时,传统方式效率低;
-
安装redis、nginx等开源服务太繁琐;
Docker思想
- 集装箱
将你的应用程序打包成一个集装箱(jdk1.8+wfx-search、nginx+gcc+依赖库),谁需要这个应用直接把整个箱子拿过去即可 - 标准化
运输的标准化、命令的标准化 - 隔离性
docker基于linux内核单独开辟一块空间,来部署运行应用服务
Docker架构图
相关概念
Docker 包括三个基本概念:
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
- 镜像(Image):Docker 镜像,就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的
定义:容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。