Docker 常用操作指南:镜像管理与容器生命周期

By xuhuan 2025-03-21 03:01:04 文章分类:其它

Docker 常用操作指南:镜像管理与容器生命周期

引言

Docker 作为现代容器化技术的代表,通过镜像(Image)和容器(Container)实现了应用的标准化部署。本文将详细梳理 Docker 镜像与容器的核心操作,涵盖从镜像拉取、容器创建到镜像打包、清理的全流程,助你快速掌握 Docker 日常运维技巧。

一、镜像操作:从拉取到离线加载

1. 拉取镜像(Pull Image)

# 拉取官方最新镜像(默认latest标签)
docker pull ubuntu

# 拉取指定版本镜像
docker pull nginx:1.23.3

# 拉取私有仓库镜像(需登录)
docker login registry.example.com
docker pull registry.example.com/myapp:v1.0

📌 注意:若镜像不存在,Docker 会自动从 Docker Hub 查找(可通过 --registry-mirror 配置国内加速)。

2. 打包镜像(Build Image)

通过 Dockerfile 定义镜像构建规则:

# Dockerfile 示例
FROM ubuntu:22.04
WORKDIR /app
COPY . .
RUN apt-get update && apt-get install -y python3
CMD ["python3", "app.py"]

构建命令:

# -t 标记镜像名:标签,. 表示上下文路径
docker build -t my-python-app:v1.0 .

3. 导出与加载离线镜像

# 导出镜像(保存为tar文件)
docker save -o myapp.tar my-python-app:v1.0

# 加载离线镜像(无网络环境)
docker load -i myapp.tar

二、容器操作:创建、映射与销毁

1. 创建并运行容器(Run Container)

# 基础命令:镜像名 + 执行命令
docker run -d --name my-nginx nginx:latest

# 端口映射(-p 宿主机端口:容器端口)
docker run -d -p 8080:80 --name my-nginx nginx

# 目录映射(-v 宿主机路径:容器路径[:权限])
docker run -d \
  -p 8080:80 \
  -v /data/nginx/html:/usr/share/nginx/html \
  --name my-nginx \
  nginx

💡 最佳实践:使用 -v 映射配置文件或数据目录,实现容器数据持久化。

2. 容器生命周期管理

# 查看所有容器(-a 显示停止的容器)
docker ps -a

# 启动/停止/重启容器
docker start my-nginx
docker stop my-nginx
docker restart my-nginx

# 删除容器(需先停止,-f 强制删除)
docker rm my-nginx
docker rm -f $(docker ps -aq)  # 删除所有容器

三、镜像与容器清理:释放资源

1. 删除镜像

# 删除本地镜像(-f 强制删除)
docker rmi my-python-app:v1.0

# 删除所有未使用的镜像( dangling 镜像)
docker image prune -a

2. 空间管理

# 查看 Docker 磁盘使用情况
docker system df

# 清理所有停止的容器、未使用的镜像、缓存等
docker system prune -a --volumes

四、高级技巧与注意事项

1. 端口映射常见问题

  • 端口冲突:使用 docker ps 检查已占用端口,或指定其他端口(如 -p 8081:80)。
  • 多端口映射:-p 8080:80 -p 3306:3306(支持 TCP/UDP 协议)。

2. 目录映射权限问题

  • 宿主机目录需存在,建议使用绝对路径。
  • 添加 :ro 实现只读映射:-v /config:/app/config:ro

3. 镜像命名规范

遵循 [仓库名]/[项目名]:[标签](如 registry.example.com/webapp:v2.0),标签建议使用语义化版本(SemVer)。

五、完整操作示例

场景:部署 Python Web 应用

  1. 编写 Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  1. 构建镜像:
docker build -t my-webapp:v1.0 .
  1. 运行容器(映射端口 + 目录):
docker run -d \
  -p 5000:5000 \
  -v /data/webapp:/app/data \
  --name my-webapp \
  my-webapp:v1.0
  1. 导出镜像(离线部署):
docker save -o my-webapp.tar my-webapp:v1.0
  1. 清理资源:
docker stop my-webapp && docker rm my-webapp
docker rmi my-webapp:v1.0

总结

本文覆盖了 Docker 镜像与容器的核心操作:

  • 镜像:拉取(pull)、构建(build)、导出/导入(save/load)、删除(rmi)。
  • 容器:创建(run)、启停(start/stop)、映射(-p/-v)、删除(rm)。
  • 高级:离线部署、空间清理、最佳实践。

通过熟练掌握这些命令,你可以高效管理容器化应用的全生命周期。建议结合 docker-compose 实现多容器编排,进一步提升部署效率。

实践建议:在测试环境中反复练习,观察容器日志(docker logs)和状态(docker inspect),深入理解每个参数的作用。Docker 的核心哲学是「一次构建,到处运行」,掌握基础操作后,即可探索 Swarm、Kubernetes 等容器编排技术。

🔗 延伸阅读:

📢 下期预告:Docker Compose 实战——定义多容器应用的优雅方式。

附录:常用命令速查表

操作类型 命令示例 说明
拉取镜像 docker pull ubuntu:latest 拉取最新版 Ubuntu 镜像
运行容器 docker run -d -p 80:80 --name nginx nginx 后台运行 Nginx 并映射端口
目录映射 docker run -v /host/data:/container/data app 挂载数据卷
构建镜像 docker build -t myapp:v1 . 基于当前目录的 Dockerfile 构建
导出镜像 docker save -o image.tar myapp:v1 保存镜像为 tar 文件
删除容器 docker rm -f container_id 强制删除容器
删除镜像 docker rmi -f image_id 强制删除镜像

通过本文的指南,你已具备 Docker 日常操作的核心能力。现在,尝试将你的应用容器化吧! 🚀