常用的 Docker 命令

张开发
2026/6/7 19:09:22 15 分钟阅读
常用的 Docker 命令
Docker 是一个开源的容器化平台用于构建、部署和运行应用程序。以下是一些常用的 Docker 命令按类别分类整理 1. 镜像Images相关命令列出本地镜像dockerimages拉取镜像dockerpullimage_name:tag# 示例dockerpull nginx:latest构建镜像从 Dockerfiledockerbuild-timage_name:tag.# 示例dockerbuild-tmyapp:v1.删除镜像dockerrmiimage_id_or_name查看镜像历史dockerhistoryimage_name 2. 容器Containers相关命令列出正在运行的容器dockerps列出所有容器包括已停止的dockerps-a运行容器dockerrun[OPTIONS]image_name# 常用选项# -d后台运行detached# -p host_port:container_port端口映射# --name指定容器名称# -v /host/path:/container/path挂载卷# 示例dockerrun-d-p8080:80--namemynginx nginx启动/停止/重启容器dockerstartcontainer_id_or_name重启全部容器docker restart$(dockerps-a-q)dockerstopcontainer_id_or_name1. 优雅停止所有容器推荐:docker stop$(dockerps-q)2. 强制停止所有容器卡死时用:dockerkill$(dockerps-q)3. 停止并删除所有容器:dockerrm-f$(dockerps-a-q)dockerrestartcontainer_id_or_namecompose操作停止当前项目的所有容器 → 并删除这些容器 网络docker compose down 重新构建镜像 → 启动 / 更新所有服务 → 后台运行docker compose up-d--build-d(detach 后台运行)--build(最重要启动前强制重新构建镜像)进入正在运行的容器dockerexec-itcontainer_id_or_name/bin/bash查看容器日志dockerlogscontainer_id_or_name# 实时跟踪日志dockerlogs-fcontainer_id_or_name删除容器dockerrmcontainer_id_or_name# 强制删除正在运行的容器dockerrm-fcontainer_id_or_name️ 3. 卷Volumes相关命令创建卷dockervolume createvolume_name列出卷dockervolumels查看卷详情dockervolume inspectvolume_name删除卷dockervolumermvolume_name 4. 网络Networks相关命令创建网络dockernetwork createnetwork_name列出网络dockernetworkls连接容器到网络dockernetwork connectnetwork_namecontainer_name断开容器与网络dockernetwork disconnectnetwork_namecontainer_name删除网络dockernetworkrmnetwork_name 5. 系统清理命令删除所有停止的容器、未使用的网络、构建缓存等dockersystem prune加上-a删除所有未使用的镜像不仅仅是 dangling 镜像dockersystem prune-a 6. 其他实用命令查看 Docker 信息dockerinfo查看 Docker 版本dockerversion将容器保存为镜像提交更改dockercommitcontainer_idnew_image_name:tag导出/导入容器或镜像# 导出容器快照dockerexportcontainer_idcontainer.tar# 导入为镜像dockerimportcontainer.tarimage_name:tag# 保存镜像为 tar 文件dockersave-oimage.tarimage_name# 从 tar 加载镜像dockerload-iimage.tar如果你需要在没有网络连接的环境中使用 Docker 镜像可以通过“有网机器下载打包 - 传输文件 - 无网机器加载”的方式来实现。这是一个非常成熟的操作流程核心在于使用 Docker 自带的save和load命令。以下是具体的操作步骤 第一步在有网络的机器上下载并打包镜像你需要有一台可以访问互联网的电脑可以是你的本地电脑或跳板机将所需的镜像下载下来并导出为一个压缩文件。拉取镜像使用docker pull命令下载你需要的镜像及版本。# 语法docker pull 镜像名:标签dockerpull nginx:latestdockerpull redis:6.2.17验证镜像确保镜像已经下载成功。dockerimages|grepnginx导出为离线文件 (.tar)使用docker save命令将镜像保存为一个 tar 包。你可以把多个镜像打到同一个包里。# 语法docker save -o 输出文件名.tar 镜像名:标签dockersave-onginx-redis-offline.tar nginx:latest redis:6.2.17进阶技巧如果文件很大传输困难你可以使用压缩流来减小体积这会生成一个.tar.gz文件dockersave nginx:latest|gzipnginx-latest.tar.gz 第二步将文件传输到离线机器将生成的.tar文件通过以下方式拷贝到目标离线服务器或虚拟机中物理介质U盘、移动硬盘。内部传输SCP命令、FTP、内部共享网盘、scp。云桌面直接上传文件。 第三步在离线机器上加载镜像在没有网络的服务器上执行以下命令加载镜像。加载镜像使用docker load命令读取 tar 包。# 语法docker load -i 镜像文件.tardockerload-inginx-redis-offline.tar如果你在第一步使用了 gzip 压缩加载时需要使用dockerloadnginx-latest.tar.gz验证加载结果检查镜像是否已经出现在本地列表中。dockerimages运行容器现在你可以像平常一样使用docker run启动容器了。dockerrun-d-p80:80 nginx:latest 核心命令速查表为了方便你记忆我整理了最关键的两个命令操作命令示例说明导出 (有网端)docker save -o app.tar nginx:latest将镜像保存为离线文件加载 (离线端)docker load -i app.tar将离线文件导入 Docker 环境 常见问题与技巧如何处理依赖如果你的应用需要在容器内安装系统依赖如ffmpeg或gcc建议在有网机器上构建一个“预装依赖的基础镜像”然后导出这个基础镜像而不是试图在离线机器上执行apt-get install。文件太大怎么办如上述进阶技巧所示使用gzip压缩可以显著减小文件体积通常能减少 60% 以上传输后再在离线端解压加载。批量操作如果你需要迁移服务器上所有的镜像可以使用脚本批量导出和导入避免遗漏。在离线环境中部署容器时预先在有网络的机器上构建一个包含所有系统依赖如ffmpeg、gcc、libgl1等的基础镜像然后通过docker save导出并传输到目标离线机器是最可靠、最高效的做法。下面我将为你提供一个完整的操作流程包括Dockerfile 编写 → 构建镜像 → 导出 → 在离线环境加载使用。✅ 第一步编写 Dockerfile预装依赖创建一个Dockerfile基于官方基础镜像如ubuntu:22.04或python:3.11-slim并在其中安装所需依赖。# 使用官方 Ubuntu 作为基础镜像 FROM ubuntu:22.04 # 设置非交互式安装避免 apt 弹出配置界面 ENV DEBIAN_FRONTENDnoninteractive # 更新包索引并安装常用依赖 RUN apt-get update \ apt-get install -y --no-install-recommends \ ffmpeg \ gcc \ g \ make \ curl \ wget \ git \ libgl1 \ libglib2.0-0 \ \ # 清理缓存以减小镜像体积 apt-get clean \ rm -rf /var/lib/apt/lists/* # 可选设置工作目录或默认命令 WORKDIR /app CMD [bash]提示--no-install-recommends可避免安装不必要的推荐包减小体积。最后一定要apt-get clean和删除/var/lib/apt/lists/*否则镜像会非常大。️ 第二步在有网机器上构建镜像在包含Dockerfile的目录下执行# 构建镜像命名为 my-offline-base:latestdockerbuild-tmy-offline-base:latest.构建过程中Docker 会自动下载基础镜像并执行apt-get install安装所有依赖。验证是否成功dockerrun--rmmy-offline-base:latest ffmpeg-version# 应该能正常输出 ffmpeg 版本信息 第三步导出为离线文件使用docker save将整个镜像打包成.tar文件# 导出镜像dockersave-omy-offline-base.tar my-offline-base:latest# 可选压缩以减小体积便于传输gzipmy-offline-base.tar# 生成 my-offline-base.tar.gz 第四步将文件拷贝到离线机器通过 U 盘、内网 SCP、FTP 等方式将my-offline-base.tar.gz或.tar传到目标服务器。 第五步在离线机器上加载镜像在离线服务器上执行# 如果是 .tar.gz 文件先解压再加载或直接管道加载gunzipmy-offline-base.tar.gz|dockerload# 如果是 .tar 文件dockerload-imy-offline-base.tar验证dockerimages|grepmy-offline-base# 应该能看到镜像已存在 第六步基于该镜像运行应用容器现在你可以在离线环境中直接使用这个“全能”基础镜像来运行你的应用无需联网安装任何东西。例如运行一个需要ffmpeg的 Python 脚本dockerrun-it--rm\-v$(pwd):/app\my-offline-base:latest\python3 /app/my_video_processor.py或者你也可以在自己的项目Dockerfile中直接继承它FROM my-offline-base:latest COPY . /app WORKDIR /app RUN pip install -r requirements.txt # 假设 requirements.txt 已包含且 wheel 包已提前准备 CMD [python, app.py]⚠️ 注意如果pip install也需要离线建议提前用pip download下载好 wheel 包一并打包进镜像。✅ 总结步骤操作关键命令1. 编写创建含依赖的 DockerfileFROM ...,RUN apt-get install ...2. 构建在有网机生成镜像docker build -t my-offline-base .3. 导出打包为 tar 文件docker save -o image.tar image:tag4. 传输拷贝到离线机U盘 / scp / 内网共享5. 加载在离线机导入镜像docker load -i image.tar6. 使用运行或继承该镜像docker run或FROM my-offline-base这种方式彻底规避了离线环境无法安装系统包的问题是工业级部署的标准实践。

更多文章