【Docker】Ubuntu22.04 安装 Docker 教程

文章目录

  • [1. 操作系统版本](#1. 操作系统版本)
  • [2. 确定 CPU 架构](#2. 确定 CPU 架构)
  • [3. 确定操作系统版本](#3. 确定操作系统版本)
  • [4. 卸载旧版本](#4. 卸载旧版本)
  • [5. 卸载历史版本](#5. 卸载历史版本)
  • [6. 配置 docker 下载源](#6. 配置 docker 下载源)
  • [7. 安装 docker](#7. 安装 docker)
  • [8. 自动启动配置](#8. 自动启动配置)
  • [9. 检查安装结果查看版本](#9. 检查安装结果查看版本)
  • [10. 配置 docker 镜像加速器](#10. 配置 docker 镜像加速器)
  • [11. 执行 hello-world](#11. 执行 hello-world)
  • [12. docker 目录修改(超级重要)](#12. docker 目录修改(超级重要))

1. 操作系统版本

目前支持以下的版本

复制代码
Ubuntu Kinetic 22.10
Ubuntu Jammy 22.04(LTS)
Ubuntu Focal 20.04(LTS)
Ubuntu Bionic 18.04(LTS)

CPU 支持

复制代码
ARM 和 X86_64

2. 确定 CPU 架构

使用下面命令查看版本

bash 复制代码
uname -a

可以看到我们的是 X86_64,是支持的,如果是 ARM 一般会显示 aarch64

3. 确定操作系统版本

命令如下:

bash 复制代码
cat /etc/*release*

本次我使用的是 Ubuntu 22.04

4. 卸载旧版本

卸载命令

bash 复制代码
sudo apt-get remove docker docker-engine

如果是新购买的云服务器是没有的,比如输入 docker 并没有这个命令,就不需要卸载

5. 卸载历史版本

卸载软件

shell 复制代码
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y

删除目录

shell 复制代码
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

6. 配置 docker 下载源

安装 curl 命令

shell 复制代码
sudo apt install curl -y

如下所示:

创建 gpg key 目录

shell 复制代码
sudo mkdir -m 0755 -p /etc/apt/keyrings

下载阿里云 Docker 源

shell 复制代码
# 推荐使用阿里云 GPG(绕过 docker 官方)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker 官方源容易连不上(TLS 握手失败)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg

然后写入源

shell 复制代码
# 同样这里推荐阿里云的源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list


# 下面是docker官方的操作(容易失败)
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

最后再更新一下源

bash 复制代码
sudo apt-get update

如下所示,说明已经彻底绕开 Docker 官方源了

7. 安装 docker

执行下面命令

shell 复制代码
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

它会:

  • 自动拉取依赖
  • 安装 Docker Engine
  • 安装 CLI、containerd、buildx、compose 插件

如下所示,出现这个页面直接按键盘 ESC 退出即可

此时就安装成功了

8. 自动启动配置

重新加载 systemd 配置(可有可无,但安全)

shell 复制代码
sudo systemctl daemon-reload

启动 Docker

shell 复制代码
sudo systemctl start docker

设置开机自启

shell 复制代码
sudo systemctl enable docker

查看服务状态

shell 复制代码
sudo systemctl status docker

如下所示:

9. 检查安装结果查看版本

执行下面命令

shell 复制代码
docker version

如下所示:

10. 配置 docker 镜像加速器

登录你的阿里云控制台,访问 器镜像服务,找到【镜像加速器】。

然后复制你专属的加速地址

创建配置文件

shell 复制代码
# 创建目录
mkdir -p /etc/docker

# 编辑文本
vim /etc/docker/daemon.json

写入内容

shell 复制代码
{
  "registry-mirrors": [
    "https://你的阿里云专属加速ID.mirror.aliyuncs.com"
  ]
}

重新启动

shell 复制代码
sudo systemctl daemon-reload

sudo systemctl restart docker

如下所示:

使用 docker info 命令查看镜像

11. 执行 hello-world

命令如下

shell 复制代码
docker run hello-world

可以看到 Hello from Docker,表示 docker 服务正常

12. docker 目录修改(超级重要)

Docker 默认的安装目录为 /var/lib/docker,这里面会存放很多很多镜像,所以我们在安装的时候需要考虑这个目录的空间,有三种解决方案。

  • 1、将 /var/lib/docker 挂载到一个大的磁盘,这种一般我们能控制挂载目录,像腾讯云这种云厂商在安装 K8s 的节点的时候提供了挂载选项,可以直接挂载这个目录过去。
  • 2、安装之前挂载一个大的磁盘,然后创建一个软链接到 /var/lib/docker,这样就自动安装到我们空间比较大的磁盘了。
  • 3、安装了 docker,然后发现忘了配置这个目录,我们需要修改 docker 的配置文件。

停止 Docker(避免数据损坏)

shell 复制代码
sudo systemctl stop docker

创建新数据目录

shell 复制代码
# 假定我们磁盘的大的目录为 /data
sudo mkdir -p /data/var/lib/docker

修改配置(注意是 "合并")

shell 复制代码
sudo vim /etc/docker/daemon.json

填入:

json 复制代码
{
  "data-root": "/data/var/lib/docker",
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://hub-mirror.c.163.com",
    "https://docker.m.daocloud.io",
    "https://dockerhub.timeweb.cloud",
    "https://huecker.io"
  ]
}

迁移旧数据(重要)

shell 复制代码
sudo rsync -avz /var/lib/docker/ /data/var/lib/docker/

加载配置重启 Docker

shell 复制代码
# 加载配置
sudo systemctl daemon-reload

# 重启 docker
sudo systemctl restart docker

#查看 docker 状态
sudo systemctl status docker

验证是否生效

shell 复制代码
docker info | grep "Docker Root Dir"

正确输出应该是:Docker Root Dir: /data/var/lib/docker

相关推荐
一个天蝎座 白勺 程序猿2 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS6 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希1237 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾8 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
闲云自留地13 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达13 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落16 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng16 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮17 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹17 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器