<返回目录     Powered by claude/xia兄

第3课: 容器操作

深入理解Docker容器生命周期管理和操作技巧

容器生命周期深度解析

容器是Docker的核心概念,理解其完整的生命周期对于有效管理容器至关重要。

容器生命周期状态图

创建 → 运行 → 暂停/停止 → 重启/删除

已创建 (Created)运行中 (Running)已暂停 (Paused)

已停止 (Stopped)已删除 (Deleted)

容器状态详解

已创建 (Created)

容器已创建但尚未启动。此时容器已经分配了文件系统,但尚未运行任何进程。

对应命令: docker create

运行中 (Running)

容器正在运行,执行指定的进程。这是容器的主要工作状态。

对应命令: docker run, docker start

已暂停 (Paused)

容器的进程被暂停,但容器状态保持。可以随时恢复运行。

对应命令: docker pause, docker unpause

已停止 (Stopped)

容器进程已终止,但容器配置和文件系统仍然存在。

对应命令: docker stop, docker kill

创建和运行容器:高级技巧

掌握容器创建的各种参数和选项,能够更灵活地控制容器行为。

# 基本运行(如果镜像不存在会自动拉取)
docker run nginx

# 后台运行(守护进程模式)
docker run -d nginx

# 指定容器名称(便于管理)
docker run -d --name my-nginx nginx

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

# 多个端口映射
docker run -d -p 8080:80 -p 8443:443 nginx

# 环境变量设置
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql

# 交互式运行(用于调试和开发)
docker run -it ubuntu /bin/bash

# 自动删除容器(退出后自动清理)
docker run --rm -it ubuntu /bin/bash

# 设置容器重启策略
docker run -d --restart=unless-stopped nginx

# 资源限制(内存和CPU)
docker run -d --memory=512m --cpus=1.5 nginx

# 挂载数据卷
docker run -d -v /host/path:/container/path nginx

# 设置工作目录
docker run -d --workdir=/app nginx

# 设置主机名
docker run -d --hostname=my-container nginx

# 链接到其他容器
docker run -d --link mysql-container:db nginx
常用参数详解:

查看容器

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 查看容器详细信息
docker inspect my-nginx

# 查看容器日志
docker logs my-nginx

# 实时查看日志
docker logs -f my-nginx

# 查看容器资源使用情况
docker stats my-nginx

启动和停止容器

# 停止容器
docker stop my-nginx

# 强制停止容器
docker kill my-nginx

# 启动已停止的容器
docker start my-nginx

# 重启容器
docker restart my-nginx

# 暂停容器
docker pause my-nginx

# 恢复容器
docker unpause my-nginx

进入容器

# 进入运行中的容器(推荐)
docker exec -it my-nginx /bin/bash

# 在容器中执行命令
docker exec my-nginx ls /usr/share/nginx/html

# 使用attach进入容器(不推荐,退出会停止容器)
docker attach my-nginx

删除容器

# 删除已停止的容器
docker rm my-nginx

# 强制删除运行中的容器
docker rm -f my-nginx

# 删除所有已停止的容器
docker container prune

# 删除所有容器
docker rm -f $(docker ps -aq)

容器与主机文件交互

# 从容器复制文件到主机
docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

# 从主机复制文件到容器
docker cp ./index.html my-nginx:/usr/share/nginx/html/

# 查看容器文件系统变化
docker diff my-nginx

容器提交为镜像

# 将容器保存为新镜像
docker commit my-nginx my-custom-nginx:v1.0

# 添加提交信息
docker commit -m "Added custom config" -a "Author" my-nginx my-custom-nginx:v1.0

容器生命周期

容器的状态转换:

实践练习

  1. 运行一个nginx容器,映射到本地8080端口
  2. 查看容器日志,确认nginx正常启动
  3. 进入容器,修改默认页面内容
  4. 将修改后的容器提交为新镜像
  5. 停止并删除容器,使用新镜像重新运行
  6. 练习容器的启动、停止、重启操作