1.Docker介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。是一个快速交付应用,运行应用的技术,可以将应用程序及其所需的依赖,系统函数库,环境,配置等文件一起打包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
2.Docker架构
Docker是一个C/S架构的程序
端 | 作用 |
---|---|
服务端 | Docker守护进程,负责处理Docker指令,管理镜像,容器等 |
客户端 | 通过命令(本地)或RestAPI(远程)向Docker服务端发送指令 |
3.镜像
(1)镜像(Image)
Docker将应用程序及其所需的依赖,系统函数库,环境,配置等文件打包在一起,称为镜像
注:Docker镜像中包含完整的运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行
(2)镜像的分层结构
层级 | 描述 |
---|---|
基础镜像层(BaseImage) | 最底层,应用依赖的系统函数库,环境,配置,文件等 |
中间层(Layer) | 在BaseImage基础上添加安装包,依赖,配置等,每次操作都形成新的一层 |
入口(Entrypoint) | 最高层,镜像运行入口,一般是程序启动的脚本和参数 |
(3)常用的镜像操作
注:镜像名称一般两部分组成:[repository]:[tag],没有指定tag的时候,默认是latest,代表最新版本的镜像
命令 | 功能 |
---|---|
docker build | 从Dockerfile文件中构建镜像 |
docker pull | 从托管平台拉去镜像 |
docker push | 推送镜像到托管平台 |
docker images | 查看本地镜像 |
docker rmi | 删除镜像 |
docker save | 保存镜像为一个压缩包 |
docker load | 加载压缩包为镜像 |
(4)Dockerfile
Dockerfile就是一个文本文件,其中包含一个个指令,用指令说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer
指令 | 说明 |
---|---|
FROM | 指定基础镜像 |
ENV | 设置环境变量,可在后面指令使用 |
COPY | 拷贝本地文件到镜像的指定目录 |
RUN | 执行Linux的shell命令 |
EXPOSE | 指定容器运行时监听的端口,是给镜像的使用者看的 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 |
4.容器
(1)容器(Container)
镜像中的应用程序运行后形成的进程就是容器,Docker会使用沙箱机制,给容器做隔离,对外不可见
(2)常用的容器操作
命令 | 功能 |
---|---|
docker run | 创建容器并运行 |
docker pause | 容器从运行状态到暂停状态 |
docker unpause | 容器从暂停状态到运行状态 |
docker stop | 容器从运行状态到停止状态 |
docker start | 容器从停止状态到运行状态 |
docker ps | 查看所有运行的容器及状态 |
docker logs | 查看容器运行日志 |
docker exec | 进入容器执行命令 |
docker rm | 删除指定容器 |
(3)数据卷(volume)
数据卷是一个虚拟目录,指向宿主机文件系统的某个目录(Docker在/var/lib/docker/volumes目录下创建数据卷),是容器内目录与宿主机目录之间映射的桥梁,实现容器内目录与宿主机目录的双向绑定,用于解决容器与数据耦合的问题
挂载指定目录:指定目录必须以"/“和”./"开头,如果直接以名称开头,会被识别为数据卷而非指定目录
数据卷名称或指定目录:容器内目录
(4)DockerCompose
DockerCompose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署
docker compose [OPTIONS] [COMMAND]
OPTIONS
参数 | 说明 |
---|---|
-f | 指定compose文件 的路径和名称 |
-p | 指定project名称 |
COMMAND
指令 | 说明 |
---|---|
up | 创建并启动所有service容器 |
down | 停止并移除所有容器、网络 |
ps | 列出所有启动的容器 |
logs | 查看指定容器的日志 |
stop | 停止容器 |
start | 启动容器 |
restart | 重启容器 |
top | 查看运行的进程 |
exec | 在指定运行中的容器执行命令 |
5.DockerHub
DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry(国内也有网易云镜像服务,阿里云镜像库)