news 2026/7/7 5:14:29

Docker 运维常用命令手册(含扩容与实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 运维常用命令手册(含扩容与实战)

适用对象:Docker 初学者及运维人员
目标:通过清晰分类、详实示例,覆盖日常操作、排错、资源扩容及容器内数据操作(含exec进入数据库并导入文件)。


一、基础信息查看

命令说明
docker version查看 Docker 客户端与服务端版本信息
docker info查看系统级信息(镜像数、容器数、存储驱动、根目录等)
docker <命令> --help查看任意子命令的帮助文档

示例:

dockerversiondockerinfodockerrun--help

二、镜像管理(Image)

1. 列出本地镜像

dockerimages# 默认显示所有顶层镜像dockerimages-a# 显示所有层(含中间层)dockerimages-q# 只显示镜像 IDdockerimages--format"table {{.Repository}}\t{{.Tag}}\t{{.Size}}"# 自定义输出格式

2. 搜索远程镜像(Docker Hub)

dockersearch nginx# 搜索 nginxdockersearch mysql--filter=STARS=3000# 仅显示 stars ≥ 3000 的镜像

3. 拉取镜像

dockerpull nginx:latest# 拉取最新版dockerpull mysql:5.7# 拉取指定 tag

4. 删除镜像

dockerrmi<image_id># 删除指定镜像(需无容器使用)dockerrmi-f<image_id># 强制删除dockerrmi-f$(dockerimages-aq)# 删除所有镜像(危险操作)

三、容器管理(Container)

1. 创建并启动容器

基本语法:

dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]

常用选项:

选项作用
--name <name>指定容器名称
-d后台运行(detach)
-it交互式(如进入 bash)
-p 主机端口:容器端口端口映射
-v 主机目录:容器目录挂载数据卷(持久化)
--restart=always自动重启策略
--privileged=true赋予特权(用于 systemd 等)
-h <hostname>设置容器主机名
--cpus-m限制 CPU / 内存(见扩容部分)

示例:

# 创建并运行一个交互式 centos 容器dockerrun-it--namemycentos centos:7 /bin/bash# 后台运行 nginx,映射 8080 端口dockerrun-d--nameweb-p8080:80 nginx# 运行 MySQL 并挂载数据卷dockerrun-d--namemysql57-p3306:3306-v/my/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql:5.7

2. 列出容器

dockerps# 仅显示运行中的容器dockerps-a# 显示所有容器(含已停止)dockerps-n5# 显示最近创建的 5 个容器dockerps-q# 只显示容器 ID

3. 启动 / 停止 / 重启 / 强制停止

dockerstart<container_id/name>dockerstop<container_id/name>dockerrestart<container_id/name>dockerkill<container_id/name># 强制停止(SIGKILL)

4. 删除容器

dockerrm<container_id># 删除已停止的容器dockerrm-f<container_id># 强制删除运行中的容器dockerrm-f$(dockerps-aq)# 删除所有容器(危险)dockerps-a-q|xargsdockerrm# 同上

5. 进入运行中的容器(重点)

方式一:docker exec(推荐,新开进程)
dockerexec-it<container><command>
  • -it交互式终端
  • 常用命令:/bin/bashsh/bin/sh

示例:

# 进入容器 bashdockerexec-itmycentos /bin/bash# 直接在容器内执行命令(不进入)dockerexec-itmycentosls-l/home# 进入 MySQL 容器并执行 mysql 客户端dockerexec-itmysql57 mysql-uroot-p
方式二:docker attach(连接到主进程)
dockerattach<container>

会连接到容器的主进程(如 nginx 的 PID 1),通常不用来执行管理操作。

6. 从容器内拷贝文件

宿主机 → 容器:

dockercp/host/file.txt<container>:/container/path/

容器 → 宿主机:

dockercp<container>:/container/file.txt /host/path/

示例:

# 将本地 dump.sql 拷贝到 MySQL 容器内dockercp./dump.sql mysql57:/tmp/# 然后在容器内执行导入dockerexec-itmysql57 mysql-uroot-p123456-e"source /tmp/dump.sql"

实战技巧:也可以直接用重定向导入,无需拷贝文件
docker exec -i mysql57 mysql -uroot -p123456 < ./dump.sql
-i保持 stdin 打开,<重定向本地文件)


四、日志与调试

1. 查看容器日志

dockerlogs<container># 输出全部日志dockerlogs-f<container># 跟踪实时日志(类似 tail -f)dockerlogs--tail100-f<container># 仅显示最后 100 行并跟踪dockerlogs-t<container># 显示时间戳

2. 查看容器内进程

dockertop<container>

3. 查看容器详细信息(元数据)

dockerinspect<container># 返回 JSON 格式,包含网络、挂载、配置等dockerinspect--format='{{.NetworkSettings.IPAddress}}'<container># 仅获取 IP

4. 容器资源实时监控

dockerstats# 显示所有运行中容器的 CPU、内存、网络等dockerstats<container># 仅查看指定容器

五、数据卷(Volume)与持久化

1. 创建数据卷

dockervolume create myvolume

2. 查看所有卷

dockervolumels

3. 挂载卷(在docker run时)

# 使用已创建的卷dockerrun-d-vmyvolume:/app/data--nameapp alpine# 绑定挂载(主机目录)dockerrun-d-v/host/data:/container/data--nameapp alpine# 使用 --mount(更明确的语法)dockerrun-d--mountsource=myvolume,target=/app/data--nameapp alpine

4. 删除卷

dockervolumerm<volume_name>dockervolume prune# 删除所有未使用的卷

六、资源限制与扩容(Storage & Resource Scaling)

1. 查看 Docker 磁盘占用

dockersystemdf# 查看镜像、容器、卷、构建缓存的空间占用dockersystemdf-v# 显示详细信息(逐项列出)

2. 清理无用数据(释放磁盘空间)

dockersystem prune# 删除停止的容器、未被使用的网络、悬空镜像、构建缓存dockersystem prune-a# 更彻底,删除所有未被使用的镜像dockerimage prune# 清理悬空镜像dockercontainer prune# 清理停止的容器dockervolume prune# 清理未使用的卷dockerbuilder prune# 清理构建缓存

3. 调整容器资源限制(CPU / 内存)

创建时指定:

dockerrun-d--nameapp--cpus="2.0"-m="1g"nginx
  • --cpus:允许使用的 CPU 核数(可小数)
  • -m--memory:最大内存
  • --memory-swap:swap 限制(默认与内存相同)

运行中动态调整(需要 Docker 19.03+):

dockerupdate--cpus="1.5"-m="512m"<container>

注意:内存限制只能在容器启动时设置,update可以调整,但有些参数需重启生效。

4. Docker 存储空间扩容(针对数据目录)

Docker 默认存储在/var/lib/docker。当磁盘不足时,可采取以下方案:

  • 方案一:将 Docker 数据目录迁移到更大的磁盘

    systemctl stopdockermv/var/lib/docker /new/location/dockerln-s/new/location/docker /var/lib/docker# 软链接systemctl startdocker

    或修改/etc/docker/daemon.json中的"data-root": "/new/path"

  • 方案二(适用于 Overlay2):如果使用 LVM,可扩展逻辑卷,然后扩充文件系统。
    具体操作:

    1. 扩展物理卷 / 逻辑卷
    2. lvextend -L +100G /dev/mapper/docker-docker
    3. xfs_growfsresize2fs扩展文件系统

    此操作较高级,需保证 Docker 服务停止。

  • 方案三:定期清理无用数据(见上方 prune)并合理使用卷,避免无限增长。


七、高级操作:提交容器为镜像 & 导入导出

1. 将容器保存为新镜像(commit

dockercommit-m"added custom config"-a"author"<container><new_image:tag>

2. 导出容器为 tar 归档(export

dockerexport<container>>container.tar

3. 从 tar 导入为镜像(import

dockerimportcontainer.tar mynewimage:latest

4. 保存镜像为 tar(save)与加载(load

dockersave-omyimage.tar nginx:latestdockerload-imyimage.tar

八、常用运维综合示例

示例 1:启动 MySQL 并导入数据

# 1. 运行 MySQL 容器dockerrun-d--namemysql57-p3306:3306-eMYSQL_ROOT_PASSWORD=root123 mysql:5.7# 2. 等待 MySQL 就绪(可用 docker logs 查看)dockerlogs-fmysql57# 看到 ready for connections 后 Ctrl+C 退出# 3. 拷贝本地 SQL 文件到容器dockercp./init.sql mysql57:/tmp/# 4. 执行导入(方式一:进入容器执行)dockerexec-itmysql57bash# 在容器内执行:mysql-uroot-proot123</tmp/init.sqlexit# 方式二:直接通过管道导入(无需拷贝)dockerexec-imysql57 mysql-uroot-proot123<./init.sqldockerexec-itmysqlsh-c"mysql -uroot -p 数据库名 < 导入路径"dockerexec-imysql57 mysql-uroot-p123456-vmydb<./backup.sql

示例 2:进入正在运行的 Nginx 容器修改配置

dockerexec-itweb /bin/bash# 修改 /etc/nginx/nginx.conf 或 /usr/share/nginx/html 内容# 退出后执行 nginx -s reload(但容器内无信号,建议重启容器或使用 docker exec 发送信号)dockerexecweb nginx-sreload

示例 3:清理磁盘空间(安全操作)

# 先查看占用情况dockersystemdf# 删除所有停止的容器、未使用的网络、悬空镜像、构建缓存dockersystem prune# 若确定要释放更多,可加上 -a(删除所有未使用的镜像)dockersystem prune-a# 单独清理卷(注意:会删除未使用的卷,可能丢失数据)dockervolume prune

示例 4:迁移 Docker 数据目录到新磁盘

假设新磁盘挂载在/mnt/docker

systemctl stopdockermkdir-p/mnt/dockerrsync-avxP/var/lib/docker/ /mnt/docker/mv/var/lib/docker /var/lib/docker.bak# 备份旧目录(可选)ln-s/mnt/docker /var/lib/docker systemctl startdocker# 检查确认无误后,删除备份:rm -rf /var/lib/docker.bak

九、常见问题排查

问题排查与解决
容器启动后立即退出查看日志docker logs <container>;可能前台进程不存在,需指定执行命令
端口被占用修改映射端口,或netstat -tulpn查看占用进程
磁盘空间不足docker system df并清理,或扩容数据目录
无法进入容器(无 bash)尝试/bin/sh,或使用docker exec -it <container> sh
容器内时间错误挂载/etc/localtime-v /etc/localtime:/etc/localtime:ro
容器网络不通检查端口映射,或使用--network host(不推荐)

十、附录:常用命令速查表

功能命令
查看镜像docker images
搜索镜像docker search <name>
拉取镜像docker pull <name:tag>
删除镜像docker rmi <id>
运行容器docker run [options] <image>
列出容器(运行中)docker ps
列出所有容器docker ps -a
停止容器docker stop <container>
启动容器docker start <container>
重启容器docker restart <container>
强制停止docker kill <container>
删除容器docker rm <container>
进入容器(新进程)docker exec -it <container> /bin/bash
查看日志docker logs -f <container>
拷贝文件docker cp <src> <container>:<dest>
查看资源使用docker stats
查看磁盘占用docker system df
清理无用资源docker system prune
更新资源限制docker update [options] <container>
查看元数据docker inspect <container>
提交容器为镜像docker commit <container> <image:tag>

最后叮嘱:所有删除操作(rmrmiprune)请谨慎执行,尤其是带-f-a参数时,务必确认数据已备份或不需要保留。
生产环境中,建议对重要数据使用-v持久化卷,并定期备份卷内容。

EOF

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 5:14:19

时序轨迹张量补全机制,攻克视频孪生目标遮挡断链行业共性难题

时序轨迹张量补全机制&#xff0c;攻克视频孪生目标遮挡断链行业共性难题 专项技术白皮书 文档名称&#xff1a;时序轨迹张量补全机制——TrajectoryTensor™全域遮挡自愈轨迹连续演算专项研究 研发主体&#xff1a;镜像视界浙江科技有限公司、镜像视界浙江普陀时空大数据应…

作者头像 李华
网站建设 2026/7/7 5:14:11

MySql-安装详细教程

目录 一、 下载安装包 二、安装配置 MySQL User Accounts&#xff08;MySQL 用户账户&#xff09; 三、 1、验证 MySQL 是否正常运行 四、需要添加 PATH 环境变量 验证服务是否运行 五、开启MySQL 一、 下载安装包 1、官网下载 https://dev.mysql.com/downloads/ 2、…

作者头像 李华
网站建设 2026/7/7 5:12:37

分布式多机器人协同视点规划:基于3D高斯溅射的风险感知NBV系统

1. 项目概述&#xff1a;这不是又一个“多机器人拍照”demo&#xff0c;而是让一群机器人真正学会“互相看顾”的协同决策系统你有没有想过&#xff0c;当五台无人机同时飞进一座坍塌的化工厂废墟&#xff0c;它们不是各自乱转找路&#xff0c;而是像经验丰富的搜救队一样——A…

作者头像 李华
网站建设 2026/7/7 5:10:06

免费游戏实时翻译终极指南:三分钟掌握Translumo完整用法

免费游戏实时翻译终极指南&#xff1a;三分钟掌握Translumo完整用法 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 还在为…

作者头像 李华
网站建设 2026/7/7 5:09:06

BPDA-GMM:面向语义SLAM的概率化数据关联框架

1. 项目概述&#xff1a;这不是又一个SLAM“套壳”&#xff0c;而是一次对语义数据关联本质的重新建模“BPDA-GMM&#xff1a;面向语义SLAM的在线贝叶斯概率数据关联框架”——这个标题里没有一个词是虚的&#xff0c;每个词都踩在当前机器人感知落地的痛点上。我带团队做过7个…

作者头像 李华
网站建设 2026/7/7 5:04:15

AI视频风格迁移实战:从原理到代码实现监控画风附身

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 最近在尝试将AI绘画的风格迁移能力应用到视频处理上&#xff0c;发现这真是个既有趣又充满挑战的领域。想象一下&#xff0c;把梵高的…

作者头像 李华