Docker:一、安装与卸载、配置阿里云加速器(Ubuntu)

news2024/11/15 18:45:53

目录

    • 🍁安装docker
      • 🌲1、环境准备
      • 🌲2、安装docker Engine
        • 🧊1、卸载旧版、任何冲突的包
        • 🧊2、使用存储库安装
        • 🧊3、安装 Docker 包。
        • 🧊4、查询是否安装成功
        • 🧊5、运行`hello-world`镜像
        • 🧊6、查看下载的镜像
      • 🌲3、卸载docker Engine
      • 🥦配置加速器
      • 🥦docker Engine 和 docker Desktop的区别

🍁安装docker

🌲1、环境准备

1、使用Linux、可以使用虚拟机或者阿里云服务器(需要会一点Linux基础)

2、查看使用的环境信息:cat /etc/os-release

# 查看系统内核
beihai@beihai-pc:~/桌面$ uname -r
6.2.0-39-generic

# 查看系统版本
beihai@beihai-pc:~/桌面$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

🌲2、安装docker Engine

!!!我们这里步骤安装的是docker Engine,不是docker Desktop【关于两者区别,文末会拓展】!!!

根据官方文档提示安装对应系统的docker:https://docs.docker.com/
在这里插入图片描述
在这里插入图片描述
根据官方文档,得出安装步骤【Ubuntu 22.04.3 LTS版本、不同版本根据上图寻找不同操作文档】:

🧊1、卸载旧版、任何冲突的包

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

beihai@beihai-pc:~/桌面$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
[sudo] beihai 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 docker.io 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 docker-doc 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 docker-compose 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 docker-compose-v2 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 podman-docker 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 containerd 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
软件包 runc 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 280 个软件包未被升级。

🧊2、使用存储库安装
# 添加Docker的官方GPG密钥:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

#将存储库添加到 Apt源(这里使用默认镜像【国外镜像】):
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
😎代码指令解析:
# 1、更新 apt 包索引(更新本地包索引,使系统能够获取最新的包信息,包括最新的版本和依赖关系。)
sudo apt-get update

#2、安装必要的软件包
#(安装 ca-certificates 和 curl。ca-certificates 包含了系统的受信任根证书,用于验证 SSL 证书。curl 是一个命令行工具,用于从 URL 获取数据。)
sudo apt-get install ca-certificates curl

#3、创建 /etc/apt/keyrings 目录
#(创建 /etc/apt/keyrings 目录,用于存放 GPG 密钥文件。-m 0755 指定了新目录的权限,表示目录所有者有读、写、执行权限,组和其他用户有读和执行权限。-d 表示创建目录。)
sudo install -m 0755 -d /etc/apt/keyrings

#4、下载 Docker 官方 GPG 密钥(使用 curl 从 Docker 官方网站下载 GPG 密钥文件,并将其保存到 /etc/apt/keyrings/docker.asc。选项 -fsSL 的含义是:
# -f:失败时不输出错误信息。
# -s:静默模式,不输出进度信息。
# -S:静默模式下显示错误信息。
# -L:如果目标是一个重定向 URL,则跟随重定向。)
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

#5、修改密钥文件的权限
#(将密钥文件 /etc/apt/keyrings/docker.asc 的权限设置为所有用户可读 (a+r),确保 apt 软件包管理器能够读取这个文件。)
sudo chmod a+r /etc/apt/keyrings/docker.asc

#6、添加 Docker 存储库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#这个命令分为几部分:
# ---1
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable":

# echo 用于输出一行文本,包含存储库的定义。
# deb 表示这是一个二进制软件包存储库。
# [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 指定了存储库的架构和用于签名的 GPG 密钥文件。
# arch=$(dpkg --print-architecture) 动态获取系统的架构(例如 amd64)。
# signed-by=/etc/apt/keyrings/docker.asc 指定了用于验证该存储库的软件包的 GPG 密钥文件。
# https://download.docker.com/linux/ubuntu 是存储库的 URL。
# $(. /etc/os-release && echo "$VERSION_CODENAME") 动态获取当前操作系统的版本代号(例如 focal for Ubuntu 20.04)。这是通过读取 /etc/os-release 文件来实现的。
#stable 指定了存储库的分支(稳定版)。
#---2
# | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null:
# | 将前面的 echo 命令的输出传递给 tee 命令。
#sudo tee /etc/apt/sources.list.d/docker.list 以 sudo 权限将输出写入到 /etc/apt/sources.list.d/docker.list 文件中。
# > /dev/null 表示将 tee 命令的标准输出重定向到 /dev/null,避免在终端中显示冗余信息。

#7、更新本地包索引
sudo apt-get update

#这条命令会更新本地的包索引,包含刚刚添加的 Docker 存储库中的包信息。这样系统就知道可以从 Docker 存储库中安装哪些软件包以及它们的最新版本。

🧊3、安装 Docker 包。

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
(docker-ce 社区版、docker-ee 企业版)

🧊4、查询是否安装成功
命令: docker version

beihai@beihai-pc:~/桌面$ docker version
Client: Docker Engine - Community
 Version:           26.1.3
 API version:       1.45
 Go version:        go1.21.10
 Git commit:        b72abbb
 Built:             Thu May 16 08:33:29 2024
 OS/Arch:           linux/amd64
 Context:           default
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/version": dial unix /var/run/docker.sock: connect: permission denied
🧊5、运行hello-world镜像
命令: sudo docker run hello-world

在这里插入图片描述

🧊6、查看下载的镜像
命令: docker images

beihai@beihai-pc:~/桌面$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   13 months ago   13.3kB

!!! 如果查看镜像失败
报:permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial unix /var/run/docker.sock: connect: permission denied
是因为当前用户没有权限访问 Docker 守护进程的 Unix 套接字。你可以通过以下方法和步骤解决这个问题:

方法一:使用 sudo 运行,命令:sudo docker images

方法二:

  1. 添加当前用户到 Docker 组。 sudo usermod -aG docker $USER
  2. 重新启动计算机,以使组更改生效。
    如果不想注销或重启,可以通过以下命令启动一个新的 shell 会话:newgrp docker【但是这样是只对当前会话有效,所以为了长远发展,还是通过重新启动计算机方法】

至此,docker Engine安装成功!

🌲3、卸载docker Engine

1、卸载 Docker Engine、CLI、containerd 和 Docker Compose 包:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

2、主机上的映像、容器、卷或自定义配置文件 不会自动删除。要删除所有映像、容器和卷,请执行以下操作:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

3、您必须手动删除任何已编辑的配置文件。

🥦配置加速器

我们前面默认的镜像拉取地址是国外的,速度比较慢。现在想配置国内镜像(阿里云镜像)来提高docker镜像的拉取速度。
1、前往阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances 获取加速镜像
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建成功后,退回。点击【镜像工具 -》 镜像加速器】
在这里插入图片描述
根据自己服务器型号,自己复制对应的命令
在这里插入图片描述

2、 执行上面复制的命令,配置加速器


命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<自己的镜像加速器>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


==============指令解析==============
sudo mkdir -p /etc/docker
	解析:使用 mkdir 创建 /etc/docker 目录。
	选项 -p 的作用是如果父目录不存在则一并创建。
	sudo 是用来以超级用户(root)权限执行该命令,因为 /etc 目录通常需要超级用户权限。
----------------------------
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<自己的镜像加速器>.mirror.aliyuncs.com"]
}
EOF
	解析:这个命令使用 tee 命令将多行字符串写入到 /etc/docker/daemon.json 文件中。
	sudo tee /etc/docker/daemon.json:tee 命令会将标准输入的内容写入到指定的文件中。
	sudo 是用来以超级用户权限执行该命令,以确保可以写入到 /etc/docker 目录下。
	<<-'EOF':表示开始一个多行字符串,直到遇到一个单独的 EOF(或其他标识符)。
		<<- 的作用是支持行首的制表符缩进,这样在脚本中可以更美观地格式化内容。
	{ "registry-mirrors": ["https://<自己的镜像加速器>.mirror.aliyuncs.com"] }:这部分内容是实际写入到 daemon.json 文件中的 JSON 配置
	EOF:表示多行字符串的结束。
----------------------------
sudo systemctl daemon-reload
	解析:告诉 systemd(系统和服务管理器)重新加载配置文件。
	这是因为我们更改了 Docker 的配置文件,需要通知 systemd 重新读取这些配置。
----------------------------
sudo systemctl restart docker
	解析:重启 Docker 服务,以应用新的配置。
	sudo 是用来以超级用户权限执行该命令,因为启动和停止系统服务通常需要超级用户权限。

3、 查询是否配置成功

命令 :docker info

你应该看到类似以下输出,包含 Registry Mirrors 部分:
Registry Mirrors:
 https://<自己的镜像加速器>.mirror.aliyuncs.com/

🥦docker Engine 和 docker Desktop的区别

Docker Desktop 和 Docker Engine 是 Docker 提供的两种不同的产品,它们的安装和使用方式有所不同,适用于不同的使用场景。

Docker Desktop
Docker Desktop 是一个面向桌面操作系统(如 Windows 和 macOS)的应用程序,它包含了 Docker Engine、Docker CLI 客户端、Docker Compose、Kubernetes 以及其他一些工具。Docker Desktop 提供了一个完整的 Docker 开发环境,易于安装和使用,特别适合开发人员和个人用户。

特点:

  • 一体化安装:包括 Docker Engine、CLI、Compose 等,提供开箱即用的体验。
  • GUI 支持:提供图形用户界面,可以通过 GUI 来管理容器和镜像。
  • 跨平台:支持 Windows 和 macOS,简化了不同操作系统上的 Docker 使用。
  • 集成工具:内置了 Kubernetes 和其他开发工具,方便开发者进行本地开发和测试。

Docker Engine
Docker Engine 是一个适用于 Linux 操作系统的容器运行时,主要用于生产环境中的容器化应用。它是 Docker 技术的核心组件,负责构建、运行和管理容器。Docker Engine 通常在服务器环境中使用,并通过命令行进行管理。

特点:

  • 轻量级:仅包括核心组件,适合服务器和生产环境部署。
  • 高性能:设计用于高效地管理容器和镜像。
  • 命令行管理:主要通过命令行接口(CLI)进行操作,没有图形界面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1901287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像处理调试软件推荐

对于图像处理的调试&#xff0c;使用具有图形用户界面&#xff08;GUI&#xff09;且支持实时调整和预览的图像处理软件&#xff0c;可以大大提高工作效率。以下是几款常用且功能强大的图像处理调试软件推荐&#xff1a; ImageJ/FijiMATLABOpenCV with GUI LibrariesNI Vision …

Stable Diffusion:最全详细图解

Stable Diffusion&#xff0c;作为一种革命性的图像生成模型&#xff0c;自发布以来便因其卓越的生成质量和高效的计算性能而受到广泛关注。不同于以往的生成模型&#xff0c;Stable Diffusion在生成图像的过程中&#xff0c;采用了独特的扩散过程&#xff0c;结合深度学习技术…

WAIC:生成式 AI 时代的到来,高通创新未来!

目录 01 在终端侧算力上&#xff0c;动作最快的就是高通 02 模型优化&#xff0c;完成最后一块拼图 在WAIC上&#xff0c;高通展示的生成式AI创新让我们看到了未来的曙光。 生成式 AI 的爆发带来了意想不到的产业格局变化&#xff0c;其速度之快令人惊叹。 仅在一个月前&…

考研必备~总结严蔚敏教授《数据结构》课程的重要知识点及考点

作者主页&#xff1a;知孤云出岫 目录 1. 基本概念1.1 数据结构的定义1.2 抽象数据类型 (ADT) 2. 线性表2.1 顺序表2.2 链表 3. 栈和队列3.1 栈3.2 队列 4. 树和二叉树4.1 树的基本概念4.2 二叉树 5. 图5.1 图的基本概念5.2 图的遍历 6. 查找和排序6.1 查找6.2 排序 7. 重点考…

[图解]SysML和EA建模住宅安全系统-11-接口块

1 00:00:00,660 --> 00:00:04,480 接下来的步骤是定义系统上下文 2 00:00:04,960 --> 00:00:07,750 首先是图17.17 3 00:00:09,000 --> 00:00:10,510 系统上下文展示了 4 00:00:10,520 --> 00:00:12,510 ESS和外部系统、用户 5 00:00:12,520 --> 00:00:14,1…

简介时间复杂度

好了&#xff0c;今天我们来了解一下&#xff0c;我们在做练习题中常出现的一个名词。时间复杂度。我相信大家如果有在练习过题目的话。对这个名词应该都不陌生吧。但是可能很少的去思考它是干什么的代表的什么意思。反正我以前练习的时候就是这样。我只知道有这么一个名词在题…

DevOps实战:使用GitLab+Jenkins+Kubernetes(k8s)建立CI_CD解决方案

一.系统环境 本文主要基于Kubernetes1.21.9和Linux操作系统CentOS7.4。 服务器版本docker软件版本Kubernetes(k8s)集群版本CPU架构CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64CI/CD解决方案架构图:CI/CD解决方案架构图描述:程序员写好代码之…

测试几个 ocr 对日语的识别情况

测试几个 ocr 对日语的识别情况 1. EasyOCR2. PaddleOCR3. Deepdoc&#xff08;识别pdf中图片&#xff09;4. Deepdoc&#xff08;识别pdf中文字&#xff09;5. Nvidia neva-22b6. Claude 3.5 sonnet 识别图片中的文字7. Claude 3.5 sonnet 识别 pdf 中表格8. OpenAI gpt-4o 识…

CMS Made Simple v2.2.15 远程命令执行漏洞(CVE-2022-23906)

前言 CVE-2022-23906 是一个远程命令执行&#xff08;RCE&#xff09;漏洞&#xff0c;存在于 CMS Made Simple v2.2.15 中。该漏洞通过上传头像功能进行利用&#xff0c;攻击者可以上传一个经过特殊构造的图片文件来触发漏洞。 漏洞详情 CMS Made Simple v2.2.15 中的头像上…

verilog读写文件注意事项

想要的16进制数是文本格式提供的文件&#xff0c;想将16进制数提取到变量内&#xff0c; 可以使用 f s c a n f ( f d 1 , " 也可以使用 fscanf(fd1,"%h",rd_byte);实现 也可以使用 fscanf(fd1,"也可以使用readmemh(“./FILE/1.txt”,mem);//fe放在mem[0…

alphazero学习

AlphaGoZero是AlphaGo算法的升级版本。不需要像训练AlphaGo那样&#xff0c;不需要用人类棋局这些先验知识训练&#xff0c;用MCTS自我博弈产生实时动态产生训练样本。用MCTS来创建训练集&#xff0c;然后训练nnet建模的策略网络和价值网络。就是用MCTSPlayer产生的数据来训练和…

VRPTW(MATLAB):常春藤算法(IVY)求解带时间窗的车辆路径问题VRPTW,MATLAB代码

详细介绍 VRPTW&#xff08;MATLAB&#xff09;&#xff1a;常春藤算法&#xff08;Ivy algorithm&#xff0c;IVY&#xff09;求解带时间窗的车辆路径问题VRPTW&#xff08;提供MATLAB代码&#xff09;-CSDN博客 ********************************求解结果******************…

web零碎知识2

不知道我的这个axios的包导进去没。 找一下关键词&#xff1a; http请求协议&#xff1a;就是进行交互式的格式 需要定义好 这个式一发一收短连接 而且没有记忆 这个分为三个部分 第一个式请求行&#xff0c;第二个就是请求头 第三个就是请求体 以get方式进行请求的失手请求…

C语言 -- 深入理解指针(一)

C语言 -- 深入理解指针&#xff08;一&#xff09; 1.内存和地址1.1 内存1.2 究竟该如何理解编址 2. 指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;​2.2 指针变量和解引用操作符&#xff08;*&#xff09;​​2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引…

Java语言程序设计基础篇(第10版)编程练习题13.18(使用 Rational 类)

第十三章第十八题(使用 Rational 类) 题目要求&#xff1a; 编写程序&#xff0c;使用 Rational 类计算下面的求和数列: 你将会发现输出是不正确的 &#xff0c;因为整数溢出(太大了)。为了解决这个问题 &#xff0c;参见编程练习題13.15。代码参考&#xff1a; package cha…

羊大师:小暑至,热浪涌,三伏悠长防暑忙

随着夏日的脚步悄然加速&#xff0c;我们迎来了小暑节气。小暑&#xff0c;一个预示着盛夏正式拉开序幕的时节&#xff0c;它携带着滚滚热浪&#xff0c;让大地仿佛置身于火炉之中。而随之而来的三伏天&#xff0c;更是长达40天的酷热考验&#xff0c;让人不禁感叹夏日的漫长与…

文件、文本阅读与重定向、路径与理解指令——linux指令学习(一)

前言&#xff1a;本节内容标题虽然为指令&#xff0c;但是并不只是讲指令&#xff0c; 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法&#xff0c; 很抱歉&#xff0c; 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的&#xff0c;…

记录第一次使用air热更新golang项目

下载 go install github.com/cosmtrek/airlatest 下载时提示&#xff1a; module declares its path as: github.com/air-verse/air but was required as: github.com/cosmtrek/air 此时&#xff0c;需要在go.mod中加上这么一句&#xff1a; replace github.com/cosmtrek/air &…

VitePress美化

参考资料&#xff1a; https://blog.csdn.net/weixin_44803753/article/details/130903396 https://blog.csdn.net/qq_30678861/category_12467776.html 站点信息修改 首页部分的修改基本都在.vitepress/config.mts,这个文件内修改。 title 站点名称 description 描述 top…

轻松快速上手Thekey库,实现数据加密无忧

Thekey的概述&#xff1a; Thekey库是一个Python库,旨在简化数据加密、解密、签名和验证的过程。它提供了一套简洁易用的接口,用于处理各种加密任务,适合需要在应用程序中实现安全数据处理的开发人员. 安装Thekey库 pip install thekey使用Thekey库进行基本加密和解密操作的…