news 2026/10/19 4:10:37

Docker 下载安装、换源、常用命令与 Docker Compose 实战详解(附完整示例)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 下载安装、换源、常用命令与 Docker Compose 实战详解(附完整示例)

本文记录 Docker 的下载安装、换源和常用命令,最后用 Dockerfile 和 Docker Compose 跑一个多容器的 WordPress + MySQL 例子,代码都可以直接复制运行。

一、Docker 是干什么的

在没有 Docker 之前,开发和上线最头疼的就是「环境不一致」:本地跑得好好的程序,一放到测试机或服务器就报错;换一台机器,又得重新装系统、配依赖。于是大家想:能不能让软件「带着环境一起打包」?

Docker 的做法是把代码、依赖、配置和系统环境打包进一个可移植的容器,做到「一次封装,到处运行」。它用 Go 语言开发,是一个开源的容器引擎。容器能在本地、测试、生产上跑同样的环境,彼此互不干扰,而且直接复用宿主机内核,启动快、开销小。

虚拟机会把操作系统也虚拟化,隔离更彻底,但更重也更慢;Docker 共享宿主机内核,所以更轻更快。

三个核心概念

概念类比说明
镜像 Image软件安装包只读模板,包含运行应用所需的全部环境
容器 Container已安装好的软件镜像的运行实例,可启动/停止/删除
仓库 Repository手机应用商店存放镜像的地方,最常用的是 Docker Hub
数据卷 Volume独立的 D 盘持久化数据,容器删了数据还在

二、Docker 下载地址与安装

2.1 官方下载地址

  • Docker 官网:https://www.docker.com/
  • Docker Desktop 下载页:https://www.docker.com/products/docker-desktop/
  • 官方镜像仓库 Docker Hub:https://hub.docker.com/

2.2 Windows 安装(Win10 2004+ / Win11)

Windows 上 Docker Desktop 依赖 WSL2,所以要先做好准备:

  1. 开启虚拟化:任务管理器 → 性能 → 查看「虚拟化」是否为「已启用」。若没有,重启进 BIOS 打开Virtualization Technology。
  2. 启用 WSL 和虚拟机平台:控制面板 → 程序 → 启用或关闭 Windows 功能,勾选「适用于 Linux 的 Windows 子系统」和「虚拟机平台」,或直接用命令行:
dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart dism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart

完成后重启电脑。

  1. 更新 WSL 内核:从 GitHub 下载安装最新版 https://github.com/microsoft/WSL/releases
  2. 安装 Docker Desktop:双击安装包,一路默认下一步即可,安装过程中若提示修改 host,点「允许」。
  3. 验证安装:打开终端(CMD 或 PowerShell):
docker--versiondockercompose version

两条都能显示版本号,就说明装好了。

2.3 Ubuntu 安装

推荐使用 Docker 官方 apt 仓库,比 Ubuntu 自带源更新:

# 1. 卸载可能存在的旧版本sudoaptremove-ydockerdocker-engine docker.io containerd runc# 2. 安装依赖sudoaptupdatesudoaptinstall-yca-certificatescurlgnupg# 3. 添加 Docker 官方 GPG 密钥sudoinstall-m0755-d/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgsudochmoda+r /etc/apt/keyrings/docker.gpg# 4. 添加仓库echo\"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(./etc/os-release&&echo$VERSION_CODENAME)stable"|\sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 5. 安装 Docker Engine 和 Compose 插件sudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 6. 验证docker--versiondockercompose version# 7. 免 sudo 运行(执行后需要重新登录)sudousermod-aGdocker$USER

说明:官方文档 https://docs.docker.com/engine/install/ubuntu/ 也可参考。

三、换源:给国内加速

默认镜像源在国外,国内拉镜像经常慢甚至超时,换成国内镜像源能明显提速。

3.1 Windows(Docker Desktop)

启动 Docker Desktop → 右上角齿轮「设置」→ 左侧「Docker Engine」,在配置里加入registry-mirrors:

{"registry-mirrors":["https://docker.1ms.run","https://docker.xuanyuan.me","https://docker.m.daocloud.io","https://docker.mirrors.ustc.edu.cn","https://mirror.baidubce.com"]}

点右下角「Apply & Restart」应用并重启即可。

3.2 Ubuntu / Linux

编辑(或新建)配置文件:

sudovim/etc/docker/daemon.json

写入:

{"registry-mirrors":["https://docker.1ms.run","https://docker.xuanyuan.me","https://docker.m.daocloud.io","https://docker.mirrors.ustc.edu.cn","https://mirror.baidubce.com"]}

保存后重启 Docker:

sudosystemctl daemon-reloadsudosystemctl restartdocker

验证是否生效,看Registry Mirrors字段:

dockerinfo

提示:镜像加速地址随时可能失效,Docker 会按列表顺序依次尝试,某条挂了不影响启动,只要列表里还有一条可用就能拉取。上面这组是较新的地址;中科大 https://docker.mirrors.ustc.edu.cn、百度 https://mirror.baidubce.com 这类老牌源也可以一起放进来做备用。至于网易 https://hub-mirror.c.163.com 这种多年没维护的源,建议直接跳过。

四、Docker 常用命令

4.1 镜像管理

命令作用
docker pull 镜像名:版本拉取镜像(不写版本默认 latest)
docker images查看本地镜像
docker rmi 镜像ID/镜像名删除镜像
docker search 关键词在 Docker Hub 搜索镜像
docker build -t 名称:版本 .基于 Dockerfile 构建镜像
docker save -o xx.tar 镜像名导出镜像为 tar(离线传输)
docker load -i xx.tar导入镜像 tar

4.2 容器管理

命令作用
docker run [参数] 镜像名创建并启动容器(最核心)
docker ps查看运行中的容器(加-a含已停止的)
docker start/stop/restart 容器名启动 / 停止 / 重启容器
docker rm 容器名删除容器(加-f强制删除运行中的)
docker exec -it 容器名 bash进入容器终端
docker logs -f 容器名实时查看容器日志
docker inspect 容器名查看容器/镜像详细信息(排障用)

五、入门实战:用容器跑一个 MySQL

不需要在电脑上装 MySQL,直接从镜像启动一个:

# 拉取镜像dockerpull mysql:8.0.45# 启动容器:后台运行,命名 mysql-db,把主机 9999 端口映射到容器 3306dockerrun-d--namemysql-db-p9999:3306-eMYSQL_ROOT_PASSWORD=123456mysql:8.0.45# 查看容器状态dockerps

参数说明:

  • -d:后台运行
  • --name mysql-db:容器命名,方便后续操作
  • -p 9999:3306:端口映射,格式为主机端口:容器端口
  • -e MYSQL_ROOT_PASSWORD=123456:设置 root 密码,MySQL 镜像必须设置

想确认容器里的 MySQL 是否正常,可以进容器用自带的客户端连一下:

dockerexec-itmysql-db mysql-uroot-p123456

六、进阶实战:Dockerfile + Docker Compose

实际开发常用这两个工具:Dockerfile 负责构建自定义镜像,Docker Compose 负责管理多个容器。

6.1 编写 Dockerfile

用一个改过首页的 Nginx 演示如何构建自己的镜像:

# 基于 Nginx 官方镜像 FROM nginx:1.27-alpine # 把本地页面复制到镜像的网站目录 COPY index.html /usr/share/nginx/html/index.html # 声明容器对外端口 EXPOSE 80

在同一目录下准备一个index.html,然后构建并运行:

dockerbuild-tmy-nginx:v1.dockerrun-d--namemy-nginx-p8080:80 my-nginx:v1

打开 http://localhost:8080 就能看到自己的页面。

6.2 编写 docker-compose.yml

用 Compose 把 WordPress 和 MySQL 两个容器一起管理:

services:db:image:mysql:8.0.45restart:alwaysenvironment:MYSQL_ROOT_PASSWORD:"123456"MYSQL_DATABASE:"wordpress"MYSQL_INITDB_ARGS:"--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"volumes:-./mysql-data:/var/lib/mysqlhealthcheck:test:["CMD","mysqladmin","ping","-h","localhost","-uroot","-p123456"]interval:5stimeout:3sretries:10start_period:10swordpress:image:wordpress:latestrestart:alwaysdepends_on:db:condition:service_healthyenvironment:WORDPRESS_DB_HOST:"db:3306"WORDPRESS_DB_USER:"root"WORDPRESS_DB_PASSWORD:"123456"WORDPRESS_DB_NAME:"wordpress"ports:-"8080:80"

要点:

  • depends_on+condition: service_healthy:等 MySQL 健康检查通过后再启动 WordPress,避免「数据库未就绪」。
  • 容器之间用服务名(这里是db)互相访问,不用 IP。
  • volumes把数据落到本地目录,容器删了数据还在。

6.3 启动与验证

# 一键启动(首次会自动下载镜像)dockercompose up-d# 查看容器状态dockercomposeps# 实时查看日志dockercompose logs-f

浏览器打开 http://localhost:8080,能看到 WordPress 安装页,就说明两个容器都跑起来了。

七、Docker Compose 常用命令

分类命令作用
启动docker compose up -d后台启动全部服务
启动docker compose up -d 服务名只启动指定服务
停止docker compose stop停止服务(保留容器)
停止docker compose down停止并删除容器+网络(保留镜像和数据卷)
查看docker compose ps查看容器状态
日志docker compose logs -f 服务名实时查看指定服务日志
构建docker compose up -d --build重建镜像并启动
执行docker compose exec 服务名 bash进入容器
清理docker compose down -v连数据卷一起删(慎用)
清理docker compose down --rmi all连镜像一起删(慎用)

八、常见问题排查

  • Win11 启动 Docker 失败,提示 WSL2 未配置:确认虚拟化和 WSL2 功能已开启、WSL 内核已安装,再重启。
  • Compose 报 yaml 格式错误:检查缩进必须用空格(不能用 Tab)、冒号后有空格、引号是英文。
  • Ubuntu 执行 docker 报权限不足:sudo usermod -aG docker $USER后重新登录。
  • 拉镜像超时:检查 /etc/docker/daemon.json 或 Docker Desktop 里的镜像加速源是否可用。
  • 容器起来后马上退出或反复重启:用docker logs或docker compose logs看日志定位原因,常见是环境变量没配或端口被占用。
  • 浏览器打不开站点、提示连不上数据库:先用docker compose ps确认相关容器都是 Up,再确认depends_on的健康检查已经通过。

九、小结

Docker 用「镜像 → 容器」把环境标准化,解决了环境不一致的问题。单个容器用docker run跑起来,多个容器交给 Docker Compose 编排。日常开发部署,掌握下载安装、换源、常用命令、Dockerfile 和 Compose 这几块基本就够用。

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

自研轻量CRM实践:让销售团队从Excel真正迁移到系统

很多团队买CRM时都有一种幻觉:以为软件买回来,客户资源就自动管好了。我见过太多团队,花了十几万上Salesforce或者某国产大平台,结果一线销售照样用Excel记客户,客户聊天记录照样散落在个人微信里,主管问起…

作者头像 李华
网站建设 2026/10/19 4:08:07

从提示工程到上下文工程:Agent架构的范式转移与实战改造

过去这一年,我花在拆Agent问题上的时间比写prompt的时间还多。不是赶时髦,纯粹是工作里堆了一堆跑着跑着就“失控”的Agent:上一秒还在按计划执行,下一秒突然把一个错误工具的结果当成真理继续推理,或者嘴上说着“记住…

作者头像 李华
网站建设 2026/10/19 4:07:26

Linux C/C++ 开发环境搭建实操指南:从工具链到调试技巧

写在前面的白话:这篇东西不是教科书,更像一份我反复搭环境的操作笔记。标题叫“Linux C/C 开发环境搭建”,看起来很简单,无非装个编译器、配个编辑器,但真正动手就会发现坑全藏在细节里——包管理器选错、CMake版本太低…

作者头像 李华
网站建设 2026/10/19 4:07:04

开源CLI代码审查工具:基于Git与LLM的可审计code review方案

1. 项目概述:一个真正能落地的开源代码审查 CLI 工具“open-code-review”这个名字乍一听像某个 GitHub 上刚建的空仓库,但如果你最近在团队里被 PR 堆得喘不过气,或者自己写完一段 Python 脚本总担心漏掉边界条件、硬编码、安全漏洞&#xf…

作者头像 李华
网站建设 2026/10/19 4:04:31

基于CNN的橘子新鲜度图像识别项目实战:从数据到部署

如果你正在为课程设计或毕业设计发愁,又不想选那些烂大街的登录注册系统,那“基于卷积神经网络训练识别橘子是否新鲜”这个题目可以重点考虑一下。它看起来是单一场景,但背后是完整的图像分类项目:数据采集、预处理、模型搭建、训…

作者头像 李华