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