容器技术¶
Docker 是一种轻量级、高性能的虚拟化技术,可以让开发者将应用和依赖打包至一个可移植的镜像中,然后发布到任何 Linux 机器上运行。
镜像就是一个轻量级、独立的运行单元,它包含了应用程序及其所需的所有组件(如库、依赖项、环境变量等)。每个镜像相互隔离,不会产生冲突,可以在任何支持 Docker 的环境中运行。
Docker 还提供了一套工具和命令行界面,使开发人员可以轻松地构建、打包、发布和管理 Docker 镜像。这使得应用程序的交付和部署变得更加简单和可重复,加速了开发周期并提高了应用程序的可移植性和可扩展性。
Docker 的整体架构如下图所示:
要构建一个镜像,可以有多种方式:
- 从 Docker 官方仓库下载
- 从本地容器构建
- 从压缩文件 tar 构建
- 从 Dockerfile 构建
由于众所周知的原因,docker 在国内访问受限,下面是一个可行的拉取 docker 镜像的配置:
$ cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://3laho3y3.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://mirror.ccs.tencentyun.com",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
Docker常用命令¶
Docker API 参考:Docker命令
这里只列出一些常用的命令:
镜像管理:
命令 | 描述 |
---|---|
docker images | 查看本地镜像 |
docker search | 在 Docker Hub 上搜索镜像 |
docker pull | 拉取镜像 |
docker rmi | 删除镜像 |
docker ps | 查看容器 |
docker commit | 提交容器为新的镜像 |
docker save | 保存镜像到文件 |
docker load | 从文件中加载镜像 |
容器管理:
命令 | 描述 |
---|---|
docker create | 从镜像中创建一个容器 |
docker ps | 查看本地容器 |
docker start | 启动一个停止的容器 |
docker stop | 停止一个运行的容器 |
docker rm | 删除容器 |
docker exec | 进入容器 |
docker export | 导出容器到本地文件 |
docker cp | 在本地和容器之间复制文件 |
docker update | 更新容器的配置 |
docker stats | 查看容器的资源占用情况 |
Docker 命令总结:
Dockerfile¶
Dockerfile 是一种特殊的脚本文件,可以由 Docker Runtime 识别并从中构建镜像,它的语法比较简单,可以参考:Dockerfile
Dockerfile 常用指令:
FROM 指定基础镜像
MAINTAINER 指定维护者信息
WORKDIR 设置工作目录
ENV 设置环境变量
LABEL 为镜像添加元数据
RUN 执行命令
CMD 启动时默认执行的命令,只能有一条
COPY 复制文件至容器中
EXPOSE 指定监听端口
VOLUME 设置挂载点
USER 指定运行时的用户名
ARG 定义构建时的变量,启动时以参数--build-arg指定
STOPSIGNAL 定义停止容器时的信号
ONBUILD 在当前镜像被作为基础镜像时,触发的指令
HEALTHCHECK 健康检查
SHELL 指定容器内的 shell
在编写完 Dockerfile 之后,使用docker build
命令来启动 docker。