Docker 命令学习记录
Docker 概述
Docker 是一个开源的应用容器引擎。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。确保开发、测试、生产环境一致,
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
核心概念
- 容器(Container):轻量化的运行实例,包含应用代码、运行时环境和依赖库。基于镜像创建,与其他容器隔离,共享主机操作系统内核(比虚拟机更高效)
- 镜像(Image):只读模板,定义了容器的运行环境(如操作系统、软件配置等)。通过分层存储(Layer)优化空间和构建速度
- Dockerfile:文本文件,描述如何自动构建镜像(例如指定基础镜像、安装软件、复制文件等)
- 仓库(Registry):存储和分发镜像的平台,如 Docker Hub(官方公共仓库)或私有仓库(如 Harbor)
运行流程

Docker 命令
辅助命令
| 命令 | 功能 |
|---|---|
| docker vesion | 版本信息 |
| docker info | 系统信息 |
| docker <命令> --help | 帮助手册 |
| docker logs | 查看日志 |
| docker inspect |
获取容器/镜像的详细信息 |
| docker stats | 资源实时使用情况 |
| docker login -u name | 登录 Docker 仓库 |
| docker logout | 登出 Docker 仓库 |
镜像命令
| 命令 | 功能 |
|---|---|
| docker images [-a /-q] | 查看本地镜像 [仓库源 标签 id 创建时间 大小] |
| -a | 显示所有镜像 |
| -q | 只显示镜像 id |
| docker searsh |
搜索镜像 |
| docker pull |
拉取镜像 |
| docker push |
推送镜像 |
| docker rmi -f |
删除镜像 |
| docker tag |
设置镜像标签 |
| 数据同步 | |
| docker commit -m="描述" -a="作者" 容器id 目标镜像名 | 提交修改后镜像 |
| docker save -o <.tar> <容器名> | 保存镜像 |
| docker load -i <.tar> | 加载 镜像 |
| docker build -f |
构建镜像 |
容器命令
| 命令 | 功能 |
|---|---|
| docker run |
创建并启动容器 |
| --name="Name" | 容器名称 |
| -d | 后台运行 |
| -it | 交互式运行,进入容器 |
| -p [ip:主机端口:容器端口 | 主机端口:容器端口 |
| -P | 随机映射主机端口 |
| -e | 配置环境变量 |
| --network <网络名> | 加入网络 |
| --rm | 停止即删除容器 |
| docker ps | 查看运行中的容器 |
| -a | 列出所有运行过的容器 |
| -n=? | 显示最近创建的容器 |
| -q | 只显示容器编号 |
| docker exec <> | 容器中执行命令 |
| docker exec -it <容器ID> /bin/bash | 进入容器内部 |
| exit | 停止容器 |
| ctrl + P + Q | 退出容器但不停止 |
| docker rm |
删除指定容器 |
| docker rm -f $(docker ps -aq) | 删除所有容器 |
| docker start | restart |
| docker top | 容器中进程信息 |
| docker cp id:path dest_path | 内容拷贝 |
| docker export <容器id> <.tar> | 导出容器 |
| cat <.tar> | docker import - <镜像> |
| docker volume ls | 列出 Docker 卷 |
| -v 容器路径 | 匿名挂载 |
| -v 卷名:容器路径 | 具名挂载 |
| :ro | 只读 |
| :rw | 可读可写 |
| -v 主机路径::容器路径 | 指定路径挂载 |
| docker network ls | 列出 Docker 网络 |
| docker network create -d bridge <网络名> | 创建 Docker 网络 |
| -d [bridge/overlay] | 指定网络类型 |
| docker port <镜像名> <端口> | 查看端口绑定情况 |
| docker-compose up | 启动多容器应用(docker-compose.yml) |
| docker-compose down | 停止并删除由 docker-compose 启动的容器、网络 |
具名挂载 和 匿名挂载
默认挂载在 /var/lib/docker/volumes/xxx/data
Dockerfile
构建 docker 镜像的构建脚本
| 指令 | 功能 |
|---|---|
| FROM <镜像名> | 基础镜像 |
| LABEL |
键值对添加元数据 |
| MAINTAINER <name+email> | 构建者(弃) |
| RUN | 镜像中执行命令 |
| CMD | 创建时的默认命令(可覆盖) |
| ENTRYOPINT |
同 CMD(不可覆盖) |
| EXPOSE <端口> | 监听网络端口 |
| ENY |
设置环境变量 |
| ADD | 将文件、目录或远程URL复制到镜像中,自动解压 |
| COPY [--chown= |
拷贝文件到镜像 |
| VOLUME ["路径",...] | 载目录 |
| WORKDIR <$PATH> | 工作目录 |
| USER <用户名>[:<用户组>] | 指定指令用户上下文 |
| ARG <参数名>[=默认值] | 传递给构建器的变量 |
| ONBUILD | 被继承时添加触放器 |
| STOPSIGNAL | 退出容器的系统调用信号 |
| HEALTHCHECK [选项] CMD <命令> | 定义周期性检查 |
| SHELL | 覆盖默认 shell |
Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose 可以使用 docker-compose.yml 文件来配置应用程序需要的所有服务。
version: <v> # 指定 Compose 文件格式版本
services:
<name>: # 服务名
build: . # 从当前目录的 Dockerfile 构建镜像
ports:
- <"80:80"> # 端口映射:主机端口:容器端口
volumes:
- <path:path> # 卷挂载:主机路径:容器路径
depends_on: # 依赖服务
- <>
environment: # 环境变量
- <xx = xx>
networks:
- <net_name> # 连接到自定义网络
healthcheck: # 健康检查
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
networks: # 定义自定义网络
<net_name>:
driver: {bridge}
volumes: # 定义命名卷
<data_name>: