Docker 容器与镜像核心操作命令大全(实战指南)
摘要:本文全面整理 Docker 容器与镜像管理的高频操作命令,涵盖容器生命周期管理、镜像构建技巧、网络配置、文件挂载等场景,并附赠企业级高级用法。适用于开发、测试及生产环境的容器化运维。
一、容器操作命令
1.1 容器生命周期管理
命令 | 功能说明 | 常用参数 |
---|---|---|
docker run | 创建并启动容器 | -d 后台运行--name 指定容器名--restart=always 自动重启 |
docker start | 启动已停止的容器 | 容器ID/名称 |
docker stop | 优雅停止容器 | -t 超时时间(默认10秒) |
docker restart | 重启容器 |
示例:后台运行Nginx并映射端口
docker run -d -p 80:80 --name my-nginx nginx:alpine
1.2 容器交互与调试
命令 | 使用场景 |
---|---|
docker exec -it <容器ID> sh | 进入容器Shell(Alpine系统) |
docker exec -it <容器ID> /bin/bash | 进入容器Bash(Ubuntu/CentOS) |
docker logs -f <容器ID> | 实时追踪日志(排错必备) |
调试技巧:
# 查看最近100行日志
docker logs --tail 100 <容器ID># 结合grep过滤关键字
docker logs <容器ID> | grep "ERROR"
1.3 文件与宿主机交互
操作类型 | 命令示例 |
---|---|
宿主机→容器 | docker cp host_file.txt <容器ID>:/app/data/ |
容器→宿主机 | docker cp <容器ID>:/var/log/app.log ./ |
二、镜像管理全攻略
2.1 镜像构建与打包
方式一:Dockerfile构建
# 标准构建(默认使用Dockerfile)
docker build -t myapp:v1.0 .# 指定自定义Dockerfile
docker build -f Dockerfile.prod -t myapp:prod .
方式二:容器转镜像(慎用!)
docker commit <容器ID> myapp:snapshot
注意:commit生成的镜像会包含容器层所有变更,可能导致体积臃肿,建议仅用于临时调试。
2.2 镜像导入导出
场景 | 操作命令 |
---|---|
导出为tar包 | docker save -o myapp.tar myapp:v1.0 |
从tar包加载 | docker load < myapp.tar |
三、企业级高级配置
3.1 特权模式与设备挂载
# 启用特权模式(允许访问宿主机设备)
docker run -d --privileged myapp:prod# 挂载物理内存设备
docker run -v /dev/mem:/dev/mem myapp:monitor# 挂载系统信息(只读模式)
docker run -v /sys:/sys:ro -v /proc:/proc:ro myapp:diagnostic
3.2 Macvlan网络配置
# 创建Macvlan网络
docker network create -d macvlan \--subnet=192.168.14.0/24 \--gateway=192.168.14.1 \-o parent=eth0 \mg-macvlan# 运行容器并接入Macvlan
docker run -d --net=mg-macvlan --ip=192.168.14.20 myapp:network
应用场景:需要容器直接暴露在物理网络,获得独立IP地址。
四、安全与清理
4.1 镜像清理
# 删除未使用的镜像(悬空镜像)
docker image prune# 强制删除镜像(无视依赖)
docker rmi -f myapp:test
4.2 容器清理
# 删除已停止的容器
docker container prune# 批量删除所有容器
docker rm -f $(docker ps -aq)
五、实战问题排查指南
5.1 容器启动失败
排查步骤:
- 检查日志:
docker logs <容器ID>
- 验证端口冲突:
netstat -tulnp | grep 8080
- 检查存储卷权限:
ls -l /host/path
5.2 网络不通问题
诊断命令:
# 进入容器测试外网
docker exec -it <容器ID> ping 8.8.8.8# 检查iptables规则
iptables -L -n -t nat
附录:
- Docker 官方文档
- Docker Cheat Sheet
掌握这些命令组合,您已能应对90%的日常Docker运维场景。建议搭配Portainer等可视化工具提升管理效率!
如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解密码学知识,请订阅《密码学实战》专栏 → 密码学实战