Skip to content

Docker-虚拟化技术


Docker 概述

在后端开发中,环境配置经常让人头疼。不同机器、不同系统,装依赖、配环境,常常一不小心就“能跑的项目跑不起来”。Docker 的出现,就是为了解决这个问题。

Docker 可以理解为一个“轻量级的虚拟机”,但它比传统虚拟机更快、更省资源。它把应用和运行环境都打包在一个“容器”里,保证无论在哪台机器上,运行效果都一样。

为什么要用 Docker?

  • 环境一致:开发、测试、生产环境完全一致,避免“在我电脑上没问题”的尴尬。
  • 快速交付:一条命令就能启动或关闭服务,部署上线更高效。
  • 易于扩展:需要更多服务时,直接复制容器即可,适合微服务和分布式场景。
  • 资源占用低:相比传统虚拟机,Docker 启动快、占用少。

入门 Docker,最常用的就是三步:

  1. 拉取镜像
    镜像就像“应用模板”。比如要用 MySQL,只需拉取官方镜像:

    bash
    docker pull mysql:8.0

    这条命令会下载 MySQL 8.0 的镜像。

  2. 运行容器
    有了镜像,就可以启动一个“容器”(即运行中的应用):

    bash
    docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0

    这会在后台启动一个 MySQL 服务,端口映射到本地 3306。

  3. 管理容器
    查看正在运行的容器:

bash
   docker ps

停止容器:

bash
   docker stop my-mysql

Docker 让开发环境变得简单、统一,是现代后端开发的必备工具。入门阶段,建议多用官方镜像,先学会基本命令和常见用法,后续再深入了解镜像构建、容器编排等进阶内容。

容器与虚拟机比较

很多人刚接触 Docker 时,都会把“容器”和“虚拟机”混为一谈。其实,两者虽然都能实现“隔离运行环境”,但原理和使用体验差别很大。

虚拟机
虚拟机会在物理服务器上模拟出一整套硬件,然后再在虚拟硬件上安装操作系统。每个虚拟机都像一台“完整的电脑”,资源占用大,启动慢。

容器
容器则是直接利用宿主机的操作系统内核,不需要额外的操作系统。它们之间彼此隔离,但共享同一个内核,所以启动非常快,占用资源也很少。

举个例子:

  • 启动一个虚拟机,可能要几分钟,还要分配几 G 内存和硬盘。
  • 启动一个容器,几秒钟就能搞定,几十 M 内存就够用。

容器更轻量、更高效,非常适合微服务、弹性扩容等现代开发场景。而虚拟机更适合需要高度隔离、不同操作系统的场合。

Docker 基本概念

刚接触 Docker,最容易混淆的就是各种名词。其实只要抓住几个核心点,就能理清楚它们的关系:

宿主机(Host)
就是你安装了 Docker 的那台服务器。无论是本地电脑还是云服务器,只要能装 Docker,就是宿主机。

镜像(Image)
镜像可以理解为“应用的模板”或者“快照”。比如你要用 MySQL,就拉一个 MySQL 镜像。镜像里包含了应用运行所需的所有环境和依赖。
为什么要有镜像?—— 保证环境一致,随时可以复制、分发。

容器(Container)
容器就是镜像“跑起来”之后的实例。镜像像“类”,容器像“对象”。你可以用同一个镜像启动很多个容器,每个容器互不影响。
为什么要有容器?—— 让应用真正运行起来,并且彼此隔离。

仓库(Repository)
仓库是用来存放镜像的地方。最常用的是 Docker Hub(官方仓库),也可以搭建自己的私有仓库。
为什么要有仓库?—— 方便团队协作和镜像分发。

docker 安装

Docker 安装其实很简单,下面以 Linux(CentOS/RedHat 系)为例,快速过一遍常用流程:

1. 安装 Docker

直接用包管理器安装即可:

bash
yum install docker

2. 查看 Docker 版本

安装好后,检查一下版本,确认 Docker 已经装好:

bash
docker -v

3. 配置镜像加速

国内拉取镜像速度慢,建议配置镜像加速。常用做法是编辑配置文件:

bash
vim /etc/docker/daemon.json

在文件中添加如下内容(以阿里云为例):

json
{
  "registry-mirrors": ["https://z7sw3355.mirror.aliyuncs.com"]
}

阿里云镜像加速需要注册账号,每个人都能免费获得一个专属加速地址,速度很快。如果阿里云不稳定,也可以用其他镜像源,比如:

json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.chenby.cn",
    "http://mirrors.ustc.edu.cn"
    // ... 其他可选加速源
  ]
}

4. 应用配置并重启 Docker

配置好镜像加速后,记得刷新配置并重启服务:

bash
sudo systemctl daemon-reload
sudo systemctl restart docker

镜像加速配置常见问题

我在配置镜像加速时会遇到各种“玄学”问题,比如配置不上、加速器无效等。常见原因有:

  • JSON 格式写错:只要有一个逗号、引号、括号错了,Docker 就无法识别。建议用在线 JSON 校验工具检查格式
  • 配置文件路径不对:一般是 /etc/docker/daemon.json,没有的话可以自己新建。
  • 配置后没重启 Docker:修改完一定要执行 sudo systemctl daemon-reloadsudo systemctl restart docker,否则新配置不会生效。
  • 网络环境问题:有些云服务器或公司网络会屏蔽部分镜像源,导致加速器失效。
  • 加速器地址失效或被墙:有些镜像源可能临时不可用,建议多试几个不同的加速地址。

如果本地怎么都搞不定,其实不用死磕,可以直接用云厂商(比如腾讯云、阿里云)自带的 Docker 镜像环境,省心省力。我自己就遇到过配置不上的情况,最后直接在腾讯云上用带 Docker 的 CentOS 镜像,一下子就好了。

评论