Docker 安装和配置
Docker 安装和配置
docker 介绍
Docker 是一个开源的容器化平台,可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。Docker 的主要目标是通过容器化技术实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部署过程。
容器化是一种虚拟化技术,它通过在操作系统层面隔离应用程序和其依赖的运行环境,使得应用程序可以在一个独立的、封闭的环境中运行,而不受底层操作系统和硬件的影响。
与传统的虚拟机相比,容器化具有以下优势:
- 轻量级: 容器与宿主机共享操作系统内核,因此容器本身非常轻量级,启动和停止速度快,资源占用少。
- 可移植性: 容器可以在任何支持相应容器运行时的系统上运行,无需关注底层操作系统的差异,提供了高度的可移植性。
- 快速部署: 容器化应用程序可以通过简单的操作进行打包、分发和部署,减少了部署过程的复杂性和时间成本。
- 弹性扩展: 可以根据应用程序的需求快速创建、启动和停止容器实例,实现应用程序的弹性扩展和负载均衡。
- 环境隔离: 每个容器都具有独立的运行环境,容器之间相互隔离,不会相互干扰,提供了更好的安全性和稳定性。
容器和虚拟机的区别
虚拟机 虚拟化的是整个硬件+操作系统,而 容器 虚拟化的是应用程序及其运行环境。
举个例子:
虚拟机:就像用一艘巨大的货轮。每艘货轮都有自己的巨大船体(Hypervisor)、引擎、船员宿舍和甲板(完整的 Guest OS)。你要运一台小汽车(App),就得为它单独开一艘这样的巨轮。虽然安全隔离性极好,但非常笨重、启动慢、资源消耗大。
优点 :隔离彻底,可以运行任何类型的操作系统(比如在 Mac 上运行 Windows)。
缺点:笨重、资源占用高、启动慢。
容器 :就像用一艘高效的集装箱船。这艘船只有一个共享的船体(Host OS),但船上有无数个标准化的集装箱(容器)。每个集装箱里只装运小汽车(App)和它必需的零件(依赖库、环境变量等)。所有集装箱共享船的引擎和船员,但彼此之间又是隔离的。
优点:轻量、快速、资源利用率高、易于迁移和扩展。
缺点:所有容器必须与主机运行相同类型的内核(比如都是 Linux)。
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 架构图 | 主机 OS -> Docker 引擎 -> 不同的应用 | 主机 OS -> Hypervisor -> 完整 Guest OS -> 不同的应用 |
| 虚拟化级别 | 操作系统级 虚拟化 | 硬件级 虚拟化 |
| 隔离单位 | 隔离的是 进程 (应用) | 隔离的是 整个操作系统 |
| Guest OS | 不需要 独立的 Guest OS,所有容器 共享主机 OS 内核 | 每个 VM 都需要一个完整的 Guest OS |
| 性能 | 近乎原生 的性能,几乎没有额外开销。启动速度是 秒级。 | 性能有 额外损耗(需要通过 Hypervisor 模拟硬件)。启动速度是 分钟级 |
| 磁盘空间 | 很小(MB 级别),只包含应用和其依赖。 | 很大(GB 级别),包括整个 OS 的文件。 |
| 系统资源 | 占用少,多个容器可共享资源,无重复消耗。 | 占用多,每个 VM 都需分配独立的 RAM、CPU 资源。 |
| 隔离性 | 进程级别隔离,通过 Namespace 和 Cgroups 实现,安全性较弱。 | 完全隔离,VM 之间互不影响,安全性更强。 |
| 可移植性 | 极强,镜像包含了应用运行所需的一切,保证了环境一致性。 | 较强,但镜像庞大,迁移速度慢。 |
| 部署速度 | 极快(秒级) | 慢(分钟级) |
| 典型应用场景 | 微服务架构、CI/CD 自动化流水线、高密度部署、 环境标准化(开发、测试、生产) | 需要运行 不同操作系统 的应用 、对 安全隔离性 要求极高的场景、传统的单体应用 |
提示
选择 Docker(容器):当你追求效率、密度、快速扩展和现代化 CI/CD 时。例如,构建微服务、Web 应用、以及需要快速迭代和部署的任何场景。它是云原生应用的首选
选择虚拟机(VM):当你需要运行不同的操作系统,或者应用程序需要绝对强制的安全边界时。例如,在同一个物理服务器上为两个竞争公司托管服务,或者运行一个只有 Windows 版本的遗留应用
docker 安装
Linux(yum/apt) 安装
# 查看内核版本
uname -r
# 更新 yum 源
yum -y update
# 删除旧版本
sudo yum remove -y docker*
# 安装依赖包
yum install -y yum-utils
# 设置 docker 官方yum 源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# 查看可安装的版本。选择 对应的版本 安装
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-3:24.0.2-1.el7.x86_64 # 这是指定版本安装
# 启动 docker 并设置开机启动
systemctl start docker && systemctl enable docker
# 测试Docker 查看版本
docker version
#安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc
#安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
#添加 Docker 官方 GPG key (可能国内现在访问会存在问题)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#添加 apt 源:
#Docker官方源
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
#阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#更新源
sudo apt update
sudo apt-get update
#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成
#查看Docker版本
sudo docker version
#查看Docker运行状态
sudo systemctl status docker
# 安装Docker 命令自动补全
sudo apt-get install bash-completion
sudo curl -L https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
source /etc/bash_completion.d/docker.sh
# 创建docker用户组,可以每次使用Docker时不用输入sudo
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
#测试 查看所有容器
docker ps -a
#需要编辑 ~/.bashrc文件,并在文件末尾增加如下一行,如果不在.bashrc文件中增加下面这一行命令
#如果没有此行命令,当你每次打开新的终端,都必须先执行一次 “newgrp docker” 命令
#否则当前用户还是不可以执行docker命令
groupadd -f docker
Windows(desktop)
- 检查系统
在开始之前,请确保您的 Windows 10 或 Windows 11 系统满足以下硬性要求:
Windows 版本:
Windows 10:必须是 64 位版本,版本号 2004(Build 19041)或更高。
Windows 11:64 位家庭版或专业版。
Windows Server:2019 或更高版本。
启用虚拟化:必须在 BIOS/UEFI 中开启 CPU 的虚拟化支持(通常叫 Intel VT-x 或 AMD-V)。
启用 WSL 2 功能:Docker Desktop 现在优先使用 WSL 2 作为后端,性能远优于传统的 Hyper-V。
硬件:至少 4GB 内存。
如何检查虚拟化是否已开启?
打开 “任务管理器” (Ctrl+Shift+Esc) -> 切换到“性能”选项卡 -> 查看“CPU”部分 ,如果“虚拟化”显示为“已启用”,则说明已开启。如果未开启,您需要重启电脑进入 BIOS 进行设置(不同主板设置方法不同,请搜索您的电脑型号如何开启虚拟化)。
- 安装 WSL 2 功能
以管理员身份打开 PowerShell(在开始菜单右键点击 PowerShell,选择“以管理员身份运行”)。
输入以下命令并回车,这将安装 WSL 2 所需的虚拟机平台和 Linux 内核更新:
wsl --install # 这个命令通常会默认安装 Ubuntu。如果执行成功,它会提示你重启电脑。如果上述命令不适用,或者你想手动安装,可以分别执行:
# 启用“适用于 Linux 的 Windows 子系统”可选功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用“虚拟机平台”可选功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启计算机后,再次打开 PowerShell,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
- 下载和安装 Docker Desktop
访问 Docker Desktop 安装页面,下载适用于 Windows 的 Docker Desktop 安装程序。
双击运行下载好的 Docker Desktop Installer.exe
- 安装过程中,会提示你是否使用 WSL2 而不是
Hyper-V。请务必勾选这个选项,这是性能最好的方式。
- 安装过程中,会提示你是否使用 WSL2 而不是
- 测试 Docker
- 打开 命令提示符(CMD) 或 PowerShell,执行
docker --version查看版本 - 测试镜像下载, 输入
docker run hello-world
提示
windows 也可以直接使用 WSL2 安装非桌面的 Docker Engine, 直接把 WSL2 当成 Linux 系统来使用。
docker 换源
Linux 系统换源
- 创建
/etc/docker/daemon.json文件 - 命令直接添加
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
window 系统换源
- 确保 Docker Desktop 正在运行
- 确认任务栏右下角有 Docker 的鲸鱼图标 🐳。如果它没有运行,请从开始菜单启动它。
- 打开设置
右键点击任务栏的 Docker 鲸鱼图标。
在弹出的菜单中选择 Settings(设置)。
- 找到 Docker Engine 配置
在设置窗口的左侧导航栏中,点击 Docker Engine。
右侧会显示一个 JSON 格式的配置编辑器。
- 修改配置,添加 registry-mirrors 项
在现有的 JSON 配置中找到 "registry-mirrors": [] 这一行。如果不存在,就在 "builder" 或 "features" 等配置项的同一层级手动添加它。
将您想要的镜像加速器地址填入数组 [] 中。
- 应用并重启
点击配置编辑器右上角的 Apply & restart 按钮。
Docker Desktop 会自动保存配置并重启服务以使更改生效。这需要一点时间。
- 验证镜像加速
重启完成后,打开 PowerShell 或 CMD,输入以下命令:
docker info在输出信息中,找到 Registry Mirrors 部分,如果能看到你刚才设置的镜像地址列表,就说明配置成功了。