Docker入门篇(一)

Docker入门篇(一)

插播!插播!插播!亲爱的朋友们,我们的Cmake/Makefile/Shell这三个课程上线啦!感兴趣的小伙伴可以去下面的链接学习哦~

构建工具大师-CSDN程序员研修院

一、引言

随着云计算的兴起,应用部署和管理变得愈加复杂。传统的应用程序通常需要在特定的操作系统和硬件环境中运行,这导致了部署和管理上的困难。为了解决这一问题,容器化技术应运而生。其中,Docker作为一种轻量级、高效的容器化解决方案,受到了广泛的关注和应用。

二、Docker简介

什么是Docker呢?想象一下,你在一家大型餐厅工作,这里需要准备各种各样的菜看。Docker就像是餐厅里的一套高效的食品容器系统。

首先,每道菜肴需要特定的食材和烹饪方法,就像不同的软件应用需要特定的程序和运行环境。在传统的方式中,你可能需要为每种菜肴准备一个单独的厨房,这既费时又占空间。但是,如果使用Docker,你就可以为每种菜使用一个专门的容器。这些容器都在同一个厨房里 (也就是同台服务器上),但彼此完全独立,互不干扰。

这些容器就像是预先准备好的食品盒,每个盒子里都有制作一道特定菜肴所需的所有食材和调料。当你需要准备某道菜时,你只需要拿出对应的食品盒,里面的一切都已经准备好了,你可以直接开始烹饪。这就是Docker镜像和容器的概念:镜像是包含应用及其依赖环境的模板,而容器是这个模板的运行实例。

使用Docker,你可以确保每道菜看都在一个完全控制和标准化的环境中准备,无论是在你的餐厅还是在别的地方。这保证了软件应用的一致性和可移植性,就像你可以确保每次都能以同样的方式准备出一致的菜看一样。

总而言之,Docker通过提供一个标准化、轻量级的容器环境,使得部署和运行应用程序就像在餐厅里使用预先准备好的食品盒一样简单和高效。这大大简化了软件开发和运维的工作,就像一个高效的食品容器系统简化了餐饮服务一样。

Docker是一个开源项目,提供了一种封装应用程序及其依赖的容器化机制。它允许开发者将应用程序及其依赖打包为一个独立的容器,从而实现在不同环境中的一致部署和管理。Docker容器使用轻量级的隔离机制,使得应用程序可以在不同的环境中具有一致的运行环境,从而简化了开发和部署的过程。

三、Docker的优点

要明白docker有哪些优点,首先要追溯到为什么会产生docker这个工具。在当前工作流程中我们经常会遇到这些问题,应用开发,测试,部署,各种库的依赖纷繁复杂,再加上版本变化很快,版本之间存在差异,经常出现在开发运行环境正常,而到测试环境和线上环境就出问题的现象,程序员们饱受此苦,因此为了改变这个状况,此时就有人提出,如果做一个虚拟的容器,让不同应用程序都能运行其中,将它们需要的依赖环境整体打包,以便在不同的环境上移植后还能提供一致的运行环境,彻底将程序员们解放出来。

不过就有人会想,听这个描述,好像虚拟机就能解决这个问题。将应用还有所依赖的环境部署到虚拟机中,然后做个快照,直接部署虚拟机不就可以了吗?

可是你要知道虚拟机这个家伙笨重如牛,体积很大动不动就是以G为单位的大小,因为它里面要运行一个完整的操作系统,所以跑起来特别的费劲,慢就不说了,还非常的占资源,一台机器上跑不了几台虚拟机就能把性能拖垮了,而docker却是一个非常轻量级的虚拟容器,只提供一个运行环境,不用运行一个操作系统,所有的容器中的系统内核还是和外面的宿主机共用的,这样就可以批量复制很多容器,轻便还快捷。

因此docker的出现打破了过去的观念,透过镜像将运作程式所需要的系统环境,由下到上的打包,达到应用程序跨平台间的无缝接轨运作。这也是我们为什么要使用docker的原因之一,不光这样,docker还可以快速创建容器,快速柣代应用程序,并让整个过程全程可见,docker容器很轻很快,容器的启动时间是秒级的,大量的节约了开发,测试,部署的时间。

因此将虚拟机和docker体系结构比较,这种体系的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好。

并且docker容器几乎可以在任意的平台上运行,包括物理机,虚拟机,个人电脑,服务器等。这种兼容性可以让用户把一个程序从一个平台直接迁移到另外一个。使用docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

四、Docker的三要素

要想熟练使用docker,就需要明白docker的三要素,在docker中包含三个要素架构:

(1)镜像images:docker镜像就是一个只读的模板,镜像可以用来创建docker容器。Docker提供了一个很简单的机制来创建镜像,就是通过dockerfile创建新的镜像的。用户甚至可以直接从其他人那里下载一个已经做好的镜像直接使用。

(2)容器containers:docker利用容器来运行应用,容器是从镜像创建的运行实例。它可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。你可以把容器看作一个简易版本的linux环境和运行在其中的应用程序。

(3)仓库registry:也就是docker仓库,仓库是集中存放镜像文件的场所,有时候会把仓库和仓库和仓库注册服务器混为一谈,并不严格区分。实际上,仓库注册服务器往往上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像都有不同的标签。仓库分为公开仓库和私有仓库两种形式,当然,用户可以在本地网络内创建一个私有仓库,当用户创建了自己的镜像之后就可以使用push命令将它上传到共有或者私有仓库,这样下次在另外一个机器上使用这个镜像的时候,只需要从仓库上pull下来就可以了。这里还有点跟git命令有异曲同工之处。

五、Docker的工作原理

要想知道docker如何工作,首先得知道Docker的架构由哪些组件组成。

其中,Docker Daemon是Docker架构的主体部分,它提供了Server的功能,

Docker架构中的其他主要模块包括:

首先是Docker Client,它作为用户与Docker交互的命令行工具或API。Docker daemon一般在宿主机的后台运行,它可以用来作为服务端接收来自客户端的指令,并处理客户端提供的一系列可执行命令

Docker Registry它用于存储和分发Docker镜像的中央仓库。公有的Docker Registry包括Docker Hub,用户可以通过互联网访问获取容器镜像。同时,Docker也支持构建本地私有的Docker Registry,以在内网环境中获取容器镜像。

另外用于存储Docker镜像和容器的文件系统总叫做Graph。它包含了镜像的各个层以及容器的文件系统变化。

此外,Docker架构还包括Driver、libcontainer和Docker container等组件,它们在Docker的运行过程中也发挥着重要的作用,这里就不做详细介绍。

总结起来,Docker的架构就是由这些多个组件组成。它的工作流程大概Docker使用客户端-服务器(C/S)架构模式,通过远程API来管理和创建Docker容器,Docker容器通过Docker镜像创建,镜像和容器的关系类似于面向对象编程中的对象和类。Docker后台守护进程Docker daemon一般在宿主机的后台运行,它可以用来作为服务端接收来自客户端的指令,并处理客户端提供的一系列可执行命令。

六、Docker的安装

(1)首先需要先确保系统是否已经更新到了最新版本,并安装了一些必要的工具。在终端执行如下命令。

sudo apt update
sudo apt upgrade
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

(2)安装完毕后,就可以添加docker官网的GPG密匙,执行如下命令:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

(3)添加密匙后,再添加docker官方存储库,执行如下命令

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

(4)最后就可以安装docker engine,执行以下命令:

sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io

这个时候docker应该就被我们成功安装好了。这是我们可以执行以下命令查看一下docker是否安装成功:

docker --version

七、配置阿里云镜像加速器

下载完docker后,还有一个重要的步骤需要注意,因为我们默认pull的docker镜像是从Docker Hub来下载的,由于其服务器在国外,速度会比较慢,因此我们可以配置成国内的镜像仓库,这样可以加速镜像的上传和下载,比如说阿里云,网易云等。这时就需要我们配置docker镜像加速器。这里我以阿里云为例,演示如何配置这个镜像加速器。

使用阿里云提供的镜像加速器首先需要注册一个阿里云的账号,这里我就不多做讲解了,我已经有一个账号了,在浏览器搜索阿里云服务官网,进入其官网平台下,搜索容器镜像服务,选择立刻开通。

进入到这个镜像工具后,点开左侧列表的镜像加速器,可以看到会提供很多命令,直接将这些命令在终端执行就可以了。

这个时候在/etc/docker目录下就会出现一个名叫daemon.json的文件,并将这个镜像加速器的地址配置为https://pziibza3.mirror.aliyuncs.com

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://pziibza3.mirror.aliyuncs.com"]}EOF

然后重新加载配置文件,可以使用以下命令:

sudo systemctl daemon-reload

最后重启docker服务,可以使用以下命令:

sudo systemctl restart docker

这样就成功配置了docker的镜像加速器。如果想添加国内镜像源,我们可以打开这个文件,添加docker国内镜像源,执行以下这个命令:

sudo vim /etc/docker/daemon.json

然后添加以下这些内容:

{"registry-mirrors" : ["http://registry.docker-cn.com","http://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"],"insecure-registries" : ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],"debug" : true,"experimental" : true}

添加成功后,就可以成功在国内镜像仓库里加速上传下载仓库了。一切准备工作准备就绪,就可以开始执行你想执行的任何docker命令,或者制作你想要的镜像了。

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

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

相关文章

Chatgpt的崛起之路

Chatgpt的崛起之路 背景与发展历程背景发展历程 技术原理第一阶段&#xff1a;训练监督策略模型第二阶段&#xff1a;训练奖励模型第三阶段&#xff1a;采用强化学习来增强模型的能力。 国内使用情况及应用的领域面临的数据安全挑战与建议ChatGPT获取数据产生的问题数据泄露问题…

【牛客刷题】笔试选择题整理(day1-day2)

每天都在进步呀 文章目录 1. 小数求模运算2. 进程的分区&#xff0c;这里说的不是JVM的分区。进程中&#xff0c;方法存放在方法区。3. 访问权限控制4. 继承与多态5. 与equals()6. 类加载顺序7. super()与this()7.1 super7.1.1 super调用父类构造方法7.1.2 super调用父类属性和…

(免费领源码)java#Springboot#mysql旅游景点订票系统68524-计算机毕业设计项目选题推荐

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

【C++】C++ 入门 — 命名空间,输入输出,函数新特性

C 1 前言2 命名空间2.1 概念引入2.2 开始使用2.3 投入应用 3 输入与输出3.1 基础知识3.2 开始使用3.3 注意局限 4 函数新特性4.1 缺省参数4.1.1 开始使用4.1.2 注意事项 4.2 函数重载4.2.1 开始使用4.2.2 如何实现 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下…

go-zero 全局异常处理-全局中间件

1、在主入口新增 package mainimport ("flag""fmt""go/application/internal/config""go/application/internal/handler""go/application/internal/middleware""go/application/internal/svc"manage "go/pk…

Hive常见问题汇总

Hive和Hadoop的关系 Hive 构建在 Hadoop 之上&#xff0c; HQL 中对查询语句的解释、优化、生成查询计划是由 Hive 完成的 所有的数据都是存储在 Hadoop 中 查询计划被转化为 MapReduce 任务&#xff0c;在 Hadoop 中执行&#xff08;有些查询没有 MR 任务&#xff0c;如&…

Linux使用二进制包安装MySQL

目录 一、软件包下载 二、上传软件包到Linux根目录 1、使用xftp将软件包上传到根目录 2、解压缩 三、准备工作 四、初始化软件 五、设置MySQL的配置文件 六、配置启动脚本 一、软件包下载 官网下载&#xff1a;MySQL :: Download MySQL Community Server 二、上传软件…

数学知识第三期 欧拉函数

前言 相信大家在高中的时候接触过欧拉函数&#xff0c;希望大家通过本篇文章能够进一步理解欧拉函数&#xff01;&#xff01;&#xff01; 一、什么是欧拉函数&#xff1f; 欧拉函数是一个在数论中用于描述特定正整数的互质数的概念。具体来说&#xff0c;对于一个正整数n&…

Spring扩展点在微服务应用(待完善)

ApplicationListener扩展 nacos注册服务&#xff0c; 监听容器发布事件 # 容器发布事件 AbstractAutoServiceRegistration#onApplicationEvent # 接收事件吗&#xff0c;注册服务到nacos NacosServiceRegistry#register Lifecycle扩展 #订阅服务实例更改的事件 NamingService#…

Python环境下基于机器学习的NASA涡轮风扇发动机剩余使用寿命RUL预测

本例所用的数据集为C-MAPSS数据集&#xff0c;C-MAPSS数据集是美国NASA发布的涡轮风扇发动机数据集&#xff0c;其中包含不同工作条件和故障模式下涡轮风扇发动机多源性能的退化数据&#xff0c;共有 4 个子数据集&#xff0c;每个子集又可分为训练集、 测试集和RUL标签。其中&…

文心一言 VS ChatGPT :谁是更好的选择?

前言 目前各种大模型、人工智能相关内容覆盖了朋友圈已经各种媒体平台&#xff0c;对于Ai目前来看只能说各有千秋。GPT的算法迭代是最先进的&#xff0c;但是它毕竟属于国外产品&#xff0c;有着网络限制、注册限制、会员费高昂等弊端&#xff0c;难以让国内用户享受。文心一言…

Django从入门到精通(一)

目录 一、Django环境搭建与命令 1.1、安装 1.2、命令行 创建项目 编写代码 运行 app概念 1.3、Pycharm创建项目 1.4、虚拟环境 创建虚拟环境 - 命令行 介绍 操作 基本问题 Pycharm 项目虚拟环境 django虚拟环境【安装django最新版本】 django虚拟环境【安装指…

文件包含漏洞长度截断

长度截断 文件漏洞的利用方式什么是长度截断通过实操理解00截断对版本要求更高一点&#xff0c;而长度截断则是利用了windows的系统漏洞&#xff0c;就是windows文件名&#xff08;就是文件名后缀之后&#xff09;之后如果有空格&#xff0c;或者是点都会被忽略掉&#xff0c;也…

【GitHub项目推荐--游戏模拟器(switch)】【转载】

01 任天堂模拟器 yuzu 是 GitHub 上斩获 Star 最多的开源 Nintendo Switch 模拟器 &#xff0c;使用 C 编写&#xff0c;考虑到了可移植性&#xff0c;该模拟器包括 Windows 和 Linux 端。 如果你的 PC 满足必要的硬件要求&#xff0c;该模拟器就能够运行大多数商业游戏&…

Leetcode 第 111 场双周赛题解

Leetcode 第 111 场双周赛题解 Leetcode 第 111 场双周赛题解题目1&#xff1a;2824. 统计和小于目标的下标对数目思路代码复杂度分析 题目2&#xff1a;2825. 循环增长使字符串子序列等于另一个字符串思路代码复杂度分析 题目3&#xff1a;2826. 将三个组排序思路代码复杂度分…

Jenkins上跑自动化项目,case出现错误时,导致项目运行时间过长,该如何处理?

1、方案一&#xff1a;Jenkins上调整 进入配置&#xff1a; 构建环境&#xff1a; 自行选择超时时间即可&#xff5e; 2、方案二&#xff1a;代码调整【python】 安装插件&#xff1a;pytest-timeout 选择一&#xff1a;装饰器用法&#xff1a;将单个测试用例标记为超时&…

Linux之安装配置CentOS 7

一、CentOS简介 CentOS&#xff08;Community Enterprise Operating System&#xff0c;中文意思是社区企业操作系统&#xff09;是Linux发行版之一&#xff0c;它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码&#xff0c…

Linux/Academy

Enumeration nmap 首先扫描目标端口对外开放情况 nmap -p- 10.10.10.215 -T4 发现对外开放了22,80,33060三个端口&#xff0c;端口详细信息如下 结果显示80端口运行着http&#xff0c;且给出了域名academy.htb&#xff0c;现将ip与域名写到/et/hosts中&#xff0c;然后从ht…

Procexp64.exe —— 强大的进程管理器

1&#xff0c;简介 Process Explorer 是一款增强型的任务管理器&#xff0c;你可以使用它方便地管理你的程序进程&#xff0c;能强行关闭任何程序。 除此之外&#xff0c;它还详尽地显示计算机信息&#xff1a;CPU、内存使用情况&#xff0c;DLL、句柄信息&#xff0c;很酷的…

redis-4 搭建redis集群

1.为什么需要redis集群&#xff1f; Redis 集群提供了高可用性、横向扩展和数据分片等功能&#xff0c;使得 Redis 能够应对大规模的数据存储和高并发访问的需求。以下是一些需要使用 Redis 集群的常见情况&#xff1a; 高可用性&#xff1a;通过在多个节点之间进行数据复制和…