Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
Docker图解工作流程
Client(Docker客户端)
Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon
通信。可执行 docker build
等相关命令。
镜像(Image)
镜像(Image),就相当于是一个root文件系统。比如官方镜像 ubuntu:16.04
就包含了完整的一套 Ubuntu16.04
最小系统的root 文件系统。
容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository)
仓库可看成一个代码控制中心,用来保存镜像。Docker Hub提供了庞大的镜像集合供使用。一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签>
的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest
作为默认标签。
Docker安装
这里直接跳过,安装比较简单,直接看菜鸟Docker安装就行了。如果输入以下命令能看到Docker的版本就表示成功了。
1 | $ docker --version |
Docker常用命令
1 | # 拉取官方镜像 |
构建Nginx和Node.js的Docker镜像
Nginx部署
1 | # Dockerfile |
Nodejs部署
1、定制一个程序NodeJS镜像(package.json
的配置这里不放了)1
2npm init -y
npm i koa -s
2、app.js启动一个服务
1 | // app.js |
3、制定node镜像1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# Dockerfile
# 制定node镜像的版本
FROM node:10-alpine
# 移动当前目录下面的文件到app目录下
ADD . /app/
# 进入到 app 目录下面,类似cd
WORKDIR /app
# 安装依赖
RUN npm install
# 对外暴露的端口
EXPOSE 3000
# 程序启动脚本
CMD ["node","app.js"]
4、定制镜像
1 | # 定制镜像 |