Skip to content

docker 基本介绍 ​

简介 ​

Docker 是一种虚拟机技术,比传统虚拟机(如 vmware、virtualbox)要更加简单、轻量

  • 启动快
  • 资源占用少
  • 体积小

一句话总结 ​

dockerfile:类似于“package.json”

Image:类似于”Win7 纯净版.rar“

Container: 一个完整的操作系统

基本概念 ​

之前使用虚拟机(vmware、virtualbox)时,步骤如下

  • 下载一个 centos.iso 文件

  • 使用 vmware 安装一个系统 A

  • 使用 vmware 安装一个系统 B

  • ...

此处的 centos.ios 文件就是一个 image 镜像,安装出来的系统就是一个一个 container 容器

docker 的所有 image 都可以在 https://hub.docker.com/ 搜索并下载,还可以自定义 image 上传到这个仓库

一图概述docker

为什么要用 docker ​

虚拟机VSDocker

虚拟机和容器

如上两图所示,容器技术将常见的技术封装到容器中,并通过 namespace 和 control groups 对每个容器进行分离,将重复的资源公有化,除此之外,还能做到应用程序的环境统一化

容器是一种通用技术,docker 只是其中的一种实现

docker 是什么 ​

docker 是用 Go 语言实现的开源项目,可以让我们方便的创建和使用容器,docker 将程序以及程序所有的依赖都打包到 docker container,这样你的程序可以在任何环节都会有一致的表现

docker 的优点 ​

环境隔离、更快速地交付部署、更高效的资源利用、更易迁移扩展、更简单的更新管理、重启更快

启动一个 Docker 容器 ​

如果没有安装,可以再 play with docker 或者 freeaihub 体验一下

docker 的三个概念 ​

docker 的整个生命周期由三部分组成:镜像(image)+ 容器(constainer)+ 仓库(repository)

每台宿主机(电脑),下载好了 docker 后,可以生成多个镜像,每个镜像,可以创建多个容器。发布到仓库时,以镜像为单位。可以理解成:一个容器就是一个独立的虚拟操作系统,互不影响,而镜像就是这个操作系统的安装包。想要生成一个容器,就要安装包(镜像)生成一次,这就是 Docker 的核心概念

镜像(Image) ​

类似于虚拟机上的镜像,是一个包含有文件系统的面向 docker 引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个 Ubuntu 镜像就是一个包含 Ubuntu 操作系统环境的模板(安装包),同理在该镜像上装上 Apache 软件,就可以称为 Apache 镜像

容器(Container) ​

类似于一个轻量级的沙盒,可以将其看作一个极简的 Linux 系统环境(包括 root 权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker 引擎利用容器来运行,隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是相互隔离的,互不影响。

注意:镜像本身是只读的,容器从镜像启动时,Docker 在镜像的上层创建一个可写层,镜像本身不变。

仓库(Repository) ​

类似于代码仓库,这里是镜像仓库,是 Docker 用来集中存放镜像文件的地方。

注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用 tag 进行区分,比如 Ubuntu 仓库存放有多个版本(12.04、14.04 等)的 Ubuntu 镜像

基于 docker 的开发过程 ​

开发者通过 dockerfile 生成(build)一个镜像(image),通过 docker run ... 生成一个容器(constainer),可以把这个镜像推送至远程仓库上(docker push),既可以供别人下载(docker pull)再 run 生成容器。而一些环境变量可以写进 dockerfile 中,这样就保持了环境的一致性,可移植到任何服务器上

docker 架构图 ​

docker架构图