Docker的前世今生及安装与使用命令详解

在云原生时代,容器技术已经成为软件开发与部署的关键工具。其中,Docker 凭借其轻量、灵活和高效的特性迅速走红。本文将带你走进 Docker 的历史沿革,了解其从前世到今生的发展历程,并详细介绍如何安装 Docker 以及常用的操作命令。


一、Docker 的前世------容器化技术的萌芽与发展

1. 早期背景与虚拟化技术

在 Docker 出现之前,虚拟机(Virtual Machine)技术已经广泛应用于服务器资源的隔离和管理。虚拟机通过硬件虚拟化技术,将一台物理机分割成多个独立的系统实例,但相对来说资源开销较大、启动速度较慢。为了追求更高效的资源利用率,Linux 社区早期就发展出基于内核特性的容器技术,如 chrootcgroups命名空间(namespaces) 等技术,这为后来的容器化打下了基础。

2. Docker 的诞生与初步发展

2013 年,Solomon Hykes 及其团队在 dotCloud 平台上推出了 Docker 项目。Docker 利用 Linux 内核的容器化技术,将应用及其依赖打包成一个独立的、可移植的镜像,使得应用在不同环境中都能保持一致的运行状态。这一设计理念迅速获得开发者和运维人员的青睐。Docker 的出现不仅简化了应用部署流程,还极大地推动了微服务架构和持续集成/持续交付(CI/CD)的发展。

3. Docker 的生态体系形成

随着 Docker 社区的壮大,Docker 生态系统也在不断完善:

  • Docker Hub:作为官方镜像仓库,提供海量公共镜像供用户下载和分享。
  • Docker Compose:让用户可以通过简单的 YAML 文件定义和管理多容器应用。
  • Docker Swarm :原生的集群编排工具,使得 Docker 容器在集群环境下实现高可用和负载均衡。
    同时,Kubernetes 等容器编排工具的崛起,也让 Docker 成为云原生应用的核心组成部分。

二、Docker 的今生------云原生时代的明星

1. 广泛应用与产业生态

进入 2020 年代,Docker 不仅在开发和测试环境中占据重要地位,也逐渐成为生产环境中部署微服务架构的首选工具。借助其轻量级、启动快和高效资源利用的优势,Docker 成为了云平台、DevOps 和持续交付流程中的标准组件。

2. 与 Kubernetes 的协同发展

尽管 Kubernetes 已经成为主流的容器编排平台,但 Docker 依然在镜像构建与容器运行时发挥着重要作用。部分 Kubernetes 集群也使用 Docker 作为默认的容器运行时,二者形成了互补的生态系统,共同推动了云原生应用的发展。

3. 社区与开源精神

Docker 的成功离不开活跃的开源社区。全球无数开发者和企业不断为 Docker 贡献代码、撰写文档和开发插件,使其不断进化,满足各种复杂场景下的应用需求。


三、Docker 的安装方法

安装 Docker 的步骤因操作系统不同而略有差异,下面以 Ubuntu、CentOS 以及 Windows/Mac 为例说明:

1. 在 Ubuntu 上安装 Docker

  1. 更新软件包索引:

    bash 复制代码
    sudo apt-get update
  2. 安装必要的依赖包:

    bash 复制代码
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  3. 添加 Docker 官方 GPG 密钥:

    bash 复制代码
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 设置稳定版仓库:

    bash 复制代码
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. 安装 Docker Engine:

    bash 复制代码
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 验证安装:

    bash 复制代码
    sudo docker run hello-world

    若能成功输出欢迎信息,则说明 Docker 安装成功。

2. 在 CentOS 上安装 Docker

  1. 卸载旧版本(若有):

    bash 复制代码
    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  2. 安装必要的软件包:

    bash 复制代码
    sudo yum install -y yum-utils
  3. 设置稳定仓库:

    bash 复制代码
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. 安装 Docker Engine:

    bash 复制代码
    sudo yum install docker-ce docker-ce-cli containerd.io
  5. 启动 Docker 并设置开机启动:

    bash 复制代码
    sudo systemctl start docker
    sudo systemctl enable docker
  6. 测试 Docker 是否正常工作:

    bash 复制代码
    sudo docker run hello-world

3. 在 Windows 和 macOS 上安装 Docker

  • Windows:
    1. 访问 Docker Desktop for Windows 下载页面下载安装包。
    2. 双击安装包,根据向导完成安装。
    3. 安装完成后,重启计算机,并启动 Docker Desktop 进行配置。
  • macOS:
    1. 访问 Docker Desktop for Mac 下载页面下载 DMG 文件。
    2. 将 Docker 拖动至"应用程序"文件夹,启动 Docker Desktop。
    3. 根据提示完成初次设置即可。

四、常见的 Docker 使用命令详解

掌握以下常用命令,可以帮助你高效管理和使用 Docker 容器和镜像:

1. 容器管理命令

  • docker run

    用于从镜像创建并启动一个容器。例如:

    bash 复制代码
    docker run -d -p 80:80 nginx

    该命令会在后台启动一个 Nginx 容器,并将容器的 80 端口映射到宿主机的 80 端口。

  • docker ps

    查看当前正在运行的容器:

    bash 复制代码
    docker ps

    若要查看所有容器(包括停止的):

    bash 复制代码
    docker ps -a
  • docker stop

    停止一个正在运行的容器:

    bash 复制代码
    docker stop <容器ID或名称>
  • docker rm

    删除一个或多个已停止的容器:

    bash 复制代码
    docker rm <容器ID或名称>
  • docker exec

    在一个正在运行的容器中执行命令,例如进入容器内部:

    bash 复制代码
    docker exec -it <容器ID或名称> /bin/bash

2. 镜像管理命令

  • docker images

    列出本地所有的 Docker 镜像:

    bash 复制代码
    docker images
  • docker pull

    从 Docker Hub 或其他仓库拉取指定的镜像:

    bash 复制代码
    docker pull ubuntu:latest
  • docker build

    根据 Dockerfile 构建自定义镜像:

    bash 复制代码
    docker build -t myimage:1.0 .
  • docker rmi

    删除本地镜像:

    bash 复制代码
    docker rmi <镜像ID或名称>

3. 网络与数据卷

  • docker network ls

    列出所有 Docker 网络:

    bash 复制代码
    docker network ls
  • docker volume ls

    列出所有数据卷:

    bash 复制代码
    docker volume ls
  • docker-compose

    虽然不是 Docker Engine 的命令,但 Docker Compose 允许用户通过 YAML 文件定义和管理多容器应用,极大简化了复杂应用的部署流程。例如:

    bash 复制代码
    docker-compose up -d

    用于在后台启动所有在 docker-compose.yml 中定义的服务。


五、如何更新 Docker 版本

在日常维护和新功能需求下,更新 Docker 版本是十分常见的操作。更新 Docker 版本前建议先备份重要的容器和数据,以防升级过程中出现意外情况。下面介绍几种常见的更新方法。

1. 更新前的准备工作

  • 检查当前版本

    在更新之前,请先查看当前的 Docker 版本,确认是否需要更新。

    bash 复制代码
    docker --version
  • 备份数据和配置

    如果你的容器中有重要数据,建议先备份 /var/lib/docker 目录或通过容器内的备份方式保存数据。

    注意:如果不删除 /var/lib/docker 目录,更新操作通常不会清除镜像和容器,但数据安全始终是第一位的。

  • 停止 Docker 服务

    更新前最好先停止 Docker 服务,确保容器运行状态不会干扰升级过程:

    bash 复制代码
    sudo systemctl stop docker

2. 使用包管理器更新 Docker

根据你的操作系统,可以采用相应的包管理器来升级 Docker:

  • Ubuntu/Debian 系统:

    更新软件包列表后升级 Docker CE:

    bash 复制代码
    sudo apt-get update
    sudo apt-get upgrade docker-ce
  • CentOS/Fedora 系统:

    使用 yum 命令更新 Docker CE:

    bash 复制代码
    sudo yum update docker-ce

    也可以先查看可用的 Docker 版本,然后指定安装某个版本:

    bash 复制代码
    yum list docker-ce --showduplicates | sort -r
    sudo yum install docker-ce-<版本号>

    例如:

    bash 复制代码
    sudo yum install docker-ce-25.0.3-1.el7

3. 使用 Docker 官方脚本进行更新

Docker 官方提供了一个便捷的安装脚本,该脚本不仅可用于全新安装,同样支持更新操作。操作步骤如下:

  1. 下载脚本:

    bash 复制代码
    curl -fsSL https://get.docker.com -o get-docker.sh
  2. 运行脚本进行安装或升级:

    bash 复制代码
    sudo sh get-docker.sh

    此方法适用于大多数 Linux 系统,并会自动安装最新稳定版本。

4. 更新后验证

更新完成后,请重新启动 Docker 服务并检查版本:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker
docker --version

此外,也可以运行容器进行测试,确保所有服务正常:

bash 复制代码
docker run hello-world

5. 更新中常见问题及注意事项

  • 兼容性检查:

    升级前请确认当前容器和镜像与新版本 Docker 兼容,有时 Docker 更新可能会引入不兼容的变更(例如 docker-runc 的参数问题),必要时请参照官方文档或社区经验进行调整。

  • 日志与错误排查:

    如果升级后遇到问题,查看 Docker 日志可以帮助定位错误原因:

    bash 复制代码
    sudo journalctl -u docker
  • 备份恢复:

    更新前如果重命名或备份了 /var/lib/docker 目录,更新后可将数据恢复到原路径,确保容器、镜像和数据不丢失。


通过以上步骤,你可以根据自己的系统环境和安装方式选择合适的更新方法,顺利将 Docker 升级到最新版本,从而享受到新特性和更稳定的运行环境。

六、总结

Docker 从最初借助 Linux 内核的容器技术起步,到如今成为云原生时代不可或缺的工具,其发展历程充分体现了技术演进与社区创新的力量。无论是在开发、测试还是生产环境中,Docker 都能帮助团队更快地构建、部署和扩展应用。掌握 Docker 的安装方法及常用命令,不仅能提高运维效率,也为深入了解容器编排、微服务架构以及持续交付打下坚实基础。

随着容器化技术和云计算的发展,Docker 生态系统还将不断扩展,为软件交付和系统管理带来更多的创新和便利。希望这篇文章能为你打开 Docker 的大门,助你在技术路上更进一步。

相关推荐
ldj202011 小时前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
ldj202012 小时前
docker 自定义网桥作用
docker·容器
java叶新东老师12 小时前
k8s常用命令
云原生·容器·kubernetes
土豆丶杨14 小时前
centos 配置docker
docker·eureka·centos
杰哥的狗14 小时前
nacos连接失败,启动失败常见问题
linux·docker
DarkAthena14 小时前
【GaussDB】构建一个GaussDB的Docker镜像
数据库·docker·gaussdb
张火火isgudi18 小时前
CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器
服务器·docker·容器
qq_4477053119 小时前
宝塔通过docker部署JupyterHub指南【常见错误处理】
运维·docker·容器
tanxiaomi20 小时前
docker 从主机复制文件到容器外进行编辑
运维·docker·容器
hzulwy20 小时前
docker与k8s的容器数据卷
docker·eureka·kubernetes