Docker 容器命令全解析:从基础操作到高级技巧

文章目录

    • 一、容器的核心特性
    • 二、容器生命周期管理命令
      • 1. 容器创建与启动
      • 2. 容器状态操控
      • 3. 容器信息查看
      • 4. 容器交互操作
      • 5. 容器删除操作
    • 三、数据管理命令
      • 1. 卷挂载操作
      • 2. 数据备份与恢复
    • 四、网络管理命令
      • 1. 网络模式设置
      • 2. 自定义网络操作
    • 五、实战案例:部署高可用 Web 服务
      • 1. 创建容器
      • 2. 设置容器自动重启策略
      • 3. 监控容器健康状态
    • 六、高级技巧与常见问题解决
      • 1. 容器资源限制
      • 2. 容器性能优化
      • 3. 常见问题解决
    • 七、总结与扩展学习

一、容器的核心特性

Docker 容器是基于镜像运行的轻量级实例,具备以下显著特性:

  • 进程隔离:借助 Linux 命名空间(namespace)达成进程级别的隔离。
  • 资源控制:依靠 cgroups 实现对 CPU、内存等资源的精细化控制。
  • 文件系统独立:采用 UnionFS 技术构建分层的文件系统。
  • 启动迅速:启动时间通常在毫秒级别。

二、容器生命周期管理命令

1. 容器创建与启动

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

核心参数说明

参数 功能 典型示例
-d 让容器后台运行 docker run -d nginx
-it 以交互模式运行容器 docker run -it ubuntu bash
-p 映射端口(主机端口:容器端口) docker run -p 8080:80 nginx
-v 挂在卷(主机路径:容器路径) docker run -v /data:/app nginx
–name 为容器指定自定义名称 docker run --name my-nginx nginx
–rm 容器停止后自动删除 docker run --cpus 0.5 nginx
–network 设定网络模式(如 bridge、host、none) docker run --network host nginx
–cpus 限制CPU使用率(例如 0.5 表示半个核心) docker run --cpus 0.5 nginx
-m 限制内存大小 (例如 512m) docker run -m 512m nginx

高级网络配置示例

# 创建自定义网络
docker network create my-net
# 启动容器并连接到自定义网络
docker run -d --network my-net --name web1 nginx

2. 容器状态操控

docker start|stop|restart|kill [容器 ID/名称]

docker stop 会发送 SIGTERM 信号,等待容器优雅关闭。
docker kill 则会直接发送 SIGKILL 信号强制终止容器。

3. 容器信息查看

docker ps [OPTIONS]
  • -a:显示所有容器,包括处于停止状态的容器。
  • -q:仅显示容器的 ID。
  • –format:以自定义格式输出,例如 table {{.ID}}\t{{.Image}}\t{{.Status}}。
    查看容器详细信息
docker inspect [容器 ID]  # 获取容器的 JSON 格式配置
docker stats [容器 ID]   # 实时监控容器的资源使用情况

4. 容器交互操作

docker exec -it [容器 ID] /bin/bash  # 进入容器的 shell
docker logs [OPTIONS] [容器 ID]      # 查看容器日志
  • -f:实时跟踪日志输出。
  • –tail 100:仅显示最后 100 行日志。
  • –since 2023-01-01:查看指定时间之后的日志。

5. 容器删除操作

docker rm [OPTIONS] [容器 ID]
  • -f:强制删除正在运行的容器。
  • $(docker ps -aq):一次性删除所有容器。

三、数据管理命令

1. 卷挂载操作

# 绑定挂载(主机目录映射到容器)
docker run -v /host/path:/container/path nginx
# 使用 Docker Volume
docker volume create my-volume
docker run -v my-volume:/container/path nginx

2. 数据备份与恢复

# 备份容器内的数据
docker exec [容器 ID] tar czf /backup.tar /app/data
# 将备份文件复制到主机
docker cp [容器 ID]:/backup.tar ./

四、网络管理命令

1. 网络模式设置

docker run --network [模式]
  • bridge:默认网络模式,容器之间通过虚拟网桥通信。
  • host:容器直接使用宿主机的网络栈。
  • none:容器没有网络配置。

2. 自定义网络操作

# 创建 overlay 网络(适用于 Swarm 集群)
docker network create -d overlay my-overlay
# 查看网络详情
docker network inspect my-overlay

五、实战案例:部署高可用 Web 服务

1. 创建容器

docker run -d \
  -p 80:80 \
  --name web1 \
  --network my-net \
  --cpus 0.5 \
  -m 256m \
  --restart always \
  nginx

2. 设置容器自动重启策略

docker update --restart always [容器 ID]

3. 监控容器健康状态

docker run -d \
  --name web2 \
  --health-cmd="curl -f http://localhost/health || exit 1" \
  --health-interval=5s \
  --health-timeout=3s \
  nginx

六、高级技巧与常见问题解决

1. 容器资源限制

# 限制 CPU 配额(1000 表示 1 个核心)
docker run --cpu-quota=50000 --cpu-period=100000 nginx
# 限制内存和交换分区
docker run -m 512m --memory-swap=1g nginx

2. 容器性能优化

  • 优先选用 Alpine 基础镜像,以减小镜像体积。
  • 采用 --read-only 模式挂载容器文件系统。
  • 合理设置 --ulimit 参数,如 nofile=1024:2048。

3. 常见问题解决

问题 1:容器启动失败

docker logs [容器 ID]  # 查看启动错误信息
docker inspect [容器 ID] | grep IPAddress  # 检查网络配置

问题 2:数据卷挂载失败

docker volume ls  # 确认 Volume 是否存在
docker run -v $(pwd):/app -w /app node npm install  # 使用绝对路径挂载

七、总结与扩展学习

本文全面解析了 Docker 容器的核心操作命令,涵盖了生命周期管理、资源控制、网络配置等多个方面。通过灵活运用这些命令,能够显著提高应用的交付效率和运行稳定性。

关注我,每天带你进步一点点。

你可能感兴趣的:(docker,容器,运维)