初识 Docker

Docker 的诞生

Docker 起源于 2013 年,由法国工程师 Solomon HykesdotCloud 公司内部发起的一个项目。dotCloud 是一家提供平台即服务(PaaS)的公司,他们自己使用一种容器技术来隔离和运行客户的应用。Solomon 意识到这项技术本身比他们的 PaaS 平台更有价值,于是将其开源,命名为 Docker。

  • 技术基础:Docker 最初基于 Linux 容器(LXC)技术,但后来开发了自己的容器运行时 libcontainer,让容器更轻量、可移植。
  • 核心理念Build, Ship, and Run Any App, Anywhere(构建、交付、运行任何应用,任何地方)。
  • 开源影响:Docker 的出现极大地简化了容器的使用,迅速引爆了容器化浪潮,成为云计算领域的基石之一。
  • 版本分支:社区版(CE - Community Edition)与企业版(EE - Enterprise Edition)。
  • 官网
image-20260313160208799

什么是Docker

  • 镜像(Image):容器的只读模板,包含了运行应用所需的代码、运行时、库、环境变量和配置文件。
    • 好比是“类”,是一个静态的定义。
  • 容器(Container):一种沙盒环境,运行着你的应用,彼此隔离,且共享宿主机的操作系统内核。
    • 好比是“对象”,是镜像运行时的动态实例。
  • 仓库(Repository):集中存放镜像的地方,最著名的是 Docker Hub。
    • 存放镜像的“网盘”,可以拉取(pull)或推送(push)镜像。
  • Dockerfile:自动化构建镜像的脚本。
    • 构建镜像的“配方”,描述如何一步步构建镜像。
image-20260314013808340

Docker 通过镜像构建容器,让你一次构建,到处运行。


为什么使用Docker

  • 环境一致性:开发、测试、生产环境完全一致,告别环境问题。
  • 快速部署:容器启动只需秒级,比虚拟机快得多。
  • 资源高效:容器共享宿主机内核,不需要完整的操作系统,内存、CPU 占用更低。
  • 易于迁移:任何安装了 Docker 的机器都能运行你的容器。
  • 版本控制:镜像可以像 Git 一样进行版本管理,方便回滚和协作。

Docker与虚拟机的区别

特性 Docker 容器 虚拟机
启动速度 秒级 分钟级
硬盘占用 MB 级别 GB 级别
性能 接近原生 有一定损耗
系统支持 共享宿主机内核 每个 VM 包含完整 OS
隔离级别 进程级隔离 硬件级虚拟化

安装 Docker

Docker可以运行在MAC,Windows、Centos、Ubuntu等操作系统上,本次基于Centos 9安装。

  1. 确保系统环境干净,先卸载可能存在的旧版本(如果是全新系统可跳过)

    sudo dnf remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    

    此操作不会删除 /var/lib/docker/ 中的镜像、容器、卷和网络

  2. 配置 Docker 官方软件源

    # 为系统添加 Docker CE 的软件源,阿里云镜像源(国内推荐)
    sudo dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 安装yum-utils依赖
    sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 安装 Docker 引擎

    • 安装 Docker

      • 最新版

        # 包含 docker-ce引擎、docker-ce-cli客户端、containerd.io容器运行时
        sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
        
      • 指定版本

        # 查看可用版本
        dnf list docker-ce --showduplicates | sort -r
        
        # 安装特定版本(替换 VERSION_STRING,如 3:27.4.0-1.el9)
        sudo dnf install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
        
    • 启动并设置开机自启

      # 启动 Docker 服务
      sudo systemctl start docker
      # 设置开机自启
      sudo systemctl enable docker
      # 验证服务状态(显示 active (running) 即为正常)
      sudo systemctl status docker
      
      image-20260313170925725
  4. 配置非root用户免sudo使用Docker(可选)

    # 将当前用户添加到 docker 组
    sudo usermod -aG docker $USER
    # 使配置生效(需要重新登录或执行以下命令)
    newgrp docker
    # 测试无需 sudo 运行
    docker run hello-world
    

    安全提示:将用户添加到 docker 组相当于赋予该用户 root 权限,请谨慎操作

  5. 验证安装

    sudo docker run hello-world
    # 查看docker版本(备选)
    docker -v
    
    image-20260314012853946

    看到 "Hello from Docker!" 的欢迎信息,说明安装成功。

  6. 可选优化(国内镜像加速):为了提升镜像拉取速度,建议配置国内镜像源

    # 创建 Docker 配置目录
    sudo mkdir -p /etc/docker
    
    # 写入镜像加速配置(使用腾讯云、网易云、阿里云(公共版)镜像源)
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com",
        "https://hub-mirror.c.163.com",
        "https://mirror.aliyuncs.com"
      ]
    }
    EOF
    
    # 重启 Docker 服务使配置生效
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

posted @ 2026-03-14 01:57  克峰同学  阅读(2)  评论(0)    收藏  举报