Docker 的基础概念
- 什么是 Docker?
- Docker 是一个基于 Go 语言开发的开源容器化平台,用于构建、分发和运行应用程序容器。它的核心理念是“Build Once, Run Anywhere”,即一次构建,随处运行。
- Docker 容器是一种轻量级、可移植的虚拟化技术,与传统虚拟机相比,资源占用更少,启动更快。
- Docker 的核心组件
- 镜像(Image) :容器的模板,包含运行应用程序所需的所有依赖和配置。
- 容器(Container) :基于镜像运行的实例,是独立运行的进程。
- 仓库(Registry) :存储和分发镜像的平台,如 Docker Hub。
- 数据卷(Volume) :用于持久化存储数据,即使容器停止或删除,数据仍然保留。
- 网络(Network) :用于容器间的通信,支持桥接网络、覆盖网络等多种类型。

Docker 的安装
- 安装 Docker 的步骤:
- Windows 和 Mac:推荐使用 Docker Desktop,支持图形化界面和一键安装。
- Linux:可以通过官方仓库安装,如
apt-get install docker.io(适用于 Ubuntu/Debian)。
- 验证安装:
- 安装完成后,运行
docker --version和docker ps命令,确认 Docker 正常工作。
- 安装完成后,运行
Docker 常见命令
1. 镜像管理
1.1. 拉取镜像
命令:docker pull <镜像名>
- 规则:
<镜像名>可以包含仓库名、镜像名和标签。例如:- 拉取官方 Python 镜像的特定版本:
docker pull python:3.8 - 拉取特定仓库中的镜像(如
example仓库中的镜像):docker pull example/private_image
- 拉取官方 Python 镜像的特定版本:
- 参数:
--platform:适用于多平台镜像,指定拉取特定平台的镜像版本。--all-tags:拉取所有标签的镜像,而不是默认的latest。
1.2. 构建镜像
命令:docker build [选项] -t <镜像名> .
- 规则:
-t用于指定镜像名称和标签。.表示 Dockerfile 所在的上下文路径。- Dockerfile 是构建镜像的核心文件,由指令构成。
- 常用选项:
-f:指定 Dockerfile 文件路径(默认为上下文路径中的Dockerfile)。--no-cache:构建时不使用缓存。--build-arg:定义构建过程中的变量。
1.3. 查看镜像
命令:docker images
- 规则:
- 显示本地所有镜像及其基本信息:
- 镜像 ID(唯一标识)
- 镜像名称
- 标签
- 大小
- 创建时间
- 可使用过滤参数(
-f)筛选镜像,如:docker images -f "dangling=true" # 查找未被使用的镜像(悬空镜像)
- 显示本地所有镜像及其基本信息:
2. 容器管理
2.1. 运行容器
命令:docker run [选项] <镜像名>
- 规则:
-it:以交互式模式运行容器,通常用于类似终端的操作。docker run -it ubuntu /bin/bash-d:以守护进程(后台)方式运行容器。docker run -d nginx-p:端口映射,将主机端口绑定到容器端口。docker run -p 8080:80 nginx # 主机 8080 端口绑定到容器 80-v:挂载卷,用于持久化数据或共享文件。docker run -v /host/path:/container/path mysql--name:指定容器名称,方便后续管理。docker run --name my-container nginx--rm:容器退出即自动删除,适用于临时容器。
2.2. 查看容器
命令:docker ps
- 规则:
- 默认显示正在运行的容器。
- 使用
-a参数显示所有容器(包括已停止的)。docker ps -a - 使用
-q参数仅显示容器 ID。docker ps -q -a - 使用过滤参数(
-f)筛选容器,如:docker ps -f "status=exited" # 查找已退出的容器
2.3. 操作容器
- 停止容器:
docker stop <容器名或容器ID> - 启动容器:
docker start <容器名或容器ID> - 重启容器:
docker restart <容器名或容器ID> - 删除容器:
docker rm <容器名或容器ID> - 进入运行中的容器:
docker exec -it <容器名或容器ID> /bin/bash
3. 网络管理
3.1. 查看网络
命令:docker network list 或 docker network ls
- 规则:显示所有容器网络的基本信息。
3.2. 创建自定义网络
命令:docker network create [选项] <网络名称>
- 常用选项:
--driver:指定网络驱动(如bridge、overlay)。docker network create --driver bridge my-network--subnet:可在bridge模式下指定子网 IP 段。docker network create --subnet 192.168.0.0/16 my-net
3.3. 删除网络
命令:docker network rm <网络名称>
3.4. 查看网络详情
命令:docker network inspect <网络名称>
- 显示网络的详细配置信息,包括连接该网络的容器列表。
4. 卷管理
4.1. 创建卷
命令:docker volume create [选项] <卷名称>
- 常用选项:
--driver:指定卷所使用的驱动。--label:添加元数据标签。
4.2. 查看卷
命令:docker volume ls
- 规则:显示所有卷的名称和驱动。
4.3. 查看卷详情
命令:docker volume inspect <卷名称>
4.4. 删除卷
命令:docker volume rm <卷名称>
5. 日志管理
命令:docker logs <容器名或容器ID>
- 规则:
- 默认查看全部日志。
- 使用
-f参数可实时跟踪日志输出。docker logs -f my-container - 使用
--tail参数查看最近的日志条目。docker logs --tail 10 my-container
6. 其他常用命令
- 查看容器进程:
docker top <容器名或容器ID> - 查看容器资源使用情况:
docker stats [容器名或容器ID] - 导出和导入镜像:
- 导出:
docker save -o my-image.tar <镜像名> - 导入:
docker load -i my-image.tar
- 导出:
Docker Compose(容器编排工具)
- 创建并启动容器:
docker-compose up -d - 停止容器:
docker-compose stop - 查看服务日志:
docker-compose logs -f - 删除服务:
docker-compose down