Docker常用指令
Docker常用指令引言为什么需要掌握Docker指令Docker核心概念快速回顾一、镜像管理指令1.1 镜像搜索与获取1.2 镜像构建与标记1.3 镜像清理二、容器生命周期管理2.1 容器创建与启动2.2 容器状态管理2.3 容器操作2.4 容器交互三、网络管理指令3.1 网络操作3.2 容器网络配置四、数据卷管理4.1 数据卷操作4.2 容器数据管理五、Docker Compose 常用指令5.1 Compose 基本操作5.2 Compose 管理与维护六、Docker系统管理指令6.1 系统信息与维护6.2 日志与调试七、实用技巧与最佳实践7.1 高效使用技巧7.2 安全最佳实践八、常见问题排查指令8.1 故障诊断8.2 性能监控总结与进阶建议引言为什么需要掌握Docker指令在云原生和容器化时代Docker已成为开发者和运维人员的必备技能。无论想简化开发环境配置还是构建微服务架构Docker都能提供一致的运行环境。但要在日常工作中高效使用Docker掌握其核心指令是关键。本篇博客将系统梳理Docker常用指令。Docker核心概念快速回顾在深入指令之前先理解几个核心概念镜像Image只读模板用于创建容器容器Container镜像的运行实例仓库Registry存储和分发镜像的地方如Docker Hub一、镜像管理指令1.1 镜像搜索与获取# 从Docker Hub搜索镜像dockersearch nginx# 拉取镜像默认最新版本dockerpull nginx# 拉取指定版本的镜像dockerpull nginx:1.21-alpine# 查看本地所有镜像dockerimages# 或dockerimagels# 显示镜像详细信息dockerimage inspect nginx1.2 镜像构建与标记# 构建镜像在当前目录查找Dockerfiledockerbuild-tmyapp:1.0.# 为镜像添加新标签dockertag myapp:1.0 myapp:latestdockertag myapp:1.0 registry.example.com/myapp:1.0# 查看镜像构建历史dockerhistorynginx1.3 镜像清理# 删除本地镜像dockerrmi nginx:1.21-alpine# 强制删除即使有容器在使用dockerrmi-fnginx# 清理未被使用的镜像dockerimage prune# 清理所有未被使用的镜像包括悬空镜像dockerimage prune-a# 镜像的导出与导入dockersave nginx:latest|gzipnginx-latest.tar.gzgzip-d-cnginx-latest.tar.gz|dockerload 或者 gunzip-cnginx-latest.tar.gz|dockerloaddockersave-onginx-latest.tar nginx:latestdockerload-inginx-latest.tar 或则dockerloadnginx-latest.tar二、容器生命周期管理2.1 容器创建与启动# 运行容器前台模式dockerrun nginx# 运行容器后台模式dockerrun-dnginx# 运行并指定名称dockerrun-d--namemy-nginx nginx# 运行并映射端口dockerrun-d-p8080:80--nameweb nginx# 运行并挂载数据卷dockerrun-d-v/host/path:/container/path nginx# 运行并设置环境变量dockerrun-d-eENV_VARvaluenginx# 运行并进入交互模式dockerrun-itubuntu /bin/bash2.2 容器状态管理# 查看运行中的容器dockerps# 查看所有容器包括停止的dockerps-a# 查看最近创建的容器dockerps-l# 查看容器详细信息dockerinspect my-nginx 例如docker inspect nginx|grep-A5RestartPolicy查看容器/镜像详细配置# 查看容器日志dockerlogs my-nginx# 实时查看容器日志dockerlogs-fmy-nginx# 查看容器资源使用情况dockerstats my-nginx2.3 容器操作# 启动已停止的容器dockerstart my-nginx# 停止运行中的容器dockerstop my-nginx# 强制停止容器dockerkillmy-nginx# 重启容器dockerrestart my-nginx# 暂停容器dockerpause my-nginx# 恢复暂停的容器dockerunpause my-nginx# 删除容器dockerrmmy-nginx# 强制删除运行中的容器dockerrm-fmy-nginx# 清理所有停止的容器dockercontainer prune# 动态更新容器启动参数dockerupdate--restartalways nginx2.4 容器交互# 进入运行中的容器dockerexec-itmy-nginx /bin/bash# 在容器中执行命令不进入交互模式dockerexecmy-nginxls-la# 复制文件到容器dockercplocal_file.txt my-nginx:/path/in/container/# 从容器复制文件dockercpmy-nginx:/path/to/file local_destination/三、网络管理指令3.1 网络操作# 列出所有网络dockernetworkls# 创建自定义网络dockernetwork create my-network# 创建带有子网的自定义网络dockernetwork create--subnet172.20.0.0/16 my-network# 查看网络详细信息dockernetwork inspect my-network# 将容器连接到网络dockernetwork connect my-network my-nginx# 从网络断开容器dockernetwork disconnect my-network my-nginx# 删除网络dockernetworkrmmy-network# 清理未使用的网络dockernetwork prune3.2 容器网络配置# 运行容器并指定网络dockerrun-d--nameapp--networkmy-network nginx# 运行容器并指定IP地址dockerrun-d--nameapp--networkmy-network--ip172.20.0.5 nginx# 运行容器并设置主机名dockerrun-d--nameapp--hostnamemyapp nginx# 运行容器并链接到其他容器传统方式dockerrun-d--nameapp--linkmysql:db nginx四、数据卷管理4.1 数据卷操作# 创建数据卷dockervolume create my-volume# 列出所有数据卷dockervolumels# 查看数据卷详细信息dockervolume inspect my-volume# 删除数据卷dockervolumermmy-volume# 清理未使用的数据卷dockervolume prune# 运行容器时使用数据卷dockerrun-d-vmy-volume:/data nginx# 运行容器时使用绑定挂载dockerrun-d-v/host/path:/container/path nginx4.2 容器数据管理# 创建带数据卷的容器dockercreate-v/data--name># 从数据卷容器复制数据dockerrun --volumes-from>-v$(pwd):/backup ubuntutarcvf /backup/backup.tar /data五、Docker Compose 常用指令5.1 Compose 基本操作# 启动服务后台运行docker-composeup-d# 启动服务并构建镜像docker-composeup-d--build# 查看服务状态docker-composeps# 查看服务日志docker-composelogs# 查看特定服务日志docker-composelogs service_name# 实时查看日志docker-composelogs-f# 停止服务docker-composestop# 停止并删除容器、网络docker-composedown# 停止并删除所有资源包括数据卷docker-composedown-v# 重启服务docker-composerestart# 重启特定服务docker-composerestart service_name5.2 Compose 管理与维护# 执行容器内命令docker-composeexecservice_namecommand# 进入容器docker-composeexecservice_name /bin/bash# 查看服务配置docker-composeconfig# 验证配置文件docker-composeconfig--services# 扩展服务实例docker-composeup-d--scaleservice_name3# 列出镜像docker-composeimages六、Docker系统管理指令6.1 系统信息与维护# 查看Docker系统信息dockerinfo# 查看Docker版本dockerversion# 查看磁盘使用情况dockersystemdf# 清理所有未使用的资源dockersystem prune# 清理所有未使用的资源包括未使用的镜像dockersystem prune-a# 查看事件流dockerevents# 检查Docker守护进程状态dockerinfo|grepServer Version6.2 日志与调试# 查看Docker守护进程日志journalctl-udocker.service# 增加日志级别# 编辑 /etc/docker/daemon.json 添加# { debug: true }七、实用技巧与最佳实践7.1 高效使用技巧# 1. 使用别名简化命令aliasdkdockeraliasdkcdocker-composealiasdkidocker imagesaliasdkpsdocker psaliasdkpsadocker ps -a# 2. 批量操作容器# 停止所有容器dockerstop$(dockerps-q)# 删除所有停止的容器dockerrm$(dockerps-aq)# 删除所有悬空镜像dockerrmi$(dockerimages-fdanglingtrue-q)# 3. 查看容器IP地址dockerinspect-f{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}container_name# 4. 格式化输出dockerps--formattable {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}7.2 安全最佳实践# 使用非root用户运行容器dockerrun-u1000:1000 nginx# 设置容器资源限制dockerrun-d--memory512m--cpus1.5nginx# 设置容器只读文件系统dockerrun-d--read-only nginx# 设置容器重启策略dockerrun-d--restartunless-stopped nginx八、常见问题排查指令8.1 故障诊断# 查看容器进程dockertopcontainer_name# 检查容器健康状态dockerinspect--format{{json .State.Health}}container_name# 分析镜像层dockerhistory--no-trunc image_name# 调试容器启动问题dockerrun--rm-it--entrypoint/bin/bash image_name8.2 性能监控# 实时监控容器资源dockerstats# 监控特定容器dockerstats container_name1 container_name2# 输出JSON格式资源使用情况dockerstats --no-stream--format{{json .}}总结与进阶建议Docker生态系统不断发展保持学习和实践是掌握这项技术的关键。从基础指令开始逐步深入将能够充分利用容器化技术提升开发和部署效率。学习编写高效Dockerfile 这是构建优质镜像的基础。探索容器编排工具 - 如Kubernetes这是容器化技术的自然演进最后善用--help参数任何时候对命令不确定时都可以通过docker command --help查看详细帮助信息这是最权威的参考资料。愿你我都能在各自的领域里不断成长勇敢追求梦想同时也保持对世界的好奇与善意!