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 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.mfbz.cn/a/777379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

医疗器械FDA | FDA如何对医疗器械网络安全认证进行审查?

FDA医械网络安全文件出具​https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e FDA对医疗器械的网络安全认证进行审查时&#xff0c;主要关注以下几个方面&#xff0c;以确保医疗器械在网络环境中的安全性…

MAX98357、MAX98357A、MAX98357B小巧、低成本、PCM D类IIS放大器,具有AB类性能中文说明规格书

前言&#xff1a; MAX98357A支持标准I2S数据&#xff0c;MAX98357B支持左对齐数字音频数据。两个版本均支持8通道TDM音频数据。 IIS数字功放MAX98357开发板/评估系统 MAX98357 WLP-9(1.347x1.437mm)封装的外观和丝印AKM MAX98357 TQFN-16-EP(3x3mm)封装的外观和丝印AKK 引脚说…

Rust: polars行遍历,从dataframe到struct及Bar设计比较

pandas提供了iterrows()、itertuples()、apply等行遍历的方式&#xff0c;还是比较方便的。 polars的列操作功能非常强大&#xff0c;这个在其官网上有详细的介绍。由于polars底层的arrow是列存储模式&#xff0c;行操作效率低下&#xff0c;官方也不推荐以行方式进行数据操作。…

谷粒商城 - 树形菜单递归流查询、三级分类数据查询性能优化、Jmter 性能压测

目录 树形分类菜单&#xff08;递归查询&#xff0c;强扩展&#xff09; 1&#xff09;需求 2&#xff09;数据库表设计 3&#xff09;实现 4&#xff09;关于 asSequence 优化 性能压测 1&#xff09;Jmeter 安装使用说明 2&#xff09;中间件对性能的影响 三级分类数…

昇思25天学习打卡营第5天|GAN图像生成

文章目录 昇思MindSpore应用实践基于MindSpore的生成对抗网络图像生成1、生成对抗网络简介零和博弈 vs 极大极小博弈GAN的生成对抗损失 2、基于MindSpore的 Vanilla GAN3、基于MindSpore的手写数字图像生成导入数据数据可视化模型训练 Reference 昇思MindSpore应用实践 本系列…

01 企业网站架构部署于优化之Web基础与HTTP协议

目录 1.1 Web基础 1.1.1 域名和DNS 1. 域名的概念 2. Hosts文件 3. DNS 4. 域名注册 1.1.2 网页与HTML 1. 网页概述 2. HTML概述 3. HTML基本标签 4. 网站和主页 5. Web1.0与Web2.0 1.1.3 静态网页与动态网页 1. 静态网页 2. 动态网页 3. 动态网页语言 1.2 HTTP协议 1…

如何快速开展每日待办工作 待办任务高效管理

每天&#xff0c;我们都需要处理大量的待办工作&#xff0c;如何高效有序地开展这些工作成为了我们必须要面对的问题。仅仅依靠个人的记忆和脑力去管理这些繁杂的事务&#xff0c;显然是一项艰巨的挑战。在这个时候&#xff0c;如果能有一款实用的待办工具来辅助我们&#xff0…

7年跨境业务资深从业者的代理IP使用经验分享

作为一个拥有7年跨境业务经验的资深从业者&#xff0c;今天大家分享一下在使用各种代理IP服务中的宝贵经验。无论你是新手还是老手&#xff0c;这篇文章都能为你带来一些新的启发和实用技巧。 在我刚开始跨境业务的那几年&#xff0c;最大的挑战之一就是如何跨境访问&#xff0…

ORB 特征点提取

FAST关键点 选取像素p&#xff0c;假设它的亮度为Ip&#xff1b; . 设置一个阈值T&#xff08;比如Ip的20%&#xff09;&#xff1b; 以像素p为中心&#xff0c;选取半径为3的圆上的16个像素点&#xff1b; 假如选取的圆上&#xff0c;有连续的N个点的亮度大于IpT或小于…

CSS实现图片裁剪居中(只截取剪裁图片中间部分,图片不变形)

1.第一种方式&#xff1a;&#xff08;直接给图片设置&#xff1a;object-fit:cover;&#xff09; .imgbox{width: 100%;height:200px;overflow: hidden;position: relative;img{width: 100%;height: 100%; //图片要设置高度display: block;position: absolute;left: 0;right…

【Python基础篇】你了解python中运算符吗

文章目录 1. 算数运算符1.1 //整除1.2 %取模1.3 **幂 2. 赋值运算符3. 位运算符3.1 &&#xff08;按位与&#xff09;3.2 |&#xff08;按位或&#xff09;3.3 ^&#xff08;按位异或&#xff09;3.4 ~&#xff08;按位取反&#xff09;3.5 <<&#xff08;左移&#…

【JavaWeb程序设计】JSP编程II

目录 一、输入并运行下面的import_test.jsp页面 1.1 代码运行结果 1.2 修改编码之后的运行结果 二、errorPage属性和isErrorPage属性的使用 2.1 下面的hello.jsp页面执行时将抛出一个异常&#xff0c;它指定了错误处理页面为errorHandler.jsp。 2.1.2 运行截图 2.2 下面…

压测工具---Ultron

压测工具&#xff1a;Ultron 类型&#xff1a;接口级和全链路 接口级 对于接口级别的压测我们可以进行 http接口压测、thrift压测、redis压测、kafka压测、DDMQ压测、MySQL压测等&#xff0c;选对对应的业务线、选择好压测执行的时间和轮数就可以执行压测操作了 全链路 对…

Java新特性梳理——Java15

highlight: xcode theme: vuepress 概述 2020 年 9 月 15 日&#xff0c;Java 15 正式发布&#xff0c;(风平浪静的一个版本)共有 14 个 JEP&#xff0c;是时间驱动形式发布的第六个版本。相关文档&#xff1a;https://openjdk.java.net/projects/jdk/15/ 语法层面变化 密封类 …

【机器学习】基于密度的聚类算法:DBSCAN详解

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 基于密度的聚类算法&#xff1a;DBSCAN详解引言DBSCAN的基本概念点的分类聚类过…

JVM原理(十七):JVM虚拟机即时编译器详解

编译器无论在何时、在何种状态下把Class文件转换成与本地基础设施相关的二进制机器码&#xff0c;他都可以视为整个编译过程的后端。 后端编译器编译性能的好坏、代码优化质量的高低却是衡量一款商用虛拟机优秀与否的关键指标之一。 1. 即时编译器 即时编译器是一个把Java的…

19.【C语言】初识指针(重难点)

内存&#xff1a;所有程序的运行在内存中 用Cheat Engine查看任意程序的内存(16进制&#xff09;&#xff1a; 显示大量的数据 想要定位某个数字 &#xff0c;需要知道地址(类比二维坐标) 如F8的地址为00BCB90008,所以是00BCB908(偏移) ctrlG 则有 内存单元的说明&#xff1…

动态颤抖的眼睛效果404页面源码

动态颤抖的眼睛效果404页面源码&#xff0c; 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 动态颤抖的眼睛效果404页面源码

Portainer 是一个开源的容器管理平台-非常直观好用的Docker图形化项目

在这个容器化技术大行其道的时代&#xff0c;Docker和Kubernetes几乎成了技术圈的新宠。可是管理起容器来&#xff0c;有时候还是有点头大。命令行操作对于某些小伙伴来说&#xff0c;可能还是有点不太友好。 今天开源君分享一个叫 Portainer 的开源项目&#xff0c;一个用来简…

AI大模型时代的存储发展趋势

从2022年下半年&#xff0c;大模型和AIGC这两个词变得极其火热&#xff0c;而GPU的市场也是一卡难求。对于这种迷乱和火热&#xff0c;让我想起了当年的比特币挖矿和IPFS。似乎世界一年一个新风口&#xff0c;比特币、元宇宙、NFT、AIGC&#xff0c;金钱永不眠&#xff0c;IT炒…