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

目录

    • 🍁安装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 versionbeihai@beihai-pc:~/桌面$ docker version
Client: Docker Engine - CommunityVersion:           26.1.3API version:       1.45Go version:        go1.21.10Git commit:        b72abbbBuilt:             Thu May 16 08:33:29 2024OS/Arch:           linux/amd64Context:           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 imagesbeihai@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.rhkb.cn/news/373024.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通用的职位招聘小程序ui模板

蓝色简单的校园招聘&#xff0c;行业招聘&#xff0c;职位招聘手机小程序页面模板。包含&#xff1a;职位列表、职位详情、基本信息填写、登录、个人主页、消息页面等功能 通用的职位招聘小程序ui模板

【计算几何】凸包问题 (Convex Hull)

【计算几何】凸包问题 (Convex Hull) 引言 凸多边形 凸多边形是指所有内角大小都在 [ 0 , π ] [0,π] [0,π]范围内的简单多边形 凸包 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为&#xff1a;对于给定集合 X&#xff0c;所有包含 X 的凸集的交集 S 被称…

UE5 03-物体碰撞检测

在你需要碰撞的物体上添加一个碰撞检测组件 碰撞预设 设置为NoCollision,这样移动过程中就不会有物理碰撞阻挡效果,只负责检测是否碰撞,比较难解释,如果学过Unity的话,可以把它理解成 Collision 为 Trigger -------------------下面这个有点像Unity的OnTriggerEnter,跟OnColli…

单对以太网连接器多场景应用

单对以太网连接器应用场景概述 单对以太网&#xff08;Single Pair Ethernet&#xff0c;简称SPE&#xff09;作为一种新兴的以太网技术&#xff0c;以其独特的优势在多个领域得到了广泛的应用。SPE通过单对电缆进行数据传输&#xff0c;支持高速数据传输&#xff0c;同时还能…

解决C++编译时的产生的skipping incompatible xxx 错误

问题 我在编译项目时&#xff0c;产生了一个 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的编译错误&#xff0c;如下图所示&#xff1a; 解决方法 由图中的错误可知&#xff0c;在编译时&#xff0c;是能够在我们指定目录下的 *.so 动态库的…

2024-7-9 Windows NDK,Clion,C4droid 编译环境配置(基础|使用命令编译,非AndroidStudio),小白(记录)友好型教程

2024-7-9 Windows NDK,Clion,C4droid 编译环境配置(基础|使用命令编译),小白友好型 一直想使用NDK编译出lua库,然后进行开发.结果一直不成功,问题Bug出现了一堆(主要还是自己太菜,毕竟咱是编程散修一名>_<) NDK之前一直不会配置(直接用命令配置的那种,非AndroidStudio),一…

PID控制与模糊PID控制的比较

一、PID控制器的设计 1.PID控制原理图&#xff1a; PID控制其结构框图如下图所示&#xff1a; 图1&#xff1a;PID控制器结构框图 2.PID控制器传递函数的一般表达式 PID控制器传递函数的一般表达形式为&#xff1a; 其中kp为比例增益&#xff1b;ki为积分增益&#xff1b;k…

昇思25天学习打卡营第22天 | Shufflenet图像分类

ShuffleNet图像分类 当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有…

uniapp 表格,动态表头表格封装渲染

1.接口表格数据&#xff1a; {"headers": [{"label": "实例名","name": "v1","order": 1,"hide": false,"dateTypeValue": null},{"label": "所属科室","name&quo…

[从0开始轨迹预测][NMS]:NMS的应用(目标检测、轨迹预测)

非极大值抑制&#xff08;Non-Maximum Suppression&#xff0c;简称NMS&#xff09;是一种在计算机视觉中广泛应用的算法&#xff0c;主要用于消除冗余和重叠的边界框。在目标检测任务中&#xff0c;尤其是在使用诸如R-CNN系列的算法时&#xff0c;会产生大量的候选区域&#x…

【Linux进阶】文件系统3——目录树,挂载

前言 在Windows 系统重新安装之前&#xff0c;你可能会事先考虑&#xff0c;到底系统盘C盘要有多大容量&#xff1f;而数据盘D盘又要给多大容量等&#xff0c;然后实际安装的时候&#xff0c;你会发现其实C盘之前会有个100MB的分区被独立出来&#xff0c;所以实际上你就会有三个…

10、matlab中字符、数字、矩阵、字符串和元胞合并为字符串并将字符串以不同格式写入读出excel

1、前言 在 MATLAB 中&#xff0c;可以使用不同的数据类型&#xff08;字符、数字、矩阵、字符串和元胞&#xff09;合并为字符串&#xff0c;然后将字符串以不同格式写入 Excel 文件。 以下是一个示例代码&#xff0c;展示如何将不同数据类型合并为字符串&#xff0c;并以不…

ElementPlusError: [ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档 - 报警告之一

一、问题描述&#xff1a; 今天在使用elementui plus的时候遇到了一个奇葩的问题&#xff0c; 就是提示 使用了一些已被废弃的用法&#xff0c; 奇葩就在于我是 复制另一个页面的分页&#xff0c; 一摸一样的东西&#xff0c;就只这个页面报错&#xff0c; 分页也不出 为了这个…

C# Bitmap类型与Byte[]类型相互转化详解与示例

文章目录 一、Bitmap类型转Byte[]类型使用Bitmap类的Save方法使用Bitmap类的GetBytes方法 二、Byte[]类型转Bitmap类型使用MemoryStream将Byte[]数组转换为Bitmap对象使用System.Drawing.Imaging.BitmapImage类 总结 在C#编程中&#xff0c;Bitmap类型和Byte[]类型之间的相互转…

运动爱好者的新选择:哈氪聆光气传导耳机,轻巧又安全

平时不管是漫步街头、骑行穿梭&#xff0c;还是乘坐公共交通时&#xff0c;我总是喜欢佩戴耳机&#xff0c;借此隔绝外部的喧嚣&#xff0c;享受音乐的乐趣。在户外使用耳机&#xff0c;我更倾向于选择气传导耳机&#xff0c;它们更符合我的需求&#xff0c;因为这种耳机能让我…

在 PostgreSQL 里如何处理数据的版本跟踪和回滚?

文章目录 一、事务二、保存点三、使用版本控制扩展四、审计表和触发器五、使用时间戳列六、比较和还原数据七、考虑数据备份和恢复八、结论 在数据库管理中&#xff0c;数据的版本跟踪和回滚是非常重要的功能&#xff0c;有助于在数据操作出现错误或需要回滚到特定状态时进行有…

Mysql笔记-v2

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

Windows11配置WSL2支持代理上网

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装WSL2分发版二、配置步骤三、测试总结 前言 说起来本来这个功能我也不需要的&#xff0c;只是最近突然有个需求就顺便研究了下&#xff0c;WSL2默认的网…

Dynamics365 UCI下的高级查找(不要留恋Classic了)

UCI界面已经用了多年了&#xff0c;在Classic下的的高级查找按钮(漏斗icon)已不见踪影 但因为使用习惯问题&#xff0c;还是有人会通过右上角高级设置&#xff0c;进入Classic界面找到漏斗Icon来使用高级查找 但新的UCI风格下已经没了高级查找的概念&#xff0c;取而代之的是基…

评估测试用例有效性 5个方面

评估测试用例的有效性是确保软件测试活动能够达到预期目标的关键步骤&#xff0c;有助于测试团队优化测试计划&#xff0c;提高测试效率&#xff0c;减少返工&#xff0c;节省成本。如果缺乏对测试用例的有效性评估&#xff0c;可能会导致测试用例无法覆盖关键功能点&#xff0…