Py学习  »  docker

100个Docker容器操作命令实战大全!

运维网工 • 1 周前 • 26 次点击  

 

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

一、容器生命周期管理(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. 初始化Swarmdocker 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-sizemax-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,而是缺乏生产级意识的随意操作。

 

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/184234
 
26 次点击