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

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

  • 运行容器docker run -d --name web nginx:latest 后台启动Nginx容器

  • 启动已停止容器docker start web

  • 停止运行中容器docker stop web(发送SIGTERM信号)

  • 强制停止容器docker kill web(发送SIGKILL信号)

  • 重启容器docker restart web

  • 暂停容器进程docker pause web(冻结进程树)

  • 恢复暂停容器docker unpause web

  • 删除停止的容器docker rm web

  • 强制删除运行中容器docker rm -f web(生产环境慎用)

  • 批量删除停止容器docker container prune

  • 创建容器不启动docker create --name temp alpine sleep 3600

  • 容器重命名docker rename old_name new_name

  • 更新运行参数docker update --memory 512m web 动态调整内存限制

  • 设置重启策略docker run --restart=always nginx 崩溃后自动重启

  • 容器自愈检测docker run --health-cmd="curl -f http://localhost || exit 1" --health-interval=30s nginx

  • 查看健康状态docker inspect --format='{{.State.Health.Status}}' web

  • 资源限制(CPU)docker run --cpus=1.5 app 限制使用1.5核CPU

  • 资源限制(内存)docker run -m 2g --memory-swap=3g app 内存+Swap限制


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

  • 进入交互终端docker exec -it web /bin/bash

  • 后台执行命令docker exec -d web touch /tmp/test.log

  • 查看实时日志docker logs -f --tail 100 web(追踪最后100行)

  • 查看进程列表docker top web

  • 容器详情查看docker inspect web | jq .(配合jq解析JSON)

  • 端口映射检查docker port web

  • 文件复制到容器docker cp app.conf web:/etc/nginx/conf.d/

  • 从容器复制文件docker cp web:/var/log/nginx/error.log ./

  • 查看资源统计docker stats --no-stream(显示当前状态)

  • 实时监控资源docker stats web mysql(监控特定容器)

  • 容器差异检查docker diff web(查看文件系统变更)

  • 容器提交为镜像docker commit -c 'CMD ["nginx"]' web nginx:v2(慎用,推荐Dockerfile)

  • 容器导出快照docker export web > web.tar

  • 挂载调试工具docker run --cap-add SYS_PTRACE --security-opt seccomp=unconfined debug_tool

  • 使用nsenter调试nsenter --target $(docker inspect -f {{.State.Pid}} web) --mount --uts --ipc --net --pid


三、镜像管理(12个)

  • 拉取镜像docker pull alpine:3.18(指定版本避免latest风险)

  • 查看本地镜像docker images --filter "dangling=false"(过滤悬空镜像)

  • 删除镜像docker rmi alpine:3.17

  • 强制删除镜像docker rmi -f redis(被容器使用时需加-f)

  • 清理悬空镜像docker image prune

  • 导出镜像存档docker save -o nginx.tar nginx:latest

  • 导入镜像存档docker load -i nginx.tar

  • 查看镜像历史docker history nginx

  • 镜像标签管理docker tag nginx:latest myreg.com/nginx:v1

  • 推送镜像到仓库docker push myreg.com/nginx:v1

  • 构建镜像docker build -t myapp:v1 --build-arg ENV=prod .

  • 多阶段构建Dockerfile中:COPY --from=builder /app/bin /usr/bin


四、存储管理(10个)

  • 创建匿名卷docker run -v /data mysql(自动创建)

  • 绑定主机目录docker run -v /host/path:/container/path nginx

  • 创建命名卷docker volume create app_data

  • 使用命名卷docker run -v app_data:/var/lib/mysql mysql

  • 查看卷详情docker volume inspect app_data

  • 清理未使用卷docker volume prune

  • 查看挂载点docker inspect -f '{{ .Mounts }}' web

  • 临时文件系统docker run --tmpfs /tmp:size=100m app

  • 只读挂载docker run -v /conf:/etc/nginx:ro nginx(生产安全必备)

  • 共享存储卷docker run --volumes-from db_storage backup_tool


五、网络管理(12个)

  • 查看网络列表docker network ls

  • 创建自定义网络docker network create --driver bridge my_net

  • 指定容器网络docker run --network=my_net web

  • 容器别名访问docker run --network=my_net --name web --network-alias website nginx

  • 查看网络详情docker network inspect my_net

  • 连接运行中容器docker network connect my_net existing_container

  • 断开容器网络docker network disconnect my_net container

  • 端口随机映射docker run -P nginx(自动绑定随机主机端口)

  • 指定端口映射docker run -p 8080:80 -p 443:443 nginx

  • 主机模式网络docker run --network=host nginx(共享主机网络栈)

  • 容器间直连docker run --link redis:db app(传统方式,推荐使用自定义网络)

  • DNS配置覆盖docker run --dns 8.8.8.8 --dns-search example.com alpine


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

  • 日志驱动设置docker run --log-driver=json-file --log-opt max-size=10m nginx

  • 日志标签添加docker run --log-opt tag="{{.Name}}/{{.ID}}" nginx

  • 环境变量注入docker run -e TZ=Asia/Shanghai -e APP_ENV=prod app

  • 时区同步配置docker run -v /etc/localtime:/etc/localtime:ro app

  • 容器自启策略docker run --restart=on-failure:5 app(失败时最多重启5次)

  • 内核参数调整docker run --sysctl net.core.somaxconn=1024 app

  • 容器资源限制docker run --cpus=".5" -m 500m --blkio-weight=500 app

  • OOM优先级设置docker run --oom-score-adj=500 app(值越高越易被kill)

  • 容器用户隔离docker run --user 1000:1000 app(避免root运行)

  • 只读文件系统docker run --read-only app(需配合tmpfs使用)

  • 能力控制docker run --cap-add NET_ADMIN --cap-drop SYS_ADMIN app

  • 安全加固docker run --security-opt no-new-privileges app(禁止提权)

  • AppArmor配置docker run --security-opt apparmor=my_profile app

  • SELinux标签docker run --security-opt label=type:container_t app

  • 设备访问授权docker run --device=/dev/snd:/dev/snd:rw audio_app


七、集群与编排(10个

  • 初始化Swarmdocker swarm init --advertise-addr 192.168.1.100

  • 加入Swarm集群docker swarm join --token SWMTKN... 192.168.1.100:2377

  • 部署Stack服务docker stack deploy -c docker-compose.yml myapp

  • 查看服务列表docker service ls

  • 服务伸缩操作docker service scale web=5

  • 滚动更新配置docker service update --image nginx:1.23 web

  • 回滚服务版本docker service rollback web

  • 查看服务日志docker service logs -f web

  • 节点状态检查docker node ls

  • 服务约束部署docker service create --constraint 'node.role==worker' nginx


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

  • 查看Docker版本docker version

  • 系统全局信息docker info

  • 磁盘空间清理docker system prune -af(慎用!清理所有未用资源)

  • 事件实时监控docker events --filter 'event=die'(捕获容器退出事件)

  • 构建缓存清理docker builder prune

  • 检查容器配置docker config ls(Swarm模式)

  • 容器漏洞扫描docker scan nginx:latest(需登录Docker Hub)

  • 资源使用报告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等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒家肉山大魔王

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值