如何在 Ubuntu 22.04 中安装 Docker 引擎和 Linux 版 Docker Desktop 桌面软件

以下是在 Ubuntu 22.04 中安装 Docker 引擎和 Linux 版 Docker Desktop 桌面软件的完整步骤:

一、安装 Docker 引擎

1. 更新系统并安装依赖
bash 复制代码
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
2. 添加 Docker 官方 GPG 密钥
python 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
3. 配置 Docker APT 仓库
python 复制代码
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/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
4. 安装 Docker 引擎及工具
python 复制代码
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
5. 验证 Docker 安装
python 复制代码
sudo systemctl status docker  # 检查服务状态

在ubuntu系统中如何将docker安装在指定目录

在 Ubuntu 系统中,Docker 默认安装路径(程序文件)通常在/usr/bin等系统目录,而核心数据(镜像、容器、卷等)默认存储在/var/lib/docker。若需将数据目录指定到其他位置(这是更常见的需求,因为程序文件通常无需修改路径),可按以下步骤操作:

方法:修改 Docker 数据存储目录(推荐)

1. 停止 Docker 服务

首先确保 Docker 服务处于停止状态:

python 复制代码
sudo systemctl stop docker
sudo systemctl stop docker.socket  # 如果上一步有提示就需要停止socket
2. 创建目标目录

在指定位置创建 Docker 数据目录(例如/home/用户名/soft/dockerdata),并确保权限正确:

python 复制代码
sudo mkdir -p /home/用户名/soft/dockerdata # 替换为你的目标路径
sudo chmod 711 /home/用户名/soft/dockerdata # Docker需要该权限
3. 迁移现有数据(如果已有镜像 / 容器)

若之前已有 Docker 数据,需将默认目录的内容迁移到新目录:

python 复制代码
sudo rsync -avx /var/lib/docker/ /home/用户名/soft/dockerdata
4. 配置 Docker 数据目录

通过daemon.json配置文件指定新的数据目录(推荐这种方式,避免修改 systemd 服务文件):

python 复制代码
sudo mkdir -p /etc/docker  # 确保配置目录存在
sudo tee /etc/docker/daemon.json <<EOF
{
  "data-root": "/data/docker"
}
EOF
5. 重启 Docker 服务并验证
python 复制代码
# 重新加载配置并启动Docker
sudo systemctl daemon-reload
sudo systemctl start docker

# 验证数据目录是否生效
sudo docker info | grep "Docker Root Dir"

若输出显示为你指定的/data/docker,则配置成功。

补充说明:

  • 程序文件路径 :Docker 的可执行文件(如dockerdockerd)默认安装在/usr/bin,一般无需修改(也不建议修改,可能导致依赖问题)。
  • 注意事项
    • 目标目录所在的分区需有足够空间(存储镜像、容器等)。
    • 若使用systemd管理 Docker,修改daemon.json是最安全的方式,避免直接编辑/lib/systemd/system/docker.service(可能被系统更新覆盖)。
    • 若无需保留原有数据,可跳过步骤 3(迁移数据),但新目录会是空的,原有镜像 / 容器需重新拉取或创建。

通过以上步骤,即可将 Docker 的核心数据存储到指定目录,解决默认路径空间不足的问题。

测试容器运行:

首先配置国内 Docker 镜像加速器,步骤如下:

1. 配置国内镜像加速器

推荐使用阿里云、网易云等国内镜像源,以阿里云为例:

python 复制代码
# 创建/修改Docker配置文件
sudo mkdir -p /etc/docker

进入/etc/docker目录,使用下面命令填加国内镜像源:

python 复制代码
sudo nano daemon.json
python 复制代码
  "registry-mirrors": [
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://your_preferred_mirror",
    "https://dockerhub.icu",
    "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"
  ]

注意前面文件以前的内容要用逗号","隔离,否则不符合JSON格式会报错,最后使用ctrl+o,回车保存,再使用ctrl+x退出。

使用以下命令查看:

python 复制代码
sudo cat daemon.json
  1. 重启 Docker 服务
python 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 运行 hello-world

python 复制代码
sudo docker run hello-world

此时 Docker 会通过国内镜像源拉取镜像,应该能成功运行并显示 "Hello from Docker!" 的验证信息。

二、安装 Docker Desktop 桌面版

1. 下载最新 Docker Desktop DEB 包

访问 Docker 官网下载页面,选择 Linux (DEB) 版本,复制下载链接后执行:

python 复制代码
wget https://desktop.docker.com/linux/main/amd64/docker-desktop-4.26.1-amd64.deb  # 替换为实际下载链接

首先进入 .deb 文件所在目录(默认在 ~//home/szsy/),调整文件权限:

bash 复制代码
# 进入文件所在目录(若文件在其他路径,替换为实际路径,如 ~/Downloads)
cd /home/szsy

# 查看当前文件权限(确认所有者是 szsy,其他用户无读取权限)
ls -l docker-desktop-amd64.deb

# 给所有用户添加"读取权限"(让 _apt 能正常读取文件,消除警告)
sudo chmod o+r docker-desktop-amd64.deb
  • 权限调整后,再次查看权限会显示类似 rw-r--r--(最后一个 r 表示其他用户有读取权限),_apt 即可正常访问。
2. 安装依赖(可选)

若安装时提示缺少图形依赖,需补充安装:

bash 复制代码
sudo apt install libgl1-mesa-glx -y
3. 安装 Docker Desktop
bash 复制代码
sudo apt install ./docker-desktop-*.deb
4. 启动 Docker Desktop
python 复制代码
# 启动服务(首次启动需等待 3-5 分钟初始化)
systemctl --user start docker-desktop

# 启用开机自启
systemctl --user enable docker-desktop
5. 首次运行配置
  • 在应用程序菜单中搜索 Docker Desktop 并打开。
  • 接受 Docker 订阅服务协议,等待初始化完成。
  • 登录 Docker Hub 账户(可选)。

三、配置用户权限

1. 将当前用户加入 docker 组
python 复制代码
sudo usermod -aG docker $USER
newgrp docker  # 立即生效权限
2. 验证权限
python 复制代码
docker ps  # 无需 sudo 即可执行

四、常见问题处理

  1. 启动失败

    • 检查日志:journalctl --user -u docker-desktop
    • 确保虚拟化已启用:lsmod | grep kvm(若未加载,执行 sudo modprobe kvm_intelkvm_amd
  2. 图形界面异常

    • 安装图形依赖:sudo apt install libgl1-mesa-glx -y
  3. 权限问题

    • 重新加入 docker 组:sudo usermod -aG docker $USER
    • 重启 Docker 服务:sudo systemctl restart docker

五、注意事项

  1. 资源限制

    Docker Desktop 默认分配 2GB 内存和 2 核 CPU,可在 Settings > Resources 中调整。

  2. 版本兼容性

    • 确保 Docker Desktop 版本与 Docker 引擎兼容(通常自动处理)。
    • 若需 GPU 支持,需额外配置 NVIDIA 容器工具包(参考 NVIDIA 文档)。
  3. 卸载方法

    • 卸载 Docker Desktop:sudo apt purge docker-desktop
    • 卸载 Docker 引擎:sudo apt purge docker-ce docker-ce-cli containerd.io

通过以上步骤,即可在 Ubuntu 22.04 上完整安装 Docker 引擎和图形化管理工具 Docker Desktop,实现容器的高效开发与管理。

Docker 引擎(系统级服务)的开机自启

Docker 引擎是容器运行的核心服务,需通过系统级服务管理工具 systemctl 配置:

1. 启用 Docker 引擎自动启动
bash 复制代码
sudo systemctl enable docker
  • 原理 :该命令会在 /etc/systemd/system/multi-user.target.wants/ 目录下创建 docker.service 的符号链接,确保系统启动时自动加载服务。

  • 验证

    python 复制代码
    sudo systemctl is-enabled docker  # 应显示 enabled
2. 启动 Docker 引擎(立即生效)
python 复制代码
sudo systemctl start docker
3. 检查服务状态
bash 复制代码
sudo systemctl status docker
  • 若输出包含 Active: active (running),表示服务已正常启动。
相关推荐
胖头鱼的鱼缸(尹海文)2 小时前
数据库管理-第386期 使用OCP部署OceanBase 4.4.1社区版集群(20251107)
数据库·oceanbase
Craaaayon2 小时前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
一 乐2 小时前
点餐|智能点餐系统|基于java+ Springboot的动端的点餐系统小程序(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序·论文
Maple_land2 小时前
Linux复习:系统调用与fork
linux·运维·服务器·c++·centos
996终结者2 小时前
Docker核心用途实战:彻底解决环境一致性问题
运维·docker·容器
WarriorTan2 小时前
理解PostgreSQL中的数据块
数据库·postgresql
学好statistics和DS2 小时前
三个好思路:SQL并行化处理、混淆矩阵和特征交叉
数据库·sql·矩阵
无聊的小坏坏2 小时前
Poll 服务器实战教学:从 Select 迁移到更高效的多路复用
linux·服务器·poll·io多路复用
小晶晶京京2 小时前
day61-devops
运维·devops