文章目录
- 前言
- 1. Docker 容器是什么?
- 隔离性
- 轻量级
- 可移植性
- 可复用性
- 2. Docker 核心概念
- 镜像
- 容器
- 仓库
- Dockerfile
- 3. Docker 基本使用
- (1) 安装 Docker
- (2) 容器生命周期管理
- (3) 镜像管理
- (4) 进入容器内部
- (5) 数据持久化(挂载卷)
- (6) 网络管理
- 4. Dockerfile 示例
- 5. Docker 典型使用场景
- 快速部署应用
- 微服务架构
- CI/CD流水线
- 开发环境隔离
- 6. 常见问题
- 权限问题
- 清理资源
- 查看日志
- 总结
前言
本文简单介绍了Docker容器的概念以及使用。
1. Docker 容器是什么?
Docker 容器是一种轻量级、可移植的虚拟化技术,允许开发者将应用程序及其依赖环境打包成一个独立的运行单元。容器基于 Docker 镜像运行,具有以下特点:
隔离性
隔离性:每个容器运行在独立的用户空间,互不干扰(基于 Linux 的 cgroups 和 namespaces)。
轻量级
轻量级:与虚拟机(VM)相比,容器共享主机 OS 内核,无需额外运行完整的操作系统,启动更快、占用资源更少。
可移植性
可移植性:容器可以在任何支持 Docker 的环境中运行(开发、测试、生产环境一致)。
可复用性
可复用性:容器镜像可以存储在仓库(如 Docker Hub)中,供他人下载使用。
2. Docker 核心概念
镜像
镜像(Image) 只读模板,包含运行容器所需的代码、库、环境变量等(如 ubuntu:20.04)。
容器
容器(Container) 镜像的运行实例,具有可写层(存储运行时数据)。
仓库
仓库(Registry) 存储镜像的服务,如 Docker Hub(公共仓库)或私有仓库(如 Harbor)。
Dockerfile
Dockerfile 文本文件,定义如何构建镜像(通过 docker build 命令)。
3. Docker 基本使用
(1) 安装 Docker
Linux(Ubuntu):
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Windows/macOS:下载 Docker Desktop。验证安装:
docker --version # 查看版本
docker run hello-world # 运行测试容器
(2) 容器生命周期管理
命令 作用
docker run <镜像> 创建并启动容器(如 docker run nginx)
docker start <容器ID> 启动已停止的容器
docker stop <容器ID> 停止运行中的容器
docker restart <容器ID> 重启容器
docker rm <容器ID> 删除容器
docker ps 查看运行中的容器(加 -a 显示所有)
示例:
docker run -d -p 80:80 --name my_nginx nginx # 后台运行Nginx并映射端口80
docker ps # 查看容器
docker stop my_nginx # 停止容器
(3) 镜像管理
命令 作用
docker pull <镜像名> 下载镜像(如 docker pull ubuntu)
docker images 查看本地镜像
docker rmi <镜像ID> 删除镜像
docker build -t <镜像名> . 通过 Dockerfile 构建镜像(需在Dockerfile所在目录运行)
示例:
docker pull alpine:latest # 下载Alpine Linux镜像
docker images # 列出镜像
docker rmi alpine # 删除镜像
(4) 进入容器内部
docker exec -it <容器ID> /bin/bash # 交互式进入容器
参数说明:
-i:保持交互式输入。
-t:分配伪终端(TTY)。
/bin/bash:启动Shell(根据镜像可能为 /bin/sh)。
(5) 数据持久化(挂载卷)
容器默认是临时存储,重启后数据丢失。需通过卷(Volume)或绑定挂载持久化数据:
docker run -v /宿主机路径:/容器路径 <镜像> # 绑定挂载
docker run -v 卷名:/容器路径 <镜像> # 使用Docker卷
示例:
docker run -v /home/user/data:/var/www/html nginx # 挂载主机目录
(6) 网络管理
命令 作用
docker network ls 查看网络列表
docker network create 创建自定义网络
docker run --network 指定容器网络(如 --network=host 使用主机网络)
示例:
docker network create my_net # 创建网络
docker run --network=my_net --name app1 my_app # 容器使用自定义网络
4. Dockerfile 示例
通过 Dockerfile 自定义镜像:
# 基于Ubuntu镜像
FROM ubuntu:20.04# 安装依赖
RUN apt update && apt install -y python3# 复制本地文件到容器
COPY app.py /app/
# 设置工作目录
WORKDIR /app
# 定义启动命令
CMD ["python3", "app.py"]
构建镜像:
docker build -t my_python_app .
5. Docker 典型使用场景
快速部署应用
快速部署应用:**一键运行数据库(MySQL)、Web服务器(Nginx)**等。
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
微服务架构
微服务架构:每个服务运行在独立容器中,通过网络通信。
CI/CD流水线
CI/CD 流水线:在容器中运行测试和构建,确保环境一致。
开发环境隔离
开发环境隔离:避免“在我机器上能运行”问题。
6. 常见问题
权限问题
权限问题:在 Linux 上,非 root 用户需加入 docker 组:
sudo usermod -aG docker $USER
清理资源
清理资源:
docker system prune # 删除无用镜像、容器、网络
查看日志
查看日志:
docker logs <容器ID>
总结
Docker 容器通过标准化环境,极大提升了开发、部署的效率。
核心步骤:
1.拉取镜像 → 2. 运行容器 → 3. 管理生命周期 → 4. 自定义镜像(Dockerfile) → 5. 持久化数据/配置网络。
掌握这些基础操作后,可进一步学习 Docker Compose(多容器编排)和 Kubernetes(容器集群管理)。