发布时间:2025-03-09 人气:151次
背景介绍
在当今数字化时代,Docker 已经成为众多开发者和运维人员的得力助手。它能够帮助我们快速部署应用、隔离环境,极大地提高了工作效率。无论是大型企业的复杂项目,还是个人开发者的简单应用,Docker 都能轻松应对。通过容器化技术,Docker 让应用的开发、测试和部署变得更加高效和便捷。那么,如何在自己的电脑上安装 Docker 呶?别担心,今天这篇文章将为你详细解读 Docker 的安装过程,让你轻松上手,开启高效开发之旅!
文章目的
本文旨在为初学者提供一份详尽且易于理解的 Docker 安装指南。无论你是刚刚接触 Docker 的新手,还是有一定基础但需要进一步巩固知识的开发者,本文都将为你解决安装过程中可能遇到的各种问题。我们将从不同操作系统的安装步骤入手,逐步深入到安装后的配置和基本使用,确保你在阅读完本文后,能够顺利安装并开始使用 Docker。
系统环境
宿主机系统环境
操作系统版本:Ubuntu 24.04
主机名称:docker
主机IP:10.100.10.2
科学上网
禁用IPv6
准备工作
更新系统
# 更新系统
sudo apt -y update && sudo apt -y upgrade
安装日常常用的排错工具(可选)
日常运维经常会用到的命令,并非必须安装,大家可以根据实际需求进行安装。
# 用于日常运维
sudo apt-get -y install bash-completion net-tools vim iputils-ping curl dnsutils
bash-completion :为 Bash shell 提供智能命令补全功能
net-tools :包含经典网络工具, ifconfig(查看网络配置) ;netstat(网络状态查看)
vim :增强版文本编辑器(替代默认的 vi)
iputils-ping :提供网络诊断工具, ping(测试网络连通性)
curl :强大的 URL 传输工具(支持 HTTP/FTP 等协议)
dnsutils:提供 DNS 查询工具,包括 nslookup(查询 DNS 记录)和 dig(高级 DNS 查询工具)。
修改本地时区
假设你想将时区设置为“Asia/Shanghai”,可以运行以下命令。
# 将时区设置为“Asia/Shanghai”
sudo timedatectl set-timezone Asia/Shanghai
修改主机名
主机名被修改后,必须断开并重新连接才会显示主机名。
# 执行以下命令后,必须重新连接才会显示主机名。
sudo hostnamectl hostname docker
DOCKER安装与配置
官方安装教程:https://docs.docker.com/engine/install/ubuntu/
以 Ubuntu 操作系统为例
操作系统要求
Ubuntu Oracular 24.10
Ubuntu Noble 24.04 (LTS)
Ubuntu Jammy 22.04 (LTS)
Ubuntu Focal 20.04 (LTS)
Ubuntu 的 Docker Engine 与 x86_64(或 amd64)、armhf、arm64、s390x 和 ppc64le(ppc64el)架构兼容。
卸载旧的版本
# 定义要卸载的软件包列表
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
# 使用 sudo 提升权限,调用 apt-get remove 卸载每个软件包,如果想彻底删除,包含配置文件,可调用 apt-get purge 卸载
sudo apt-get remove $pkg;
done
参数详解:
for pkg in:开始一个 for 循环,pkg 是循环变量,用于存储列表中的每个软件包名称。
软件包列表:
docker.io:Ubuntu 官方仓库中的 Docker 软件包。
docker-doc:Docker 的文档包。
docker-compose:Docker Compose 的旧版本软件包。
docker-compose-v2:Docker Compose 的第二个版本软件包。
podman-docker:Podman 的 Docker 兼容包。
containerd:Containerd 容器运行时。
runc:Runc 容器运行时工具。
卸载完成后,一定要使用下面的命令再次查询下是否还有相关软件包存在,如果还有软件包存在,需要再次卸载相关包。
# 查询当前是否还安装有“docker”字符串相关的软件包
dpkg -l | grep docker
Docker安装
方法一:在线安装 Docker Engine
设置 Docker 的apt存储库。
# 更新系统包索引,确保系统中的软件包信息是最新的
sudo apt-get -y update
# 安装必要的包,用于后续的 GPG 密钥管理和网络访问
sudo apt-get -y install ca-certificates curl
# 创建一个目录,用于存放 Docker 的 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
# 下载 Docker 的官方 GPG 密钥,并将其保存到刚才创建的目录中
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 修改 GPG 密钥文件的权限,使其对所有用户可读
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 将 Docker 的官方软件仓库添加到系统的软件源列表中
# 这样就可以通过 apt 包管理器来安装和更新 Docker 了
# 首先,使用 echo 命令将仓库的配置信息写入到一个新的文件中
# 这个文件位于 /etc/apt/sources.list.d/docker.list
# 配置信息包括仓库的地址、架构、签名密钥等
# 其中,$(dpkg --print-architecture) 用于获取当前系统的架构(如 amd64、arm64 等)
# $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") 用于获取当前 Ubuntu 系统的代号(如 focal、jammy 等)
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 再次更新系统包索引,以确保刚刚添加的 Docker 软件仓库中的软件包信息也被加载进来
sudo apt-get update
sudo install 是一个命令行工具,用于在 Linux 系统中安装软件包或文件。它通常与 sudo 一起使用,以确保有足够的权限来执行安装操作。以下是对 sudo install 的详细解释:
基本用法
sudo install [选项]... [源文件]... [目标目录]
常见选项
-m, --mode=模式:设置文件的权限模式。例如,-m 0755 表示设置文件的权限为所有者可读写执行,组用户可读执行,其他用户可读执行。
-d, --directory:如果目标目录不存在,则创建它。
-o, --owner=所有者:设置文件的所有者。
-g, --group=组:设置文件的所属组。
-t, --target-directory=目录:指定目标目录。
-p:保留文件的修改时间和访问时间。
安装 Docker 包
安装最新版本
sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
参数的详细解释:
含义:Docker Compose 插件的简称。Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。
作用:安装 Docker Compose 插件。这个插件允许你通过一个 YAML 文件(通常是 docker-compose.yml)来定义多个容器的配置,包括服务、网络、卷等。然后,你可以使用 docker compose 命令来启动、停止和管理这些容器。这对于开发和部署复杂的应用系统非常方便,尤其是那些由多个微服务组成的应用。通过安装这个插件,你可以更轻松地管理多容器应用的部署和运行,提高开发和运维的效率。
含义:Docker Buildx 插件的简称。Buildx 是 Docker 的一个扩展工具,用于构建多平台 Docker 镜像。
作用:安装 Docker Buildx 插件。这个插件扩展了 Docker 的构建功能,让你能够使用 docker buildx 命令来构建针对不同架构(如 amd64、arm64 等)的 Docker 镜像。这对于开发跨平台应用非常有用,尤其是在需要将应用部署到多种不同硬件平台上的场景中。通过安装这个插件,你可以更灵活地构建和管理多平台的 Docker 镜像,提高开发效率和应用的可移植性。
含义:containerd 是一个开源的容器运行时,由 Docker 公司贡献给云原生计算基金会(CNCF)。
作用:安装 containerd 容器运行时。containerd 是 Docker 的底层容器运行时,负责容器的生命周期管理,包括容器的创建、启动、停止、删除等操作。它是一个轻量级的守护进程,与 Docker 守护进程协同工作,提供了高效、可靠的容器运行环境。安装 containerd.io 包可以确保你使用的是最新版本的 containerd,从而获得更好的性能和稳定性。
含义:Docker Community Edition Command Line Interface(社区版命令行界面)的简称。
作用:安装 Docker 社区版的命令行工具。这个工具提供了与 Docker 守护进程交互的命令行接口,让你可以通过命令行来管理 Docker 容器、镜像、网络等资源。它是操作 Docker 的主要工具,让你能够方便地使用各种 Docker 命令来完成开发和运维任务。
含义:Docker Community Edition(社区版)的简称。这是 Docker 的开源版本,适合个人开发者和小型团队使用,提供了完整的容器化应用开发和运行环境。
作用:安装 Docker 社区版的核心组件,包括容器的创建、管理和运行等功能。它是 Docker 功能的基础部分,让你能够使用 Docker 的基本命令来操作容器,如 docker run、docker build 等。
docker-ce
docker-ce-cli
containerd.io
docker-buildx-plugin
docker-compose-plugin
安装指定版本
要安装特定版本的 Docker Engine,请首先列出存储库中的可用版本
# 查看可用版本
sudo apt-cache madison docker-ce | awk '{ print $3 }'
安装指定版本的 Docker Engine
查看当前的 Docker Engine 版本
方法二:离线安装 Docker Engine
如果您无法使用 Docker 的apt存储库来安装 Docker Engine,您可以下载deb适合您版本的文件并手动安装。每次要升级 Docker Engine 时,都需要下载一个新文件。
查看当前的操作系统版本
lsb_release -a
参数详解:
No LSB modules are available.
LSB:Linux Standard Base 是一个标准化的 Linux 系统规范,旨在确保不同 Linux 发行版之间的兼容性。LSB 模块提供了一组标准化的命令和工具,用于获取系统信息。
解释:这行信息表明你的系统中没有安装 LSB 模块。这并不影响获取操作系统的基本信息,只是意味着你无法使用 LSB 提供的某些高级功能。
含义:LSB(Linux Standard Base)模块不可用。
Distributor ID: Ubuntu
解释:这表明你使用的是 Ubuntu 操作系统。Distributor ID 是一个标识符,用于区分不同的 Linux 发行版。
含义:发行版的 ID。
Description: Ubuntu 24.04.2 LTS
Ubuntu 24.04.2 LTS:这是操作系统的完整描述。
24.04.2:表示这是 Ubuntu 24.04 的第二个小版本更新。版本号通常由主版本号、次版本号和修订号组成。
LTS:表示这是一个长期支持(Long Term Support)版本。LTS 版本通常会提供较长时间的维护和更新支持,适合需要稳定性和长期维护的用户。
含义:操作系统的详细描述。
Release: 24.04
解释:这表示你的 Ubuntu 操作系统的版本号是 24.04。Release 是一个简化的版本号,通常用于标识主要版本和次版本。
含义:操作系统的版本号。
Codename: noble
解释:这表示你的 Ubuntu 操作系统的代号是 noble。Ubuntu 每个版本都有一个代号,通常是一个英文单词,用于方便区分不同的版本。代号通常在开发过程中使用,但在正式发布后也会保留。
含义:操作系统的代号。
在列表中选择您的 Ubuntu 版本。
通过 lsb_release -a 命令查询系统版本得知,当前的系统代号是 noble,则继续选择“noble”目录
image-20250309120610728
转到pool/stable/并选择适用的架构(amd64、 armhf、arm64或s390x)。
查询到当前的操作系统架构为“x86_64”,所有选择“and64”。
image-20250309121223991
# 查询当前的操作系统架构
uname -m
image-20250309120841901
amd64或x86_64:表示这是一个 64 位的 x86 架构。通常对应于常见的 Intel 或 AMD 处理器。
armhf:表示这是一个 32 位的 ARM 架构,适用于一些嵌入式设备。
arm64:表示这是一个 64 位的 ARM 架构,适用于一些高性能的 ARM 设备。
s390x:表示这是一个 64 位的 IBM System z 架构,用于大型机。
deb下载Docker Engine、CLI、containerd 和 Docker Compose 软件包的以下文件:
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
# 登录到当前用户的家目录下
cd ~
# 下载文件并强制覆盖,同时支持断点续传
sudo wget -c -O containerd.io.deb https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/containerd.io_1.7.25-1_amd64.deb
sudo wget -c -O docker-ce.deb https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/docker-ce_28.0.1-1~ubuntu.24.04~noble_amd64.deb
sudo wget -c -O docker-ce-cli.deb https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/docker-ce-cli_28.0.1-1~ubuntu.24.04~noble_amd64.deb
sudo wget -c -O docker-buildx-plugin.deb https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/docker-buildx-plugin_0.21.1-1~ubuntu.24.04~noble_amd64.deb
sudo wget -c -O docker-compose-plugin.deb https://download.docker.com/linux/ubuntu/dists/noble/pool/stable/amd64/docker-compose-plugin_2.33.1-1~ubuntu.24.04~noble_amd64.deb
# 查看当前已经下载的文件详情
sudo ls -lh
image-20250309150629207
安装.deb软件包。将以下示例中的路径更新为您下载 Docker 软件包的位置。
sudo dpkg -i ./containerd.io.deb \
./docker-ce.deb \
./docker-ce-cli.deb \
./docker-buildx-plugin.deb \
./docker-compose-plugin.deb
image-20250309151010015
验证Docker是否安装成功
通过运行镜像来验证安装是否成功hello-world
sudo docker run hello-world
image-20250309115025409
非 Root 用户运行 Docker(可选)
默认情况下,Docker 需要以 root 用户身份运行。如果你希望以非 root 用户运行 Docker,可以将你的用户添加到 Docker 组
# 将当前的用户添加到Docker组
sudo usermod -aG docker $USER
DOCKER 常用命令指南
Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何支持 Docker 的平台上。掌握 Docker 的常用命令是使用 Docker 的基础。本文将详细介绍一些常用的 Docker 命令,帮助您更好地管理和操作 Docker 容器和镜像。
Docker服务管理
启动 Docker 服务
sudo systemctl start docker
停止 Docker 服务
sudo systemctl stop docker
重启 Docker 服务
sudo systemctl restart docker
查看 Docker 服务状态
sudo systemctl status docker
Docker镜像管理
查看本地镜像
查看本地已有的 Docker 镜像:
sudo docker images
拉取镜像
从 Docker Hub 或其他仓库拉取镜像:
sudo docker pull hello-world
导出镜像
将镜像导出为 tar 文件:
sudo docker save hello-world > hello-world.tar
导入镜像
从 tar 文件加载镜像:
sudo docker load < hello-world.tar
删除镜像
删除指定的镜像:
sudo docker rmi hello-world
Docker容器管理
查看所有容器
查看所有正在运行的容器和停止的容器:
sudo docker ps -a
启动容器
启动一个容器:
sudo docker start <容器ID或容器名称>
停止容器
停止一个容器:
sudo docker stop <容器ID或容器名称>
删除容器
删除一个容器:
sudo docker rm <容器ID或容器名称>
运行容器
运行一个新的容器并指定镜像:
sudo docker run -d hello-world
6. 进入容器
进入一个正在运行的容器:
sudo docker exec -it <容器ID或容器名称> /bin/bash
Docker网络管理
查看网络
查看所有 Docker 网络:
sudo docker network ls
创建网络
创建一个新的 Docker 网络:
sudo docker network create my-network
删除网络
删除一个 Docker 网络:
sudo docker network rm my-network
Docker卷管理
查看卷
查看所有 Docker 卷:
sudo docker volume ls
创建卷
创建一个新的 Docker 卷:
sudo docker volume create my-volume
删除卷
删除一个 Docker 卷:
sudo docker volume rm my-volume
Docker日志管理
查看指定容器的日志:
sudo docker logs <容器ID>
Docker系统管理
查看 Docker 信息
查看 Docker 的系统信息:
sudo docker info
清理未使用的资源
清理所有未使用的容器、网络、镜像和卷:
sudo docker system prune -a
DOCKER 镜像导出和导入实例
导出 Docker 镜像
查看本地镜像
在导出镜像之前,您可以查看本地已有的镜像:
sudo docker images
image-20250309155613866
导出镜像为 tar 文件
使用 docker save 命令将镜像导出为一个 tar 文件。例如,将名为 hello-world 的镜像导出为 hello-world.tar 文件:
sudo docker save hello-world > hello-world.tar
docker save:将镜像保存为 tar 文件。
>:将输出重定向到指定的文件。
验证导出的文件
您可以使用 ls 命令查看导出的文件:
sudo ls -lh hello-world.tar
image-20250309160014796
导入 Docker 镜像
将 tar 文件上传到目标机器
将导出的 tar 文件上传到目标机器上。您可以使用 scp 或其他文件传输工具来完成这一步。
导入镜像
使用 docker load 命令将 tar 文件导入为 Docker 镜像。例如,将 hello-world.tar 文件导入为镜像:
# 删除镜像hello-world,不推荐强制删除镜像,推荐先停止容器,在使用 sudo docker rm 删除容器和 sudo docker rmi 删除镜像
sudo docker rmi --force hello-world
# 导入镜像hello-world.tar
sudo docker load < hello-world.tar
docker load:从 tar 文件加载镜像。
<:从指定的文件读取输入。
image-20250309160526595
验证导入的镜像
导入完成后,您可以使用 docker images 命令查看导入的镜像:
sudo docker images
总结
通过上述教程,您可以轻松地管理和操作 Docker 容器和镜像。Docker 提供了丰富的命令来支持各种操作,从镜像管理到容器运行,从网络配置到数据卷管理,这些命令都是 Docker 使用的基础。掌握这些命令将帮助您更高效地使用 Docker。