ubuntu 安装 docker 记录

devtools/2024/11/29 2:07:09/
本文假设系统为 Ubuntu,从 16.04 到 24.04,且通过 APT 命令安装。理论上也其他 Debian 系的操作系统。
WSL 也一样。

感觉 Docker 官方在强推 Docker Desktop,搜索 Docker 安装文档,一不小心就被导航到了 Docker Desktop 的安装页面。如果只是想安装 Docker-CE Server,文档在 https://docs.docker.com/engine/install/#server。

官方文档给出了几种安装方式,我最喜欢的是通过 APT 仓库安装,可以像管理系统上的其他软件包一样用 apt installapt upgradeapt remove 进行管理。但直接用 Docker 官方的 APT 仓库可能会下载很慢,幸好国内有镜像源。

安装

step 0. 安装设置仓库必须的工具

这些工具一般系统上都有,但还是确认一下比较好。

Ubuntu 16.04

sudo apt-get update && sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

Ubuntu 18.04 及以上

sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

20.04以上快捷安装 sudo apt install docker.io 也是可行的

step 1. 添加阿里的 Docker 镜像仓库证书

Ubuntu 20.04 及以下

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

Ubuntu 22.04、24.04

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/aliyun-docker.gpg
如果 Ubuntu 22.04 还用  apt-key add 的方式添加证书在同步仓库信息时会有以下 warning:
Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

step 2. 添加仓库

Ubuntu 16.04

sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Ubuntu 18.04 、20.04

sudo apt-add-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Ubuntu 22.04、24.04

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/aliyun-docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

step 3. 安装

安装最新版的 docker-ce。

Ubuntu 16.04

sudo apt-get update
sudo apt-get install -y docker-ce

Ubuntu 18.04 及以上

sudo apt update
sudo apt install -y docker-ce

step 4. 启动

未开启 systemd 的 WSL 发行版

在 WSL 上,如果未开启 systemd,docker 不会自启动,每次都需要手动执行下面的命令。

sudo service docker start

其他系统

安装完就自己启动了,不需要任何操作。

step 5. 验证

sudo docker info

应该能看到当前安装的 Docker 信息。

基本配置

将当前用户添加到 docker 用户组

每次都用 sudo 执行 docker 命令也太麻烦了,可以将当前用户添加到 docker 用户组,以后就不需要 sudo 了。

sudo usermod -aG docker $USER
newgrp docker

如果报错说不存在 docker group,就先用下面的命令创建 docker group,然后再执行上面添加用户到组的命令。

sudo groupadd docker

配置 ustc 的 docker hub 镜像

国内的 docker hub 镜像都下架了。本段失效

执行 docker image pull 时默认会去 https://hub.docker.com/ 拖镜像,但网速可能会比较慢。可以配置国内的第三方 registry,他们会缓存用户拖过的镜像,下载会快很多。

在 /etc/docker/daemon.json 加入如下配置。

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

ustc 的这个 registry 是我知道的唯一不需要申请账户的。如果你有其他 registry,也可以添加到上面的列表中。

不管在这个文件中写入了什么配置,都不会自动生效,一般都得重启。

Ubuntu 18.04 及以上

一般 ubuntu 系统都是使用 systemd 启动 docker,要执行下面的指令才能让上面的配置生效:
 

 sudo systemctl daemon-reload

 sudo systemctl restart docker

Ubuntu 16.04 或未开启 systemd 的 WSL

重启 docker 就行。

sudo service docker restart

20241125 目前可用docker镜像源


#镜像地址
{"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com/","https://ccr.ccs.tencentyun.com/","https://docker.m.daocloud.io/"]
}#修改后要重启

参考

  • Install Docker Engine on Ubuntu | Docker Documentation
  • docker-ce镜像_docker-ce下载地址_docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)
  • 【Docker】在 Ubuntu 上安装 Docker 的详细指南_ubuntu安装docker-CSDN博客

http://www.ppmy.cn/devtools/137804.html

相关文章

什么是 C++ 中的函数对象?它有什么特点?函数对象与普通函数有什么区别? 如何定义和使用函数对象?

1)什么是 C 中的函数对象?它有什么特点? 在 C中,函数对象(也称为函数符或仿函数)是一个可以像函数一样被调用的对象。 函数对象是指该对象具备函数的行为函数对象,是通过()调用操作符声明得到的,然后便能通…

手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案

手机实时提取SIM卡打电话的信令声音 --智能拨号器app的双SIM卡切换方案 一、前言 在蓝牙电话的方案中,由于采用市场上的存量手机来做为通讯呼叫的载体,而现在市面上大部分的手机都是“双卡双待单通”手机,简称双卡双待手机。即在手机开机后…

在 Spring Boot 中构造 API 响应的最佳实践

在平时的开发和项目中,我们一定会涉及到接口对接的功能,由于不同开发人员的编码习惯不同,API报文在项目中通常是"百花齐放"的。 不但增加工作难度,往往也是扯皮的大头,如果能统一报文格式,不但能…

深入浅出剖析典型文生图产品Midjourney

2022年7月,一个小团队推出了公测的 Midjourney,打破了 AIGC 领域的大厂垄断。作为一个精调生成模型,以聊天机器人方式部署在 Discord,它创作的《太空歌剧院》作品,甚至获得了美国「数字艺术/数码摄影」竞赛单元一等奖。 这一事件展示了 AI 在绘画领域惊人的创造力,让人们…

网络安全笔记

# 网络安全概述 ### 网络安全的特征 - **机密性:信息不泄露给非授权的实体或对象** - **完整性:数据未经授权不能进行改变的特性, 即信息在存储或传输过程中保持不被修改,不被破坏的特性** - **可用性:可被授权实体访…

redis-cluster集群搭建

集群节点信息 192.168.222.131:46379 主要节点1 192.168.222.131:46380 从节点1 192.168.222.131:46381 从节点2192.168.222.132:46379 主要节点2 192.168.222.132:46380 从节点1 192.168.222.132:46381 从节点2192.168.222.133:46379 主要节点3 192.168.222.133:46380 从节点…

前端学习笔记

vue3的数据绑定 参考资料: https://blog.csdn.net/h8062651/article/details/143254339?spm1001.2014.3001.5506 Vue 3 提供了 reactive 和 ref 两个主要函数来创建响应式对象。 reactive: 用于创建包含多个属性的响应式对象。 当对象的属性发生变化时…

Easyui datagrid formatter 删除行失败解决

Easyui datagrid formatter 删除行失败解决 问题现象 使用formatter 为每行新增一个删除操作,,删除第一个行的时候没问题,如果存在多行的时候,当删除行时,提示错误 问题原因 因为是使用 formatter 相当于每行在渲染的时候ind…