当前位置: 首页 > news >正文

在Ubuntu-22.04 [WSL2]中配置Docker

文章目录

  • 0. 进入Ubuntu-22.04
  • 1. 更新系统软件包
  • 2. 安装Docker相关依赖包
  • 3. 添加Docker官方GPG密钥
  • 4. 添加Docker软件源
  • 5. 安装Docker Engine
    • 5.1 更新软件包列表
    • 5.2 安装Docker相关软件包
  • 6. 验证Docker安装是否成功
    • 6.1 查看Docker版本信息
    • 6.2 启动Docker
    • 6.3 配置镜像加速器
    • 6.4 运行一个简单的测试容器
    • 6.6 Docker拉取MySQL镜像
  • 7. 实战总结

0. 进入Ubuntu-22.04

  • 在PowerShell里执行命令:wsl -d Ubuntu-22.04
    在这里插入图片描述

1. 更新系统软件包

  • 在安装Docker之前,首先要确保系统的软件包列表是最新的
  • 执行命令:sudo apt -y update
    在这里插入图片描述
  • 执行命令:sudo apt -y upgrade
    在这里插入图片描述
  • 说明:sudo apt -y update命令用于更新软件包列表信息,让系统知道可以安装的软件包的最新版本;sudo apt -y upgrade命令用于将已安装的软件包升级到最新版本。-y参数表示自动回答“是”,这样在更新和升级过程中就不会因为需要用户确认而中断。

2. 安装Docker相关依赖包

  • 安装一些必要的软件包,这些软件包允许通过HTTPS来获取软件包,以及用于验证软件包的完整性的工具。
  • 执行命令:sudo apt -y install apt-transport-https ca-certificates curl software-properties-common
    在这里插入图片描述
  • 说明安装的软件包
    1. apt-transport-https:这个软件包允许apt使用https协议来下载软件包。通常情况下,默认的apt仓库使用http协议,但对于一些安全要求较高的软件(如Docker),其仓库使用https协议,所以需要安装这个软件包来支持通过https下载。
    2. ca-certificates:包含了一系列的根证书,用于验证软件包来源的合法性。当通过https下载软件时,系统需要使用这些证书来确认下载的软件是来自可信的源。
    3. curl:是一个用于从服务器获取数据或者文件的工具。在这里主要用于从Docker官方网站下载安装脚本或者获取一些配置信息。
    4. software-properties-common:提供了管理软件源(repository)的功能,比如添加或者删除软件源等操作。

3. 添加Docker官方GPG密钥

  • 为了确保下载的Docker软件包是正版且没有被篡改,需要添加Docker官方的GPG密钥。
  • 执行命令:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    在这里插入图片描述
  • 命令说明
    1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg:使用curl工具从Docker官方指定的网址(https://download.docker.com/linux/ubuntu/gpg)下载GPG密钥文件。-f参数表示在下载过程中如果出现错误,curl会直接返回错误信息而不是输出HTML文档。-s参数表示静默模式,不显示下载进度。-L参数表示如果下载的链接是一个重定向链接,curl会自动跟踪重定向并下载最终指向的文件。
    2. sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg:使用gpg工具对下载的密钥文件进行处理。--dearmor参数表示将密钥文件转换为一种更适合存储和分发的格式。-o /usr/share/keyrings/docker - archive - keyring.gpg指定了输出文件的路径和名称,即将转换后的密钥文件存储在/usr/share/keyrings目录下,文件名为docker - archive - keyring.gpg

4. 添加Docker软件源

  • 添加Docker软件源到系统的软件源列表中,这样系统就知道从哪里下载Docker软件包。
  • 执行命令:echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    在这里插入图片描述
  • 命令说明
    1. echo "deb [arch=$(dpkg --print - architecture) signed-by=/usr/share/keyrings/docker - archive - keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable":这个命令用于生成要添加到软件源列表中的内容。
      • deb:表示这是一个Debian类型的软件源(Ubuntu是基于Debian的,所以使用deb)。
      • [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]:指定了软件包的架构(通过dpkg --print-architecture获取当前系统的架构,如amd64arm64等)和用于验证软件包的GPG密钥文件路径。
      • https://download.docker.com/linux/ubuntu:是Docker软件包的下载地址。
      • $(lsb_release -cs):获取当前Ubuntu系统的发行版代号(如jammy),用于确定要下载哪个版本对应的软件包。
      • stable:表示要下载稳定版本的Docker软件包。
    2. sudo tee /etc/apt/sources.list.d/docker.list > /dev/nulltee命令用于将前面echo命令生成的内容写入到/etc/apt/sources.list.d/docker.list文件中。> /dev/null表示将tee命令的标准输出重定向到/dev/null(一个特殊的设备文件,用于丢弃数据),这样就不会在终端中显示多余的信息。

5. 安装Docker Engine

5.1 更新软件包列表

  • 执行命令:sudo apt -y update
    在这里插入图片描述
  • 再次执行sudo apt -y update是为了更新软件包列表,让系统能够识别刚刚添加的Docker软件源中的软件包。

5.2 安装Docker相关软件包

  • 执行命令:sudo apt -y install docker-ce docker-ce-cli containerd.io
    在这里插入图片描述
  • 软件包说明
    • docker - ce:是Docker社区版(Community Edition)的核心软件包,包含了运行Docker容器所需的基本组件。
    • docker - ce - cli:提供了用于操作Docker容器的命令行接口。
    • containerd.io:是一个容器运行时(container runtime),它是Docker架构中的底层组件,负责管理容器的生命周期等操作。

6. 验证Docker安装是否成功

6.1 查看Docker版本信息

  • 执行命令:docker version在这里插入图片描述
  • 执行命令:sudo update-alternatives --config iptables,注意类型选择:1
    在这里插入图片描述
  • 执行命令:docker version
    在这里插入图片描述

6.2 启动Docker

  • 执行命令:sudo service docker start
    在这里插入图片描述

6.3 配置镜像加速器

  • 执行命令:vim /etc/docker/daemon.json
    在这里插入图片描述
{"registry-mirrors": ["https://9871944d085e4817a11247169cc16509.mirror.swr.myhuaweicloud.com"]
}

6.4 运行一个简单的测试容器

  • 执行命令:docker run hello-world
    在这里插入图片描述
  • 这个命令会从Docker官方仓库中下载一个名为hello-world的测试容器并在本地运行。如果一切正常,终端会显示一些欢迎信息,表明Docker能够正常拉取和运行容器。

6.6 Docker拉取MySQL镜像

  • 执行命令:docker pull mysql:8.0
    在这里插入图片描述

7. 实战总结

  • 本次 Docker 安装实战从系统准备起步,先更新软件包与升级系统,接着安装关键依赖包以满足安全与协议需求,添加官方 GPG 密钥及软件源确保软件包正版可信与可获取。成功安装 Docker Engine 后,依次进行了安装验证,涵盖查看版本、启动服务、配置镜像加速器并运行测试容器。最后拉取 MySQL 8.0 镜像展示其应用场景。整体流程严谨有序,关键在于理解各步骤原理及作用,熟悉命令操作,为后续复杂的容器化应用部署筑牢根基,开启高效的 Docker 应用之旅。

相关文章:

在Ubuntu-22.04 [WSL2]中配置Docker

文章目录 0. 进入Ubuntu-22.041. 更新系统软件包2. 安装Docker相关依赖包3. 添加Docker官方GPG密钥4. 添加Docker软件源5. 安装Docker Engine5.1 更新软件包列表5.2 安装Docker相关软件包 6. 验证Docker安装是否成功6.1 查看Docker版本信息6.2 启动Docker6.3 配置镜像加速器6.4…...

ACM:均分纸牌

主要思路 整体思路概述: 本题旨在解决给定N堆纸牌(纸牌总数是N的倍数),通过按照特定移牌规则移动纸牌,找出用最少移动次数使每堆纸牌数量相等的方法。程序采用了一种逐步调整的思路,先计算出每堆纸牌应有的…...

ThreadFactory

ThreadFactory 是 Java 中一个用于创建线程的接口,它可以自定义线程的创建过程,例如线程的名称、优先级、是否为守护线程等。它是 java.util.concurrent 包的一部分,通常与线程池(ThreadPoolExecutor)一起使用。 线程…...

WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门

作为一个使用Node.js多年的开发者,我已经习惯于用Node.js写一些web应用来为工作服务,因为实现快速、部署简单、自定义强。今天我们一起来学习一个全栈工程师必备技能:web路由。(观看此文的前提是默认你已经装好nonde.js了&#xf…...

NES游戏机项目制作笔记(未完成)

24年12月1日晚记——在网上找项目学习的时候发现一个有意思的项目,准备靠这个应用一些STM32的高级功能。值得提醒的是——目的在于学习不可贪杯,注意效率 01 根据项目需求分析 为确保充分考虑每一个细节,并且让自己高效的完成项目制作&#…...

云服务器部署upload-labs-docker(文件上传靶场)环境 以及相关报错问题

环境的搭建 准备:云服务器(本地的linux服务器(版本最好不要是老的不然不兼容docker)) f8x配置docker环境: https://github.com/ffffffff0x/f8x 一键配置 docker拉取file-labs靶场 https://github.com…...

Elasticsearch入门之HTTP基础操作

RESTful REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在…...

maven聚合项目部署到tomcat上

目录 一.聚合项目 1.检查无误后将项目打包 2.将这四个拷贝到tomcat的webapp下 二.启动tomcat 1.双击startup.bat 2.页面访问http://localhost:8080 3.打开webapp文件夹,发现多了三个文件夹 4.点进去才有要访问的index页面 5.再进行访问 解决: …...

基于Matlab生育模型和年龄别死亡率的未来人口预测与结构动态分析

人口预测在社会经济发展、政策规划以及资源分配中扮演着至关重要的角色,特别是在全球人口老龄化、少子化趋势日益显著的背景下,对人口增长规律及结构变化的研究愈发重要。人口结构的变化不仅直接影响劳动力供给和经济增长潜力,还对医疗、教育…...

公共服务 kkFileView 4.1 文件预览 Docker 一键部署

官方文档 https://kkview.cn/zh-cn/docs/production.html 镜像导入 # 网络环境方便访问docker中央仓库 docker pull keking/kkfileview:4.1.0# 网络环境不方便访问docker中央仓库 wget https://kkview.cn/resource/kkFileView-4.1.0-docker.tar docker load -i kkFileView-4…...

福昕PDF低代码平台

福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具,旨在简化PDF处理和管理的流程。通过这个平台,用户可以通过简单的拖拽界面上的按钮,轻松完成对Cloud API的调用工作流,而无需编写复杂的代码。这使得即使没有编程经验的…...

Ubuntu环境安装RabbitMQ

1.安装Erlang RabbitMq需要Erlang语⾔的⽀持,在安装rabbitMq之前需要安装erlang # 更新软件包 sudo apt-get update # 安装 erlang sudo apt-get install erlang 查看erlang版本 : erl 退出命令:halt(). 2. 安装RabbitMQ # 更新软件包 sudo apt-get update # 安装 …...

集合ArrayList

黑马程序员Java的个人笔记 BV17F411T7Ao p111~p115 目录 集合存储数据类型的特点 创建对象 ArrayList 成员方法 .add 增加元素 .remove 删除元素 .set 修改元素 .get 查询元素 .size 获取长度 基本数据类型对应的包装类 Character 练习 返回多个数据 集合存储…...

C#怎么判断电脑是否联网

在 C# 中,可以通过几种方法检测计算机是否联网。以下是几种常用的方式: 1. 使用 System.Net.NetworkInformation.Ping 类 通过发送一个 Ping 请求到公共 DNS 服务器(如 Google 的 DNS 8.8.8.8)来检测是否联网。这是最常见的一种…...

软件体系结构复习-02 软件体系结构定位及构建

软件体系结构复习-02 软件体系结构定位及构建 原文链接:《软件体系结构复习-02 软件体系结构定位及构建》 目录 软件体系结构复习-02 软件体系结构定位及构建 1 什么是软件体系结构 2 软件生命周期中的软件体系结构 2.1 生命周期 2.2 定位与作用 1 规划和需求…...

鸿蒙获取 APP 信息及手机信息

前言:获取 APP 版本信息可以通过 bundleManager.getBundleInfoForSelfSync(bundleFlags) 去获取,获取手机信息可以通过 kit.BasicServicesKit 库去获取,以下是封装好的工具类。 import bundleManager from ohos.bundle.bundleManager; impo…...

Linux-V4L2摄像头应用编程

ALPHA/Mini I.MX6U 开发板配套支持多种不同的摄像头,包括正点原子的 ov5640(500W像素)、 ov2640(200W 像素)以及 ov7725(不带 FIFO、30W 像素)这三款摄像头,在开发板出厂系统上&…...

掌握谈判技巧,达成双赢协议

在当今竞争激烈且合作频繁的社会环境中,谈判成为了我们解决分歧、谋求共同发展的重要手段。无论是商业合作、职场交流,还是国际事务协商,掌握谈判技巧以达成双赢协议都具有极其关键的意义。它不仅能够让各方在利益分配上找到平衡点&#xff0…...

Mysql - 存储引擎

一 MYSQL体系结构简介 MYSQL的体系结构可以分为四个层级,从上往下依次为: 1. 连接层: 最上层为客户端以及一些连接服务,包含连接操作,例如JAVA想要与MYSQL建立连接就需要用到JDBC,PHP语言与Python也可以连接到MYSQL&am…...

借助 CC-Link IE FB 转 Profinet 网关实现西门子 PLC 接入三菱 PLC 系统的解决策略

我们公司自动化生产线上,原有的控制系统采用三菱 PLC 通过 CC-Link IEFB 网络进行通信和控制。后来随着企业生产规模的扩大和对自动化系统集成度要求的提高,需要将部分设备与新引入的西门子 PLC 控制系统相连接,而西门子 PLC 使用 ProfiNet 协…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...