操作系统上的Docker安装指南:解锁容器化新世界

**摘要:**本文详细介绍了Docker在不同操作系统上的安装方法。主要内容包括:Windows系统通过Docker Desktop安装,需启用Hyper-V和WSL2;Mac系统同样使用Docker Desktop,根据芯片类型选择版本;Linux系统以Ubuntu为例,通过命令行完成安装。安装后建议配置镜像加速器优化下载速度,并合理分配CPU、内存等资源。文章还提供了常见问题的解决方案,如依赖缺失、网络问题和权限不足等。Docker作为容器化技术的代表,能实现"一次构建,到处运行",极大提升开发运维效率,是数字化转型的重要工具。

目录

一、Docker:容器化世界的大门

[二、Windows 系统安装 Docker](#二、Windows 系统安装 Docker)

(一)准备工作

[(二)下载 Docker Desktop](#(二)下载 Docker Desktop)

[(三)安装 Docker Desktop](#(三)安装 Docker Desktop)

[(四)配置 Docker Desktop](#(四)配置 Docker Desktop)

(五)验证安装

[三、Mac 系统安装 Docker](#三、Mac 系统安装 Docker)

[(一)下载 Docker Desktop](#(一)下载 Docker Desktop)

[(二)安装 Docker Desktop](#(二)安装 Docker Desktop)

[(三)启动 Docker Desktop](#(三)启动 Docker Desktop)

(四)验证安装

[(五)配置 Docker](#(五)配置 Docker)

[四、Linux 系统安装 Docker(以 Ubuntu 为例)](#四、Linux 系统安装 Docker(以 Ubuntu 为例))

(一)更新系统软件包

(二)安装依赖包

[(三)添加 Docker 官方 GPG 密钥](#(三)添加 Docker 官方 GPG 密钥)

[(四)添加 Docker 的 APT 软件源](#(四)添加 Docker 的 APT 软件源)

[(五)更新 apt 包索引并安装 Docker Engine](#(五)更新 apt 包索引并安装 Docker Engine)

(六)启动并设置开机自启

(七)验证安装

五、安装后的配置与优化

(一)配置镜像加速

(二)资源分配调整

[(三)Docker Compose 安装与使用(可选)](#(三)Docker Compose 安装与使用(可选))

六、常见问题及解决方法

(一)安装过程中的错误提示及解决

(二)运行时遇到的问题及排查思路

七、总结与展望


一、Docker:容器化世界的大门

在当今数字化的时代,软件开发和运维的节奏不断加快,对效率和灵活性的要求也越来越高。Docker,作为容器化技术的佼佼者,应运而生,为开发者和运维人员打开了一扇通往高效、便捷的新世界大门。

Docker 就像是一个神奇的 "集装箱",它可以将应用程序及其所有依赖项,如代码、运行时、系统工具、库等,打包成一个独立的、可移植的容器。这个容器就像一个 "自给自足" 的小世界,无论在开发环境、测试环境还是生产环境,都能保持一致的运行状态,真正实现了 "一次构建,到处运行" 的梦想。

对于开发者来说,Docker 大大简化了开发环境的搭建过程。以往,为了让应用程序在不同的开发机器上正常运行,可能需要花费大量的时间和精力去配置各种依赖项,而且还经常会遇到 "在我的机器上能运行,在别人的机器上就不行" 的尴尬情况。有了 Docker,这些问题都迎刃而解。开发者只需要在本地创建一个包含所有依赖的 Docker 容器,就可以确保开发环境与生产环境的高度一致,减少了因环境差异导致的各种问题,提高了开发效率和团队协作的顺畅度。

在运维领域,Docker 的优势更是显著。它的轻量级特性使得多个容器可以在同一台主机上高效运行,大大提高了资源利用率。同时,Docker 的快速部署和扩展能力,让运维人员可以在短时间内快速启动或停止容器,根据业务需求灵活调整资源分配,轻松应对高并发和流量高峰。此外,Docker 还与持续集成 / 持续部署(CI/CD)流程完美融合,实现了自动化的构建、测试和部署,极大地缩短了软件的发布周期,提高了软件的质量和稳定性。

无论是开发微服务架构的应用程序,还是进行大规模的云计算部署;无论是初创企业追求快速迭代,还是大型企业需要高效的运维管理,Docker 都已经成为了不可或缺的关键技术。它正以其强大的功能和独特的魅力,改变着软件开发和运维的方式,引领着行业的发展潮流。

接下来,就让我们一起深入探索在不同操作系统上安装 Docker 的方法,开启我们的 Docker 之旅吧!

二、Windows 系统安装 Docker

在 Windows 系统上安装 Docker,能让你在熟悉的 Windows 环境中体验 Docker 强大的容器化技术,为开发和运维工作带来极大的便利。接下来,我们就一步步详细介绍在 Windows 系统中安装 Docker 的方法。

(一)准备工作

  • 系统要求
    • 操作系统:需要 Windows 10 64 位的专业版、企业版或教育版(版本号 1903 及以上),或者 Windows 11 64 位系统 。若使用 Windows Server,版本需为 2016 及更高。
    • 硬件配置:确保计算机配备 64 位处理器,且支持虚拟化技术,如 Intel VT-x 或 AMD-V;内存方面,至少 4GB,推荐 8GB 及以上,以保证多个容器同时运行时系统的流畅性;磁盘空间也需充足,以存储 Docker 镜像和容器,建议使用 SSD 磁盘,提升读写速度。
  • 启用 Hyper-V 和 WSL 2
    • Hyper-V :这是 Windows 系统自带的虚拟化平台,Docker 依赖它来运行容器。启用方式如下:
      • 图形界面 :打开 "控制面板",找到 "程序和功能",点击 "启用或关闭 Windows 功能",在弹出的窗口中勾选 "Hyper-V",点击 "确定" 后,系统会提示重启,重启后 Hyper-V 即可生效。
      • PowerShell 命令 :以管理员身份打开 PowerShell,运行命令Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All ,同样,执行完后需重启计算机。
    • WSL 2(Windows Subsystem for Linux 2):这是 Windows 上运行 Linux 二进制可执行文件(ELF 格式)的兼容层,能提供更高效的性能和更好的兼容性。启用步骤如下:
      • 以管理员身份打开 PowerShell,运行wsl --install命令,该命令会自动安装 WSL 2 所需的组件,并下载默认的 Linux 发行版(如 Ubuntu)。
      • 若已安装 WSL 1,可通过wsl --set-default-version 2命令将其升级到 WSL 2。
      • 下载并安装 WSL 2 Linux 内核更新包,可从微软官网获取,安装完成后,WSL 2 即可正常工作。

(二)下载 Docker Desktop

  • 官方下载链接 :访问 Docker 官方网站的下载页面https://www.docker.com/products/docker-desktop ,点击 "Download for Windows" 按钮,即可开始下载适用于 Windows 的 Docker Desktop 安装程序。
  • 下载步骤和注意事项
    • 在下载前,确保网络连接稳定,以免下载过程中断。
    • 下载的安装程序文件名为 "Docker Desktop Installer.exe",文件大小可能会因版本不同而有所差异,一般在几百 MB 左右。
    • 若下载速度较慢,可以尝试更换网络环境,或者使用下载工具进行下载。

(三)安装 Docker Desktop

  • 运行安装程序:下载完成后,双击 "Docker Desktop Installer.exe" 文件,启动安装向导。安装向导会提示你一些许可协议等信息,仔细阅读后,勾选 "我接受许可协议中的条款",然后点击 "安装" 按钮。
  • 选择安装选项 :在安装过程中,你可以选择安装路径等选项。如果没有特殊需求,保持默认设置即可。默认情况下,Docker Desktop 会安装到 "C:\Program Files\Docker\Docker" 目录下
  • 等待安装完成及重启计算机 :安装过程可能需要一些时间,根据计算机性能不同,大约需要几分钟到十几分钟不等。安装完成后,系统会提示你重启计算机,点击 "是",重启计算机使安装生效。

(四)配置 Docker Desktop

  • 打开 Docker Desktop 设置:重启计算机后,在开始菜单中找到 "Docker Desktop" 并打开。第一次打开时,可能会出现欢迎界面,点击 "接受" 接受服务条款。然后,在系统托盘区找到 Docker 图标,右键点击它,选择 "Settings",即可打开 Docker Desktop 的设置页面。
  • 配置内存、CPU、磁盘空间、网络及代理等选项
    • 内存和 CPU:在 "Resources" 选项卡下的 "Advanced" 子选项卡中,可以根据实际需求调整分配给 Docker 的内存和 CPU 核心数。例如,如果计算机内存为 16GB,且同时运行多个容器,可以适当分配 4GB - 8GB 内存给 Docker,同时根据 CPU 核心数量,分配 2 - 4 个核心 ,以确保容器能够稳定运行。
    • 磁盘空间:同样在 "Resources" 选项卡中,可以设置 Docker 存储镜像和容器数据的磁盘位置。如果系统盘空间紧张,可以将其设置到其他大容量磁盘分区,点击 "Browse" 选择新的存储路径即可。
    • 网络:在 "Resources" 选项卡的 "Network" 子选项卡中,可以配置 Docker 容器的网络设置,如 DNS 服务器等。一般情况下,保持默认设置即可满足大多数需求。
    • 代理:若你的网络环境需要使用代理服务器,在 "Proxies" 选项卡中,填写代理服务器的地址和端口信息,点击 "Apply & Restart" 保存设置并重启 Docker,使代理配置生效。

(五)验证安装

  • 检查 Docker 版本:打开命令提示符(CMD)或 PowerShell,运行命令docker --version ,如果安装成功,会显示 Docker 的版本信息,例如 "Docker version 24.0.2, build cb74dfc" 。
  • 检查服务状态:运行命令docker info,该命令会输出 Docker 的详细信息,包括容器数量、镜像数量、存储驱动、服务器版本等。如果输出信息正常,没有报错,说明 Docker 服务运行正常。
  • 运行测试容器 :运行命令docker run hello-world,Docker 会自动从 Docker Hub 下载一个名为 "hello-world" 的测试镜像,并在容器中运行它。如果看到输出 "Hello from Docker!" 等类似信息,恭喜你,Docker 在 Windows 系统上安装成功,你可以开始使用 Docker 来构建、运行和管理容器化应用程序了。

博主也写了一篇Window10安装Docker详细教程,欢迎大家阅读参考:Windows10安装Docker Desktop(大妈看了都会)_win10 docker desktop-CSDN博客

本文详细介绍了如何在Windows10上安装DockerDesktop,包括为何选择在Windows上安装、Docker基本概念、下载与安装步骤、启用Hyper-V、解决常见问题,如WSL2安装不完整和设置默认版本。通过本文,开发者可以快速掌握在Windows环境下使用Docker进行容器化开发的流程。

三、Mac 系统安装 Docker

在 Mac 系统上安装 Docker,为开发者提供了一个高效、便捷的容器化开发环境,让你能够轻松地构建、测试和部署应用程序。下面,我们就来详细介绍一下在 Mac 系统中安装 Docker 的具体步骤。

(一)下载 Docker Desktop

  • 官方下载链接 :访问 Docker 官方网站的下载页面https://www.docker.com/products/docker-desktop ,在这里,你可以看到专为 Mac 系统提供的 Docker Desktop 下载选项。根据你的 Mac 电脑芯片类型(Intel 或 Apple Silicon (M1/M2)),选择对应的版本进行下载。如果不确定芯片类型,可以点击苹果菜单,选择 "关于本机",在弹出的窗口中查看 "处理器" 信息来确定。
  • 下载步骤和注意事项:点击下载按钮后,浏览器会开始下载一个.dmg 格式的安装文件。下载过程中,请确保网络连接稳定,以免下载中断。下载完成后,安装文件通常会保存在 "下载" 文件夹中,你可以在该文件夹中找到名为 "Docker.dmg" 的文件。

(二)安装 Docker Desktop

  • 运行安装程序:找到下载好的 "Docker.dmg" 文件,双击打开它。这会弹出一个安装窗口,显示 Docker 的图标和应用程序文件夹的图标。
  • 将 Docker 图标拖动到应用程序文件夹:按照安装窗口的提示,将 Docker 图标直接拖动到 "应用程序" 文件夹图标上,系统会自动将 Docker 安装到应用程序目录中。这个过程可能需要一些时间,取决于你的系统性能,请耐心等待。

(三)启动 Docker Desktop

  • 首次启动授权:安装完成后,打开 "应用程序" 文件夹,找到 Docker 图标并双击启动。首次启动时,系统可能会弹出一个权限请求窗口,要求你输入 Mac 的管理员密码进行授权。这是为了确保 Docker 能够正常访问系统资源并进行必要的配置,输入密码后点击 "好" 即可。
  • 启动方法:除了在应用程序文件夹中启动 Docker 外,你还可以通过 "聚焦搜索"(按下 Command + 空格键,输入 "Docker",然后回车)来快速启动 Docker。启动成功后,你会在菜单栏右上角看到一个 Docker 的鲸鱼图标,表示 Docker 正在运行。

(四)验证安装

  • 在终端输入命令:打开 "终端" 应用程序(可以在 "应用程序" - "实用工具" 中找到,或者通过聚焦搜索打开)。
  • 查看版本号:在终端中输入命令docker --version ,然后回车。如果安装成功,终端会显示 Docker 的版本信息,例如 "Docker version 24.0.2, build cb74dfc" ,这表明 Docker 已经成功安装在你的 Mac 系统上。

(五)配置 Docker

  • 打开 Docker Desktop 设置:点击菜单栏中的 Docker 鲸鱼图标,选择 "Preferences"(首选项),打开 Docker Desktop 的设置窗口。
  • 资源分配:在 "Preferences" 窗口中,选择 "Resources"(资源)选项卡。在这里,你可以根据自己的需求调整分配给 Docker 的 CPU 核心数和内存大小。例如,如果你的 Mac 配备了 8GB 内存,并且主要用于日常开发工作,那么可以为 Docker 分配 2 - 4GB 内存和 2 - 4 个 CPU 核心,以确保 Docker 容器能够稳定运行,同时不影响其他应用程序的性能。
  • 网络设置:同样在 "Resources" 选项卡中,点击 "Network"(网络)子选项卡,你可以对 Docker 容器的网络进行配置。一般情况下,保持默认设置即可满足大多数开发需求。如果你需要特定的网络配置,比如设置代理服务器,可在这里进行相应的设置。
  • Docker 引擎配置:在 "Preferences" 窗口中,选择 "Docker Engine" 选项卡。这里可以对 Docker 引擎进行一些高级配置,例如修改 Docker 镜像的存储位置、添加镜像加速器等。如果需要使用国内的镜像加速器来提高镜像下载速度,可以在 "Registry mirrors"(镜像加速器)字段中添加加速器地址,如阿里云的镜像加速器地址(具体地址可在阿里云容器镜像服务控制台获取) ,添加完成后点击右下角的 "Apply & Restart"(应用并重启)按钮,使配置生效。

四、Linux 系统安装 Docker(以 Ubuntu 为例)

在 Linux 系统中,Ubuntu 凭借其易用性和强大的社区支持,成为众多开发者的首选。下面,我们就以 Ubuntu 系统为例,详细介绍 Docker 的安装过程。

(一)更新系统软件包

在安装 Docker 之前,首先要确保系统的软件包是最新的,这有助于避免安装过程中可能出现的问题。打开终端,输入以下命令来更新系统软件包:

bash 复制代码
sudo apt update

sudo apt upgrade -y

apt update命令用于更新软件包索引,它会从软件源服务器获取最新的软件包列表信息,让系统了解到有哪些软件包可以更新。而apt upgrade -y命令则会自动下载并安装系统中所有可更新的软件包,-y参数表示自动回答 "是",避免在更新过程中出现交互式询问,提高更新效率。通过这两个命令,可以让系统保持在最新的状态,为后续安装 Docker 做好准备。

(二)安装依赖包

接下来,需要安装一些必要的依赖包,这些依赖包能够允许apt使用 HTTPS 来访问软件仓库,从而确保软件包下载的安全性和可靠性。在终端中执行以下命令:

bash 复制代码
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
  • apt-transport-https:这个包允许apt通过 HTTPS 协议连接到软件源服务器,确保数据传输的加密和安全,防止在下载软件包过程中数据被窃取或篡改。
  • ca-certificates:包含了 CA(证书颁发机构)证书,使系统能够信任通过 HTTPS 连接的服务器证书,验证软件源服务器的身份真实性,避免连接到恶意的软件源。
  • curl:是一个强大的命令行工具,用于从互联网上下载文件。在这里,它将被用于下载 Docker 的相关文件,如 GPG 密钥等。
  • software-properties-common:提供了一些常用的软件源管理工具,方便用户添加、删除和管理软件源,为后续添加 Docker 官方软件源提供支持。

(三)添加 Docker 官方 GPG 密钥

为了确保从 Docker 官方软件源下载的软件包的完整性和真实性,需要添加 Docker 官方的 GPG(GNU Privacy Guard)密钥。GPG 密钥就像是一个数字签名,用于验证软件包是否来自官方且未被篡改。在终端中运行以下命令:

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

curl -fsSL https://download.docker.com/linux/ubuntu/gpg这部分命令会从 Docker 官方网站下载 GPG 密钥文件,-fsSL参数分别表示:

  • -f(--fail):当请求失败时,不显示错误信息,而是返回一个非零的退出状态码,这样可以使脚本在下载失败时能够更好地处理错误。
  • -s(--silent):静默模式,不显示下载过程中的进度条和其他冗余信息,使终端输出更加简洁。
  • -S(--show-error):当启用静默模式时,如果下载失败,仍然显示错误信息,以便用户了解失败原因。
  • -L(--location):如果服务器返回 3xx 重定向响应,curl会自动跟随重定向,确保能够获取到正确的密钥文件。

下载的密钥文件通过管道符(|)传递给gpg命令进行处理。gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg这部分命令将下载的 ASCII 格式的密钥文件转换为二进制格式(--dearmor参数),并将其保存到/usr/share/keyrings/docker-archive-keyring.gpg文件中(-o参数指定输出文件路径)。这样,系统就可以使用这个密钥文件来验证从 Docker 官方软件源下载的软件包的签名,确保软件包的安全性。

(四)添加 Docker 的 APT 软件源

添加 Docker 的 APT 软件源,让系统知道从哪里获取 Docker 的软件包。在终端中输入以下命令:

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

这条命令做了以下几件事:

  • echo "deb [arch=(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg\] [Index of linux/ubuntu/](https://download.docker.com/linux/ubuntu "Index of linux/ubuntu/") (lsb_release -cs) stable":构建一个字符串,用于描述 Docker 软件源的相关信息。其中:
    • arch=$(dpkg --print-architecture):通过dpkg --print-architecture命令获取当前系统的架构信息(如amd64等),确保下载的软件包与系统架构匹配。
    • signed-by=/usr/share/keyrings/docker-archive-keyring.gpg:指定使用前面下载并保存的 GPG 密钥文件来验证软件包的签名。
    • $(lsb_release -cs):通过lsb_release -cs命令获取当前 Ubuntu 系统的版本代号(如jammy等),以便下载与系统版本对应的 Docker 软件包。
    • stable:表示使用稳定版本的 Docker 软件源。
  • | sudo tee /etc/apt/sources.list.d/docker.list:将前面构建的软件源信息字符串通过管道符传递给tee命令,tee命令会将输入内容同时输出到标准输出和指定的文件(/etc/apt/sources.list.d/docker.list)中,sudo用于获取管理员权限,确保能够写入文件。
  • > /dev/null:将标准输出重定向到/dev/null,即丢弃输出信息,使终端更加简洁,避免不必要的干扰。

(五)更新 apt 包索引并安装 Docker Engine

添加完 Docker 的软件源后,需要再次更新apt包索引,使系统能够识别新添加的 Docker 软件源中的软件包。然后,就可以安装 Docker Engine 了。在终端中执行以下命令:

bash 复制代码
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
  • sudo apt update:更新apt包索引,让系统获取新添加的 Docker 软件源中的软件包信息。
  • sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y:安装 Docker 相关组件:
    • docker-ce:Docker 社区版(Docker Community Edition),是最常用的 Docker 版本,包含了 Docker 的核心引擎,用于创建、运行和管理容器。
    • docker-ce-cli:Docker 社区版的命令行工具,提供了一系列命令,让用户可以方便地与 Docker 引擎进行交互,如创建容器、启动容器、管理镜像等。
    • containerd.io:是一个容器运行时,它为 Docker 提供了底层的容器管理功能,负责容器的生命周期管理、镜像管理等。
    • docker-compose-plugin:Docker Compose 插件,用于定义和运行多容器的 Docker 应用程序。通过一个docker-compose.yml文件,就可以轻松管理多个相互关联的容器,实现复杂应用的快速部署和管理。

(六)启动并设置开机自启

安装完成后,需要启动 Docker 服务,并设置为开机自启,这样每次系统启动时,Docker 服务都会自动运行。在终端中输入以下命令:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker
  • sudo systemctl start docker:使用systemctl命令启动 Docker 服务,systemctl是一个系统服务管理器,用于管理系统服务的启动、停止、重启等操作。
  • sudo systemctl enable docker:将 Docker 服务设置为开机自启,enable命令会在系统启动时自动加载并启动 Docker 服务,确保 Docker 随时可用。

(七)验证安装

最后,通过运行一个简单的测试命令来验证 Docker 是否安装成功。在终端中输入以下命令:

bash 复制代码
sudo docker run hello-world

这个命令会从 Docker Hub 上下载一个名为hello-world的测试镜像,并在容器中运行它。如果安装成功,你将看到类似以下的输出:

bash 复制代码
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

这表明 Docker 已经成功安装在你的 Ubuntu 系统上,你可以开始使用 Docker 来构建、运行和管理各种容器化应用程序了。

五、安装后的配置与优化

(一)配置镜像加速

在国内使用 Docker 时,由于网络原因,从默认的 Docker Hub 镜像源拉取镜像往往速度较慢,甚至可能出现超时等问题。为了提高镜像下载速度,我们可以配置国内的镜像加速器。镜像加速器就像是一个缓存服务器,它会在国内的服务器上缓存常用的 Docker 镜像,当我们从这些加速器拉取镜像时,数据传输距离更短,速度也就更快。

以阿里云和腾讯云为例,下面介绍在不同系统上配置镜像加速的方法:

  • Windows 系统
    • 打开 Docker Desktop,点击系统托盘区的 Docker 图标,选择 "Settings"。
    • 在弹出的设置窗口中,选择 "Docker Engine" 选项卡。
    • 在 "Registry mirrors" 字段中,添加阿里云或腾讯云的镜像加速器地址(获取方式:登录阿里云或腾讯云的容器镜像服务控制台,在相关页面获取专属的加速器地址)。例如,阿里云的镜像加速器地址格式为https://[你的加速器地址].mirror.aliyuncs.com ,腾讯云的镜像加速器地址格式为https://mirror.ccs.tencentyun.com (需登录获取) 。添加后,JSON 配置文件类似如下:
bash 复制代码
{
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
  ]
}
  • 点击 "Apply & Restart" 按钮,Docker 会自动重启并应用新的镜像加速器配置。
  • Mac 系统
    • 点击菜单栏中的 Docker 鲸鱼图标,选择 "Preferences"。
    • 在 "Preferences" 窗口中,选择 "Docker Engine" 选项卡。
    • 同样在 "Registry mirrors" 字段中,添加阿里云或腾讯云的镜像加速器地址,添加完成后,点击 "Apply & Restart" 使配置生效。
  • Linux 系统(以 Ubuntu 为例)
    • 创建或编辑 Docker 的配置文件daemon.json ,如果文件不存在,可以使用以下命令创建:
bash 复制代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://[你的加速器地址].mirror.aliyuncs.com",
        "https://mirror.ccs.tencentyun.com"
    ]
}
EOF
  • 保存文件后,重启 Docker 服务使配置生效:
bash 复制代码
sudo systemctl daemon-reload

sudo systemctl restart docker

配置完成后,可以通过docker info命令查看配置是否生效,在输出信息中,找到 "Registry Mirrors" 字段,如果显示了你添加的镜像加速器地址,说明配置成功。

(二)资源分配调整

在使用 Docker 时,合理调整容器的 CPU、内存和磁盘空间分配非常重要,这可以确保容器在运行时既能获得足够的资源来保证性能,又不会过度占用系统资源影响其他应用程序的运行。

  • CPU 分配
    • 限制核心数:在启动容器时,可以使用--cpus参数来限制容器使用的 CPU 核心数。例如,docker run -it --cpus=2 ubuntu:latest表示启动一个 Ubuntu 容器,并限制其最多使用 2 个 CPU 核心。如果你的服务器是多核 CPU,而某个容器对 CPU 性能要求不高,通过这种方式可以避免它占用过多的 CPU 资源,影响其他对 CPU 敏感的容器。
    • 设置 CPU 份额:除了限制核心数,还可以通过--cpu-shares参数设置 CPU 份额,它表示容器在 CPU 资源竞争时的相对权重。默认情况下,所有容器的 CPU 份额都是 1024,值越高,容器在竞争 CPU 资源时能获得的时间片就越多。例如,有两个容器 A 和 B,容器 A 的--cpu-shares设置为 512,容器 B 的--cpu-shares设置为 1024,那么在 CPU 资源紧张时,容器 B 获得的 CPU 时间大约是容器 A 的 2 倍 。使用示例:docker run -it --cpu-shares=512 ubuntu:latest 。
  • 内存分配
    • 限制内存大小:使用--memory参数可以限制容器使用的内存大小。例如,docker run -it --memory=512m ubuntu:latest表示启动一个 Ubuntu 容器,并限制其最大使用 512MB 的内存。这可以防止某些内存泄漏的容器耗尽服务器的内存资源,导致系统不稳定。
    • 设置内存交换空间:--memory-swap参数用于设置容器的内存和交换空间总和。例如,docker run -it --memory=512m --memory-swap=1g ubuntu:latest表示容器最多可以使用 1GB 的内存(包括 512MB 物理内存和 512MB 交换空间) 。如果不设置--memory-swap,默认情况下,交换空间大小是物理内存的两倍。
  • 磁盘空间分配
    • 使用 --storage-opt 参数:对于支持的存储驱动(如 devicemapper),可以在启动容器时使用--storage-opt size参数来限制容器可用的存储空间。例如,docker run -it --storage-opt size=10G ubuntu:latest表示启动一个 Ubuntu 容器,并限制其磁盘空间为 10GB。
    • 挂载卷时限制大小:当使用数据卷挂载时,也可以通过一些文件系统工具(如xfs_quota、quotaon等)对挂载的卷进行磁盘配额限制,具体方法会因文件系统类型而异。例如,在使用 XFS 文件系统时,可以先启用配额功能,然后为特定用户或组设置磁盘配额。

在实际应用中,需要根据容器中运行的应用程序的性能需求和特点,灵活调整这些资源分配参数。可以通过docker stats命令实时监控容器的资源使用情况,以便及时做出调整。

(三)Docker Compose 安装与使用(可选)

Docker Compose 是 Docker 官方提供的一个用于定义和运行多容器 Docker 应用的工具。它使用 YAML 文件(通常命名为docker-compose.yml)来配置应用的服务、网络和卷等,通过一个简单的命令(如docker-compose up)就可以根据配置文件一次性创建并启动多个容器,这些容器之间可以相互协作,共同构成一个完整的应用系统。

下面介绍在不同系统上安装 Docker Compose 的方法:

  • Windows 系统:如果你使用的是 Docker Desktop for Windows,Docker Compose 已经包含在其中,安装 Docker Desktop 后就可以直接使用。安装完成后,在命令提示符或 PowerShell 中输入docker-compose --version验证是否安装成功,如果显示版本信息,则说明安装成功。
  • Mac 系统:可以使用 Homebrew 进行安装,Homebrew 是 macOS 上常用的包管理工具。打开终端,运行以下命令安装 Docker Compose:
bash 复制代码
brew install docker-compose

安装完成后,同样通过docker-compose --version命令验证安装是否成功。

  • Linux 系统(以 Ubuntu 为例)
    • 下载 Docker Compose 二进制文件,可以从 Docker Compose 的官方 GitHub 仓库下载最新版本的二进制文件。运行以下命令(请根据实际情况替换版本号):
bash 复制代码
sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 赋予执行权限:
bash 复制代码
sudo chmod +x /usr/local/bin/docker-compose
  • 验证安装:
bash 复制代码
docker-compose --version

下面展示一个简单的使用示例,假设我们有一个简单的 Web 应用,由一个 Nginx 服务器和一个 Flask 应用组成,它们需要相互通信。我们可以创建一个docker-compose.yml文件来定义这个多容器应用:

bash 复制代码
version: '3'
services:
  web:
    build:
      context:.
      dockerfile: Dockerfile.flask
    ports:
      - "5000:5000"
    depends_on:
      - nginx
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      -./nginx.conf:/etc/nginx/nginx.conf

在这个示例中:

  • version: '3'指定了 Compose 文件的版本。
  • services部分定义了两个服务:web和nginx。
    • web服务:
      • build部分指定了从当前目录(.)下的Dockerfile.flask构建镜像。
      • ports将容器的 5000 端口映射到主机的 5000 端口。
      • depends_on表示web服务依赖于nginx服务,会先启动nginx服务。
    • nginx服务:
      • 使用nginx:latest镜像。
      • 将容器的 80 端口映射到主机的 80 端口。
      • volumes将主机当前目录下的nginx.conf文件挂载到容器的/etc/nginx/nginx.conf,用于自定义 Nginx 配置。

创建好docker-compose.yml文件后,在该文件所在目录下打开终端,运行docker-compose up命令,Docker Compose 会根据配置文件自动拉取所需镜像、构建镜像(如果需要),并启动两个容器,使它们能够协同工作,构成完整的 Web 应用系统。如果需要在后台运行容器,可以使用docker-compose up -d命令 。通过这种方式,使用 Docker Compose 可以大大简化多容器应用的部署和管理过程。

六、常见问题及解决方法

(一)安装过程中的错误提示及解决

在安装 Docker 的过程中,可能会遇到各种各样的错误提示,下面为大家列举一些常见的错误及对应的解决方法。

  1. 依赖包缺失:在 Linux 系统安装 Docker 时,可能会遇到依赖包缺失的错误。例如,在执行安装命令时,提示apt-get: error: unrecognized option '--allow-unauthenticated' ,这通常是因为系统中缺少apt-transport-https等依赖包。解决方法是按照前文介绍的步骤,使用apt命令安装相应的依赖包,如apt install apt-transport-https ca-certificates curl software-properties-common -y ,确保系统具备安装 Docker 所需的依赖环境。
  2. 网络问题 :安装过程中,网络不稳定或无法访问 Docker 官方源可能导致下载失败。比如,在添加 Docker 官方 GPG 密钥时,执行curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg命令出现curl: (7) Failed to connect to download.docker.com port 443: Connection refused错误 ,这表明无法连接到 Docker 官方网站。此时,可以检查网络连接是否正常,尝试更换网络环境,或者使用代理服务器来解决网络连接问题。另外,也可以尝试使用国内的镜像源来加速下载过程,如前文提到的配置阿里云或腾讯云镜像加速器的方法。
  3. 权限不足:在 Linux 系统中,普通用户没有足够权限直接安装 Docker。如果尝试以普通用户身份执行安装命令,可能会出现类似sudo: apt: command not found或permission denied的错误。解决方法是使用sudo命令获取管理员权限进行安装,或者将普通用户添加到docker组中,具体操作如下:
    • 使用sudo获取权限:在每个安装命令前加上sudo,如sudo apt update、sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y等 。
    • 将用户添加到docker组:执行命令sudo usermod -aG docker $USER ,然后重新登录,使权限设置生效。这样,该用户就可以在不使用sudo的情况下执行 Docker 相关命令。

(二)运行时遇到的问题及排查思路

在 Docker 运行时,也可能会出现各种问题,下面介绍一些常见问题及排查思路和解决方案。

1.容器启动失败:当使用docker run命令启动容器时,容器可能无法正常启动,并出现各种错误提示。

    • 镜像问题:如果提示Error response from daemon: pull access denied for [镜像名], repository does not exist or may require 'docker login' ,表示无法拉取指定的镜像,可能是镜像名错误、镜像仓库中不存在该镜像或者没有登录镜像仓库。解决方法是检查镜像名是否正确,确认镜像是否存在于仓库中,若需要登录仓库,使用docker login命令进行登录。
    • 依赖问题:例如提示OCI runtime create failed: container_linux.go:367: starting container process caused: exec: \"[可执行文件]\": executable file not found in $PATH: unknown ,这说明容器中缺少某个可执行文件,导致容器无法正常启动。解决方法是进入容器(使用docker exec -it [容器ID] /bin/bash命令) ,查看缺少的依赖并手动安装。例如,如果缺少nginx可执行文件,可以使用容器内的包管理工具(如apt-get或yum)进行安装,如apt-get update && apt-get install -y nginx 。
    • 端口冲突 :当启动容器时,如果提示docker: Error response from daemon: driver failed programming external connectivity on endpoint [容器名] (xxx): Bind for 0.0.0.0:80 failed: port is already allocated ,表示容器要映射的端口已被占用。解决方法是检查占用该端口的进程(使用lsof -i:端口号命令查看) ,可以停止占用端口的进程,或者更改容器映射的端口。例如,将容器的 80 端口映射改为 8080 端口,启动命令为docker run -p 8080:80 [镜像名] 。

2.网络连接问题:容器运行时可能出现无法连接到外部网络或容器间无法通信的问题。

    • 容器无法访问外网 :如果容器内的应用程序无法访问外部网络,如执行ping www.baidu.com命令提示ping: www.baidu.com: Name or service not known ,首先检查容器的网络配置是否正确。可以通过docker network inspect bridge命令查看容器所在网络的配置,确保网络配置正确。若网络配置无误,可能是 DNS 配置问题,可以在容器启动时指定 DNS 服务器,如docker run --dns 8.8.8.8 -it [镜像名] ,使用 Google 的公共 DNS 服务器 8.8.8.8。另外,也需要检查主机的防火墙设置,确保没有阻止容器的网络访问。
    • 容器间无法通信:当多个容器需要相互通信但无法连接时,先确认容器是否在同一网络中。可以使用docker network ls命令查看所有网络,使用docker network inspect [网络名]命令查看网络详情,确保相关容器连接到同一网络。如果容器在同一网络仍无法通信,检查容器的 IP 地址和端口映射是否正确,使用docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器名]命令获取容器 IP ,并通过telnet [容器IP] [端口号]或nc -zv [容器IP] [端口号]命令测试连通性。同时,排查防火墙规则或 SELinux 策略是否限制了通信,可以临时关闭防火墙(使用systemctl stop firewalld命令) 或调整 SELinux 策略(如设置为宽松模式setenforce 0) 来测试连通性。若使用自定义网络,确保网络驱动正常工作,尝试重启 Docker 服务(systemctl restart docker) 或重建网络(docker network rm [网络名]后重新创建) 。

七、总结与展望

通过本文的详细介绍,我们深入了解了在 Windows、Mac 和 Linux(以 Ubuntu 为例)系统上安装 Docker 的完整过程,以及安装后的配置与优化方法,还探讨了常见问题的解决思路。在 Windows 系统上,借助 Docker Desktop 并合理配置 Hyper-V 和 WSL 2,能顺利开启 Docker 之旅;Mac 系统则通过简单的下载和拖动操作即可完成安装,后续配置也十分便捷;Linux 系统虽然步骤相对较多,但通过更新系统、安装依赖、添加软件源等一系列操作,也能成功安装并稳定运行 Docker。

Docker 作为容器化技术的杰出代表,为我们的开发和运维工作带来了前所未有的便利。它打破了环境差异的壁垒,实现了应用程序及其依赖的一体化封装,真正做到了 "一次构建,到处运行" 。无论是在开发阶段快速搭建一致的开发环境,还是在运维过程中实现高效的部署、扩展和管理,Docker 都展现出了强大的优势。

希望读者们能够充分利用 Docker 这一强大的工具,将其融入到日常的开发和运维工作中。不断探索 Docker 在更多场景下的应用,如微服务架构的构建、持续集成 / 持续部署(CI/CD)流程的优化等。同时,随着容器化技术的不断发展,Kubernetes 等容器编排工具也日益成熟,建议大家进一步学习和了解,以实现对容器化应用的更高级管理和规模化部署,在数字化时代的技术浪潮中,不断提升自己的技术能力和竞争力。

写在最后:

希望这篇博客能够为你在Docker容器开发和部署项目中提供一些启发和指导。如果你有任何问题或需要进一步的建议,欢迎在评论区留言交流。让我们一起探索IT世界的无限可能!


博主还分享了本文相关文章,请各位大佬批评指正:

1、Intellij idea高效使用教程

2、AI编程工具合集

3、CodeGeeX一款基于大模型全能的智能编程助手

4、Git 代码提交注释管理规范

5、解释 Git 的基本概念和使用方式。

6、postman介绍、安装、使用、功能特点、注意事项

7、Windows10安装Docker Desktop(大妈看了都会)

8、02-pycharm详细安装教程(大妈看了都会)

9、01-Python详细安装教程(大妈看了都会)

10、2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建)