当前位置: 首页 > news >正文

Docker容器操作命令大全

一、容器生命周期管理

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

二、容器操作与调试

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

三、镜像管理

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

四、存储管理

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

五、网络管理

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

六、生产运维实践

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

七、集群与编排

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

八、系统维护与监控

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

生产环境五大黄金法则

  1. 镜像版本固化:禁止使用latest标签,必须明确版本号(如nginx:1.27.5)(内网不影响)
  2. 资源硬性限制:所有容器必须设置–memory和–cpus限制
  3. 日志轮转机制:通过max-size和max-file防止日志撑爆磁盘
  4. 非root用户运行:使用–user指定非特权用户(UID>1000)
  5. 只读文件系统:配合tmpfs实现写入路径最小化
    重要提醒:永远不要在容器内存储重要数据!所有持久化数据必须通过:
    • 绑定挂载(Bind Mounts)
    • 命名卷(Named Volumes)
    • 分布式存储(NFS/Ceph等)
    ✅ 容器即不可变基础设施(Immutable Infrastructure)
    ✅ 日志输出到stdout/stderr而非文件
    ✅ 单容器单进程模型(Sidecar模式除外)
    ✅ 镜像构建遵循最小化原则(如Alpine基础镜像)
    记住: 最危险的Docker命令不是rm -f,而是缺乏生产级意识的随意操作。
http://www.dtcms.com/a/279623.html

相关文章:

  • C++-linux 7.文件IO(一)系统调用
  • 是时候重估蔚来的技术价值了
  • 【科研绘图系列】R语言绘制世界地图
  • python的小学课外综合管理系统
  • MMpretrain 中的 LinearClsHead 结构与优化
  • 分布式光伏并网中出现的电能质量问题,如何监测与治理?
  • 【数据库】慢SQL优化 - MYSQL
  • 系统调用入口机制:多架构对比理解(以 ARM64 为主)
  • MySQL高级篇(一):从存储引擎到索引优化实战
  • 人工智能正逐步商品化,而“理解力”才是开发者的真正超能力
  • 在数字工厂实施过程中,如何对计划、调度部门进行需求调研
  • 简单排序。
  • 1.连接MySQL数据库-demo
  • 基于Snoic的音频对口型数字人
  • OneCode 3.0 VFS客户端驱动(SDK)技术解析:从架构到实战
  • Kafka 时间轮深度解析:如何O(1)处理定时任务
  • 深度测评|2025年BPM厂商排名及选型指南
  • 设计模式》》门面模式 适配器模式 区别
  • 基于Android的
  • 数据可视化全流程设计指南
  • hi3519dv500开发环境搭建及SDK编译和烧录:
  • Linux从零到一的学习
  • 【DOCKER】-6 docker的资源限制与监控
  • Datawhale AI夏令营——用户新增预测挑战赛
  • 营销创意可以从哪些角度挖掘?
  • HNSW(分层导航最小世界)算法:高维向量检索的导航革命
  • 龙虎榜——20250714
  • 手滑误操作? vue + Element UI 封装二次确认框 | 附源码
  • 基于SpringBoot+Vue的体育馆预约管理系统(支付宝沙盒支付、腾讯地图API、协同过滤算法、可视化配置、可视化预约)
  • JAVA并发——volatile关键字的作用是什么