【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

相关推荐
五阿哥永琪6 小时前
Nginx入门教学+实战
运维·nginx
AI服务老曹7 小时前
基于Docker的低代码AI视频管理平台架构解析:打通GB28181/RTSP多协议,支持异构边缘计算与全源码交付
人工智能·低代码·docker
小快说网安7 小时前
云服务器抗 DDoS 只靠基础防护够吗?
运维·服务器·ddos
怎么没有名字注册了啊7 小时前
fedora 换源教程
linux·运维·服务器
codefan※7 小时前
一键部署私人 LLM:Ollama + Docker 极简指南
运维·docker·容器·大模型·llm·本地部署·ollama
爱莉希雅&&&7 小时前
Zabbix监控linux服务器和Windows服务器
linux·运维·服务器·zabbix·监控
小小测试开发7 小时前
加州拟将 Linux 从年龄验证法中豁免:一场开源社区的胜利与反思
linux·运维·开源
Sisphusssss8 小时前
Ubuntu 装英伟达显卡驱动
linux·运维·ubuntu
TechMasterPlus8 小时前
浏览器自动化实战:从 Playwright 录制回放到智能浏览器自动化技术解析
运维·自动化