100个常用Docker容器操作命令!

 互联网   2025-08-12 10:47   2811 人阅读  0 条评论

100个常用Docker容器操作命令!  第1张

容器化部署已成为现代运维的核心技能,掌握这些命令让你轻松驾驭从开发到生产的全流程。

一、容器生命周期管理(18个)

  1. 1. 运行容器:docker run -d --name web nginx:latest 后台启动Nginx容器
  2. 2. 启动已停止容器:docker start web
  3. 3. 停止运行中容器:docker stop web(发送SIGTERM信号)
  4. 4. 强制停止容器:docker kill web(发送SIGKILL信号)
  5. 5. 重启容器:docker restart web
  6. 6. 暂停容器进程:docker pause web(冻结进程树)
  7. 7. 恢复暂停容器:docker unpause web
  8. 8. 删除停止的容器:docker rm web
  9. 9. 强制删除运行中容器:docker rm -f web(生产环境慎用)
  10. 10. 批量删除停止容器:docker container prune
  11. 11. 创建容器不启动:docker create --name temp alpine sleep 3600
  12. 12. 容器重命名:docker rename old_name new_name
  13. 13. 更新运行参数:docker update --memory 512m web 动态调整内存限制
  14. 14. 设置重启策略:docker run --restart=always nginx 崩溃后自动重启
  15. 15. 容器自愈检测:docker run --health-cmd="curl -f http://localhost || exit 1" --health-interval=30s nginx
  16. 16. 查看健康状态:docker inspect --format='{{.State.Health.Status}}' web
  17. 17. 资源限制(CPU):docker run --cpus=1.5 app 限制使用1.5核CPU
  18. 18. 资源限制(内存):docker run -m 2g --memory-swap=3g app 内存+Swap限制

二、容器操作与调试(15个)

  1. 19. 进入交互终端:docker exec -it web /bin/bash
  2. 20. 后台执行命令:docker exec -d web touch /tmp/test.log
  3. 21. 查看实时日志:docker logs -f --tail 100 web(追踪最后100行)
  4. 22. 查看进程列表:docker top web
  5. 23. 容器详情查看:docker inspect web | jq .(配合jq解析JSON)
  6. 24. 端口映射检查:docker port web
  7. 25. 文件复制到容器:docker cp app.conf web:/etc/nginx/conf.d/
  8. 26. 从容器复制文件:docker cp web:/var/log/nginx/error.log ./
  9. 27. 查看资源统计:docker stats --no-stream(显示当前状态)
  10. 28. 实时监控资源:docker stats web mysql(监控特定容器)
  11. 29. 容器差异检查:docker diff web(查看文件系统变更)
  12. 30. 容器提交为镜像:docker commit -c 'CMD ["nginx"]' web nginx:v2(慎用,推荐Dockerfile)
  13. 31. 容器导出快照:docker export web > web.tar
  14. 32. 挂载调试工具:docker run --cap-add SYS_PTRACE --security-opt seccomp=unconfined debug_tool
  15. 33. 使用nsenter调试:nsenter --target $(docker inspect -f {{.State.Pid}} web) --mount --uts --ipc --net --pid

三、镜像管理(12个)

  1. 34. 拉取镜像:docker pull alpine:3.18(指定版本避免latest风险)
  2. 35. 查看本地镜像:docker images --filter "dangling=false"(过滤悬空镜像)
  3. 36. 删除镜像:docker rmi alpine:3.17
  4. 37. 强制删除镜像:docker rmi -f redis(被容器使用时需加-f)
  5. 38. 清理悬空镜像:docker image prune
  6. 39. 导出镜像存档:docker save -o nginx.tar nginx:latest
  7. 40. 导入镜像存档:docker load -i nginx.tar
  8. 41. 查看镜像历史:docker history nginx
  9. 42. 镜像标签管理:docker tag nginx:latest myreg.com/nginx:v1
  10. 43. 推送镜像到仓库:docker push myreg.com/nginx:v1
  11. 44. 构建镜像:docker build -t myapp:v1 --build-arg ENV=prod .
  12. 45. 多阶段构建:Dockerfile中:COPY --from=builder /app/bin /usr/bin

四、存储管理(10个)

  1. 46. 创建匿名卷:docker run -v /data mysql(自动创建)
  2. 47. 绑定主机目录:docker run -v /host/path:/container/path nginx
  3. 48. 创建命名卷:docker volume create app_data
  4. 49. 使用命名卷:docker run -v app_data:/var/lib/mysql mysql
  5. 50. 查看卷详情:docker volume inspect app_data
  6. 51. 清理未使用卷:docker volume prune
  7. 52. 查看挂载点:docker inspect -f '{{ .Mounts }}' web
  8. 53. 临时文件系统:docker run --tmpfs /tmp:size=100m app
  9. 54. 只读挂载:docker run -v /conf:/etc/nginx:ro nginx(生产安全必备)
  10. 55. 共享存储卷:docker run --volumes-from db_storage backup_tool

五、网络管理(12个)

  1. 56. 查看网络列表:docker network ls
  2. 57. 创建自定义网络:docker network create --driver bridge my_net
  3. 58. 指定容器网络:docker run --network=my_net web
  4. 59. 容器别名访问:docker run --network=my_net --name web --network-alias website nginx
  5. 60. 查看网络详情:docker network inspect my_net
  6. 61. 连接运行中容器:docker network connect my_net existing_container
  7. 62. 断开容器网络:docker network disconnect my_net container
  8. 63. 端口随机映射:docker run -P nginx(自动绑定随机主机端口)
  9. 64. 指定端口映射:docker run -p 8080:80 -p 443:443 nginx
  10. 65. 主机模式网络:docker run --network=host nginx(共享主机网络栈)
  11. 66. 容器间直连:docker run --link redis:db app(传统方式,推荐使用自定义网络)
  12. 67. DNS配置覆盖:docker run --dns 8.8.8.8 --dns-search example.com alpine

六、生产运维实践(15个)

  1. 68. 日志驱动设置:docker run --log-driver=json-file --log-opt max-size=10m nginx
  2. 69. 日志标签添加:docker run --log-opt tag="{{.Name}}/{{.ID}}" nginx
  3. 70. 环境变量注入:docker run -e TZ=Asia/Shanghai -e APP_ENV=prod app
  4. 71. 时区同步配置:docker run -v /etc/localtime:/etc/localtime:ro app
  5. 72. 容器自启策略:docker run --restart=on-failure:5 app(失败时最多重启5次)
  6. 73. 内核参数调整:docker run --sysctl net.core.somaxconn=1024 app
  7. 74. 容器资源限制:docker run --cpus=".5" -m 500m --blkio-weight=500 app
  8. 75. OOM优先级设置:docker run --oom-score-adj=500 app(值越高越易被kill)
  9. 76. 容器用户隔离:docker run --user 1000:1000 app(避免root运行)
  10. 77. 只读文件系统:docker run --read-only app(需配合tmpfs使用)
  11. 78. 能力控制:docker run --cap-add NET_ADMIN --cap-drop SYS_ADMIN app
  12. 79. 安全加固:docker run --security-opt no-new-privileges app(禁止提权)
  13. 80. AppArmor配置:docker run --security-opt apparmor=my_profile app
  14. 81. SELinux标签:docker run --security-opt label=type:container_t app
  15. 82. 设备访问授权:docker run --device=/dev/snd:/dev/snd:rw audio_app

七、集群与编排(10个)

  1. 83. 初始化Swarm:docker swarm init --advertise-addr 192.168.1.100
  2. 84. 加入Swarm集群:docker swarm join --token SWMTKN... 192.168.1.100:2377
  3. 85. 部署Stack服务:docker stack deploy -c docker-compose.yml myapp
  4. 86. 查看服务列表:docker service ls
  5. 87. 服务伸缩操作:docker service scale web=5
  6. 88. 滚动更新配置:docker service update --image nginx:1.23 web
  7. 89. 回滚服务版本:docker service rollback web
  8. 90. 查看服务日志:docker service logs -f web
  9. 91. 节点状态检查:docker node ls
  10. 92. 服务约束部署:docker service create --constraint 'node.role==worker' nginx

八、系统维护与监控(8个)

  1. 93. 查看Docker版本:docker version
  2. 94. 系统全局信息:docker info
  3. 95. 磁盘空间清理:docker system prune -af(慎用!清理所有未用资源)
  4. 96. 事件实时监控:docker events --filter 'event=die'(捕获容器退出事件)
  5. 97. 构建缓存清理:docker builder prune
  6. 98. 检查容器配置:docker config ls(Swarm模式)
  7. 99. 容器漏洞扫描:docker scan nginx:latest(需登录Docker Hub)
  8. 100. 资源使用报告:docker system df -v(详细磁盘占用分析)

生产环境五大黄金法则

  1. 1. 镜像版本固化:禁止使用latest标签,必须明确版本号(如nginx:1.25.3)
  2. 2. 资源硬性限制:所有容器必须设置--memory和--cpus限制
  3. 3. 日志轮转机制:通过max-size和max-file防止日志撑爆磁盘
  4. 4. 非root用户运行:使用--user指定非特权用户(UID>1000)
  5. 5. 只读文件系统:配合tmpfs实现写入路径最小化

重要提醒:永远不要在容器内存储重要数据!所有持久化数据必须通过:

  • • 绑定挂载(Bind Mounts)
  • • 命名卷(Named Volumes)
  • • 分布式存储(NFS/Ceph等)

掌握这100个命令只是起点,真正的容器高手深谙以下原则:
✅ 容器即不可变基础设施(Immutable Infrastructure)
✅ 日志输出到stdout/stderr而非文件
✅ 单容器单进程模型(Sidecar模式除外)
✅ 镜像构建遵循最小化原则(如Alpine基础镜像)

记住: 最危险的Docker命令不是rm -f,而是缺乏生产级意识的随意操作。

100个常用Docker容器操作命令!  第2张

本文地址:https://kubernetes.top/?id=423
温馨提示:文章内容系作者个人观点,不代表Docker中文对观点赞同或支持。
版权声明:本文为转载文章,来源于 互联网 ,版权归原作者所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?