Docker技术概论(2):Docker环境的搭建

Docker技术概论(2)
Docker环境的搭建

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/136359535
HuaWei:https://bbs.huaweicloud.com/blogs/422806

【介绍】:本文介绍Docker安装与配置。

在这里插入图片描述


上一节:《 Docker与虚拟化技术比较 | 下一节:《 Docker 中的基本概念


1. 概述

上一篇文章中,我们比较了两种不同的虚拟化技术——虚拟机 和 Docker。前者是基于硬件的虚拟化技术而后者则是基于系统的虚拟化技术。

Docker 是一个开源的应用容器引擎,允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。几乎没有性能开销,可以有效地利用系统资源。

Docker 的使用可以极大地简化应用的部署和管理过程,使得应用的分发、测试以及版本控制更加简单高效。随着云计算和微服务架构的普及,Docker 的重要性日益凸显,成为现代软件开发不可或缺的工具之一。

在开始正式使用Docker之前,我们需要现在一台电脑上安装Docker,安装Docker的首选是 Linux 环境,文本接下来将具体介绍Docker的安装过程。

2. 在Linux上安装Docker

本节以Ubuntu为例,介绍如何在Linux上安装Docker的。

2.1 当前版本Ubuntu系统上的安装

在最新的Ubuntu发行版上,可以直接使用apt工具安装Docker

sudo apt update
sudo apt install -y docker.io

安装完成后,你可以使用docker -v命令来检验是否安装成功

在这里插入图片描述

2.2 针对于比较旧的Ubuntu版本

对于某些较旧的Ubuntu版本或特定的发行版,Docker官方建议使用它们提供的存储库来安装,以确保获得最新的Docker版本和最新的安全更新。

这里介绍使用Docker官方存储库进行安装的步骤。

更新包列表

在安装Docker之前,首先要确保你的Ubuntu系统的软件包列表是最新的。使用以下命令更新:

sudo apt update
安装依赖包

Docker需要一些依赖包来正常运行。你可以使用以下命令安装这些依赖包:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG密钥

Docker官方提供了一个GPG密钥,用于验证其软件包的真实性。使用以下命令添加官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加Docker存储库

接下来,你需要将Docker存储库添加到Ubuntu系统中。这可以通过以下命令来完成:

echo "deb [arch=amd64 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
安装Docker

现在,你已经添加了Docker存储库,可以使用以下命令来安装Docker

apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

以上命令将安装Docker引擎和相关组件。

启动并启用Docker服务

安装完成后,你需要启动并启用Docker服务,以便它在系统启动时自动启动。使用以下命令执行这些操作:

sudo systemctl start docker
sudo systemctl enable docker
验证Docker安装

最后,你可以运行以下命令来验证Docker是否成功安装,并查看Docker版本信息:

docker -v

你将看到Docker版本信息的输出,表示Docker已成功安装在你的Ubuntu系统上。

在这里插入图片描述

3. 在Windows上安装Docker

在系统上,以一种完全可视化的方式完成安装。和常见的 Windows 软件安装相似,需要先在官网上下载安装包。Docker的官方网站地址为:https://www.docker.com/。

在这里插入图片描述

在这里插入图片描述

等待下载完成:

在这里插入图片描述

找到下载好的文件,双击运行安装程序:

在这里插入图片描述

选择相应配置,等待安装完成:

在这里插入图片描述

安装结束后,点击 “Close adn restart” 按钮将会强制重启计算机(而不是程序),因此如果你又其它重要工作需要先完成保存:

在这里插入图片描述

计算机重启后,当你第一次启动 Docker for desktop 时,将进入设置向导页面:

在这里插入图片描述

这里直接选择“Use recommended settings”(使用推荐的设置)即可。点击“Finish”按钮以完成初始设置。等待程序初始化完成后即可使用了:

在这里插入图片描述

4. 不要在MacOS上学习Docker

这里我打算介绍在MacOS上安装Docker,因为它是最晚兼容的一个平台,且安装过程基于与之前介绍的 WIndows Docker Desktop一样。

虽然目前Docker Desktop已经拓展到了 MacOS平台,但是后续很多功能都不会在该系统上操作。对于切图工作者来说,苹果推出的Mac系列产品拥有比较好的屏幕。但是对于敲命令为主的Docker工程师来说,这种东西完全是多余。并且Docker之后还需要学习K8s,很多东西都不是Mac能够干的,从生产看,Mac既不好用、也无法用到底。如果像进一步学习,乘早丢弃切图机,避免浪费时间。

Docker是基于Linux容器技术的,这意味着它在Linux环境下运行得最为自然,因此最理想的环境是Linux,这于是诸多服务器的标准环境。在MacOS上,Docker需要通过虚拟化技术(如HyperKit)来模拟Linux环境,这一额外的抽象层可能会导致性能损失,尤其是在资源密集型的应用场景中。

MacOS用户在使用Docker时可能会遇到文件系统性能问题。由于Docker容器需要通过虚拟化层访问Mac的文件系统,这可能会导致文件访问速度较慢,尤其是在大型项目或需要频繁读写文件的应用中。虽然Docker团队和社区一直在努力优化这方面的性能,但这仍然是MacOS上使用Docker时需要考虑的一个因素。

Docker Desktop for Mac的安装和运行还需要占用相对较多的系统资源,包括CPU和内存。对于那些资源有限的Mac用户来说,这可能会影响到其他应用程序的运行效率。

当然以上仅仅是一些建议,也可以选择在后续学习中踩坑,然后自行上社区寻早解决办法,不过这很费时间,并且不会产生任何额外收益。

5. 结论

随着技术的不断进步和开发环境的日益复杂化,Docker 作为一种高效、便捷的容器化技术,已经成为了软件开发和运维领域的重要工具。通过在不同的操作系统上安装和配置 Docker,开发者可以轻松地构建、分发和运行任何应用,极大地提高了开发效率和应用的可移植性。

尽管在 MacOS 上使用 Docker 存在一定的性能和资源限制,但这并不妨碍 Docker 成为跨平台应用开发和部署的强大工具。对于希望在 Linux 环境下获得最佳性能和体验的用户,Linux 仍然是首选的操作系统。然而,对于那些习惯于 Windows 或 MacOS 环境的用户,Docker 也提供了便捷的解决方案,使他们能够在熟悉的环境中利用 Docker 的强大功能。

总之,无论是在 Linux、Windows 还是 MacOS 上,Docker 都为软件的开发、测试和部署提供了前所未有的便利和效率,是现代软件工程师工具箱中不可或缺的一部分。随着 Docker 社区的不断成长和技术的不断进步,我们有理由相信,Docker 将继续引领软件开发和运维的未来趋势。

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

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

相关文章

【Javascript编程实操03】1、根据数字显示对应的星期2、输入月份,显示当月的天数

前言 1、根据数字显示对应的星期 代码: 实现效果: 2、输入月份,显示当月的天数 原理: 代码: 实现效果: 总结 前言 本次主要是针对Javascript阶段的switch的实操练习,共有2个实操。 1、…

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面,即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等,具体如下&…

磁盘分区配置开机自动挂载

客户提供的服务器 有1TB的磁盘需要手动挂载 首先查看一下磁盘设备 lsblk 可以看到vdb是新添加的磁盘 然后使用fdisk /dev/vdb 进行磁盘分区 新添加的磁盘只需要分一个区默认全部回车即可 然后使用lsblk查看一下磁盘设备 做好磁盘分区后需要做文件系统格式化 mkfs.ext4 /dev/vd…

SINAMICS V90 PN 指导手册 第5章 调试说明、调试 Jog、EPOS、速度调试

前几章介绍了V90 PN 系统的产品功能、技术数据、安装以及连接,从本章开始,重点介绍V90 PN的应用指导,本章介绍的主要内容是调试,包括调试说明、Jog模式下调试、基本定位器模式下(EPOS)调试以及速度模式(S)下调试。 调试说明 悬挂…

Window部署Jaeger

参考:windows安装使用jaeger链路追踪_windows安装jaeger-CSDN博客 下载:Releases jaegertracing/jaeger GitHub Jaeger – Download Jaeger 目录 1、安装nssm 2、安装运行 elasticsearch 3、安装运行 3.1部署JaegerAgent 3.2部署JaegerCollec…

Opencv实战(5)平滑处理与常见函数

平滑处理 Opencv实战: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 文章目录 平滑处理1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波 常见函数(1).createTrackbar()(2).SetMouseCallback() 图像的平滑处理是…

备战蓝桥杯---线段树基础1

引入:RMQ问题: 什么是RMQ? 显然,我们无法用前缀维护,因此,我们需要用到线段树的知识: 什么是线段树? 线段树是用一种树状结构存储一个连续区间信息的数据结构 下面我们用图解释用…

ARM简介

ARM:ARM是Advanced RISC Machine的缩写,意为高级精简指令集计算机。 英国ARM公司,2016年被软银创始人孙正义斥资320亿美元收购了。现在是软银旗下的芯片设计公司,总部位于英国剑桥,专注于设计芯片,卖芯片生…

两台电脑异地怎么共享文件?

在现代社会中,无论是个人用户还是企事业单位,都经常面临着跨地域的文件共享需求。由于各种限制和条件的限制,如网络环境、设备限制等,可能导致文件共享变得非常困难。本文将介绍一款名为【天联】的组网产品,通过它可以…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO(输入模式)寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器(输入模式相关) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

数字后端——DEF文件格式

文章目录 MACRO的不同orientationDEF中在macro orientation定义前需要留空格 MACRO的不同orientation DEF中在macro orientation定义前需要留空格 像下图中这种方向和分号之间没有空格的情况,就是有问题的格式。

构建一个基于Node.js的文件存储服务

随着现代web应用程序变得越来越复杂和功能强大,文件存储服务成为了许多应用的重要组成部分。在本篇博客中,我们将探讨如何构建一个基于Node.js的文件存储服务,让您可以轻松地上传、下载和管理文件。我们将利用Node.js的强大功能和模块来构建这…

苍穹外卖知识点总结(一)

简介 技术选型 展示项目中使用到的技术框架和中间件。 用户层:node.js Vue.js ElementUI 微信小程序 apache echarts 网关层:nginx 应用层:Spring Boot Spring MVC Spring Task httpclie…

2.26 Qt day4+5 纯净窗口移动+绘画事件+Qt实现TCP连接服务+Qt实现连接数据库

思维导图 Qt实现TCP连接 服务器端&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer>//服务器端类 #include<QTcpSocket>//客户端类 #include<QMessageBox>//消息对话框类 #include<QList>//链…

fordeal测评养号环境搭建:解决硬件、IP、浏览器等关键问题

Fordeal电商平台销售网点覆盖中东、欧美等多个国家和地区&#xff0c;其中中东市场是最重要的市场。 Fordeal主要为用户提供男女装、箱包及配饰、护肤彩妆、电子数码、运动用品等品类。 fordeal 支持多种语言、货币和支付方式。 1.点击Sign in进入登录界面。 2. 选择Register注…

第七篇:微信小程序的跳转页面

前提&#xff1a;建议还没学HTML、CSS、JavaScript、JSON、vue、Ajax的兄弟姐妹们&#xff0c;先去把这些基础补好过一遍&#xff0c;不然不好理解微信小程序 前面这一篇已经讲过一次<navigator>跳转页面的用法了&#xff0c;今天详细讲解一下 回顾&#xff1a; 小程序…

<网络安全>《60 概念讲解<第七课 网络模型OSI对应协议>》

1 OSI模型 OSI模型&#xff08;Open Systems Interconnection Model&#xff09;是一个由国际标准化组织&#xff08;ISO&#xff09;提出的概念模型&#xff0c;用于描述和标准化电信或计算系统的通信功能&#xff0c;以实现不同通信系统之间的互操作性。该模型将通信系统划分…

【笔记】:更方便的将一个List中的数据传入另一个List中,避免多重循环

这里是 simpleInfoList 集合&#xff0c;记为集合A&#xff08;传值对象&#xff09; List<CourseSimpleInfoDTO> simpleInfoList courseClient.getSimpleInfoList(courseIds);if(simpleInfoListnull){throw new BizIllegalException("当前课程不存在!");}这…

Ubuntu上Jenkins自动化部署Gitee上VUE项目

文章目录 1.安装NodeJS插件2.配置全局工具配置-NodeJS环境变量3.新建自由风格的软件项目任务4.配置General配置丢弃旧的构建配置参数化构建过程 5.配置源码管理6.构建触发器7.设置构建环境8.配置构建步骤9.配置构建后操作10测试构建 前文链接&#xff1a; Ubuntu上Jenkins自动…

使用 OpenCV 通过 SIFT 算法进行对象跟踪

本文介绍如何使用 SIFT 算法跟踪对象 在当今世界&#xff0c;当涉及到对象检测和跟踪时&#xff0c;深度学习模型是最常用的&#xff0c;但有时传统的计算机视觉技术也可能有效。在本文中&#xff0c;我将尝试使用 SIFT 算法创建一个对象跟踪器。 为什么人们会选择使用传统的计…