【Docker】入门1_从0开始Docker_Docker是什么

Docker系列文章目录


前言

为什么要使用Docker呢?

相信大家在大学编程中应该学过C语言,C++语言,Java语言来进行编程。 在编程过程中,CC++语言需要g++来进行编译,Java则需要JDK来编译,并使用JRE来运行。有时候程序在自己电脑上运行成功,但室友copy过去之后就报错;实验室运行成功,但是拷贝到本机就不行;网络上的代码片段拷贝下来,在本机编译过了但也无法运行;

为了解决由于机器环境不同,机器资源不同而导致程序运行出现差异的问题,Docker就应运而生。


Docker是什么

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

Docker解决的问题

  1. 环境不一致,导致水土不服; 开发的时候jdk使用1.8,测试服务器的jdk版本1.7
  2. 多用户的操作系统相互不能隔离,会相互影响; 一台服务器如果部署多个应用程序,当某个程序运行除了问题牵连其他的服务.
  3. 当做活动需要快速搭建服务集群时,传统方式效率低;
  4. 安装redis、nginx等开源服务太繁琐;

Docker思想

  1. 集装箱 将你的应用程序打包成一个集装箱(jdk1.8+wfx-search、nginx+gcc+依赖库),谁需要这个应用直接把整个箱子拿过去即可
  2. 标准化 运输的标准化、命令的标准化
  3. 隔离性 docker基于linux内核单独开辟一块空间,来部署运行应用服务

Docker架构图

相关概念

Docker 包括三个基本概念:

  1. 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
  2. 镜像(Image):Docker 镜像,就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  3. 容器(Container):镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的

定义:容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 容器通过 Docker 镜像来创建。 容器与镜像的关系类似于面向对象编程中的对象与类。

经验分享 程序员 微信小程序 职场和发展