Docker 是一个开源的应用容器引擎,基于 go语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
理解 Docker之前,首先我们得先区分清楚两个概念,容器和虚拟机。
-
虚拟机:传统虚拟机如VMware,VisualBox之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
-
容器:容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。

容器技术是实现操作系统虚拟化的一种途径,可以在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。
1、Docker架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
容器 | 对象 |
镜像 | 类 |
Docker 包括三个基本概念:镜像(Image)、容器(Container)、仓库(Repository)
Docker 镜像是用于创建 Docker 容器的模板。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
2) Docker 容器
容器是独立运行的一个或一组应用。镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
3) Docker 仓库
Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
2、Docker安装(Centos 7)
- yum包更新到最新:sudo yum update
- 安装需要的软件包:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源为阿里云:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum缓存:sudo yum makecache fast
- 安装 Docker-ce:sudo yum -y install docker-ce
- 启动 Docker 后台服务:sudo systemctl start docker
- 查看版本:docker -v
3、Docker启动和停止
- 启动 Docker 进程:sudo systemctl start docker
- 查看:sudo systemctl status docker
- 停止:sudo systemctl stop docker
4、Docker命令
(1)列出所有的容器 id
docker ps -aq
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)