Linux系统下Docker安装

Linux系统下Docker安装

1. 根据docker官方文档在安装Docker Engine之前需要先卸载旧版本,若无旧版本此步可跳过

python 复制代码
执行此命令卸载冲突软件包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

2. 设置Docker存储库

python 复制代码
# Add Docker's official GPG key:

# 更新本地的包索引,确保系统能够获取最新的软件包信息
sudo apt-get update

# ca-certificates 提供 CA(证书颁发机构)证书,用于验证 HTTPS 连接的安全性;curl 一个命令行工具,用于从 URL 下载文件
sudo apt-get install ca-certificates curl

# 创建 `/etc/apt/keyrings` 目录,并设置权限为 `0755`(即所有用户可读可执行,但只有 root 用户可写)
sudo install -m 0755 -d /etc/apt/keyrings

# 使用 `curl` 命令从 Docker 的官方服务器下载 GPG 公钥,并保存到 `/etc/apt/keyrings/docker.asc` 文件中
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

# 将 `/etc/apt/keyrings/docker.asc` 文件的权限设置为全局可读(`a+r` 表示所有用户都有读权限)
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
# 将 Docker 的官方存储库添加到 APT 的源列表中
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
sudo apt-get update
  • deb [...]

    • deb:声明这是一个二进制软件包的存储库。
    • [arch=...]:指定当前系统的架构(如 amd64arm64 等),通过 dpkg --print-architecture 动态获取。
    • signed-by=/etc/apt/keyrings/docker.asc:指定使用哪个 GPG 密钥来验证存储库的签名。
    • https://download.docker.com/linux/ubuntu:Docker 官方存储库的 URL。
    • ${UBUNTU_CODENAME:-$VERSION_CODENAME}:动态获取当前 Ubuntu 版本的代号(如 focal 对应 Ubuntu 20.04)。
    • stable:指定使用稳定版本的存储库。
  • tee

    • 将输出写入文件 /etc/apt/sources.list.d/docker.list,同时丢弃终端输出(> /dev/null

其中Docker源推荐更改为国内源,常见的国内源如下:

arduino 复制代码
阿里云
https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
清华大学
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu focal stable

若已经执行了上述命令,可在/etc/apt/sources.list.d/docker.list中更改源地址 修改后需执行sudo apt-get update更新APT包索引

3.安装Docker软件包

安装最新命令如下:

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

安装特定版本

ini 复制代码
# 列出存储库中可用版本
# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'

5:28.0.4-1~ubuntu.24.04~noble
5:28.0.3-1~ubuntu.24.04~noble

# 选择版本安装

VERSION_STRING=5:28.0.4-1~ubuntu.24.04~noble
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

4.启动Docker

sql 复制代码
sudo systemctl start docker

5.运行命令查看是否成功

arduino 复制代码
sudo docker run hello-world

运行时若出现下列报错:

arduino 复制代码
Unable to find image 'hello-word:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) Run 'docker run --help' for more information

第一次运行该镜像,Docker 会尝试从远程仓库(默认是 Docker Hub)拉取镜像

因为默认不是国内源,访问会受限,需更改为国内源

在文件/etc/docker/daemon.json中添加如下代码:

json 复制代码
{
  "registry-mirrors": [
    "https://docker.1ms.run"
    "https://hub-mirror.c.163.com",         // 网易镜像
    "https://mirror.baidubce.com",        // 百度云镜像
    "https://<your-mirror-url>.mirror.aliyuncs.com" // 阿里云镜像(需替换为你的专属地址)
  ]
}

以上镜像或许不可用,网页搜索可用镜像

更改镜像源之后运行命令重启docker以生效

复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

备注:

ruby 复制代码
系统环境:ubuntu 22.04 LTS

Docker官网文档地址:https://docs.docker.com

Docker ubuntu安装文档地址:https://docs.docker.com/engine/install/ubuntu/
相关推荐
学烹饪的小胡桃9 分钟前
资产设备管理系统 WGFIX 怎么设置https访问
linux·运维·服务器·网络·安全
一技安身18 分钟前
【信创】银河麒麟V10(ARM64,无GPU纯CPU)内网隔离离线部署Deepseek+openWebUI完整方案
docker
邪修king1 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
高亦真1 小时前
今天是学习嵌入式的第38天
linux·学习·算法
DYWorker0011 小时前
Linux驱动子系统:中断子系统 —— Consumer和Provider(005)
linux·驱动开发
草莓熊Lotso1 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
AI视觉网奇1 小时前
docker 迁移
docker
程序员老赵1 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
前端·docker·开源
ShineWinsu2 小时前
对于Git:远程操作的超详细保姆级解析
linux·git·gitee·github·远程仓库·分布式版本控制系统·远程操作
小张成长计划..2 小时前
【Linux】21:进程间通信
linux