- 具有长时间运行的守护进程的服务器dockerd。
- API,用于指定程序可以用来与Docker守护程序进行通信的接口。
- 命令行界面(CLI)客户端docker。
CLI使用Docker API通过脚本或直接CLI命令控制或与Docker守护程序进行交互。许多其他Docker应用程序都使用基础API和CLI。守护程序创建和管理Docker对象,例如映像,容器,网络和卷。
相关概念
- Docker Engine:一个C/S应用,包含以下组件:长时间运行的守护进程daemon、一个REST API用于指挥守护进程、一个命令行接口
- Docker Daemon(dockerd):监听Docker API请求,也可以与其他Daemon交互来管理Docker服务
- Docker Client(docker):用于连接Daemon并与之交互,可以连接多个Daemon
- Image(镜像):容器的模板,可以根据不同的配置生成多个实例。
- Container(容器):镜像的实例,可以通过Docker API来开启/停止/删除,并且可以连接到多个网络,挂在多个存储,甚至可以在当前状态创建新镜像
- Docker Compose:一个定义和运行多容器Docker应用的工具,它的功能有开启/关闭服务、查看服务的运行状态输出服务的日志、运行一次性命令等。守护进程创建并管理Docker对象,例如镜像、容器、network、volumes
- Dockerfile:用于定义应用环境,使环境可以重复加载多次
- yml文件:用于定义组成应用的服务们的文件,使服务们可以在一个独立的环境中一起运行
- Docker Machine:用于安装Docker Engine到虚拟主机,并且可以使用相关命令来管理这些主机
- Swarm mode:用于编排部署多个Docker容器
- k8s:用于部署和管理容器
搭建环境
根据官方安装教程(debian)一步步安装完成后,执行docker run hello-world以运行官方的Hello World示例
- Docker客户端连接至Docker守护进程
- Docker守护进程从Docker Hub上拉取hello-world镜像
- Docker守护进程从拉取的镜像创建一个新容器,终端上显示的这段话就是从这个容器创建的
- Docker守护进程将输出流式传输到Docker客户端,显示到下图的终端上
image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
列出本机正在运行的容器
$ docker container ls
列出本机所有容器,包括终止运行的容器
$ docker container ls --all
终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
$ docker container rm [containerID]
Dockerfile 文件:它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。
以 koa-demos 项目为例制作自己的 Docker 容器
$ git clone https://github.com/ruanyf/koa-demos.git
$ cd koa-demos
然后,在项目的根目录下,新建一个文本文件 Dockerfile,写入下面的内容。
FROM node:8.4
COPY . /app
WORKDIR /app RUN npm install --registry=https://registr