LaoCat带你认识容器与镜像(一)

news2024/9/25 15:27:51

准备更新一个容器与镜像相关的系列,从Docker到K8s的入门再到实际项目进阶应用,这里感谢好朋友泽鹏,是他让我结识容器与镜像;也感谢上家公司菲恩曼,是它给了我去学习、实践的机会;最后感谢翼哥,一位纯技术人,在曼给了我们很大的帮助和启发。

本章内容

认识Docker、Docker的核心价值、Docker与虚拟机比较、Docker核心概念与安装配置。

一、认识Docker

Docker是基于Go语言实现的开源容器项目,于2013年年初诞生,官网Docker: Accelerated, Containerized Application Development。

Docker通过对应用的封装、分发、部署、运行等生命周期进行管理,如Docker官网所示Develop faster. Run anywhere.(开发速度更快、到处运行),可以说Docker为应用的开发、运行和部署提供了“一站式”的实用解决方案。

Docker基于LXC,优化容器的使用体验,使用户无需关注底层的操作,可以更简单明了的操作和管理容器,Docker通过引入分层文件系统构建和高效的镜像机制,使得应用的迁移难度大幅降低,操作Docker容器就像操作应用自身一样简单。

我们可以将Docker理解为码头存放的“集装箱”,每个“集装箱”(容器)内运行着一个应用,不同“集装箱”(容器)相互隔离,“集装箱”(容器)之间也可以通过网络互相通信,当然你也可以把“集装箱”(容器)当做应用本身。

二、Docker的核心价值

传统部署一个Java项目(Mysql+Redis+Tomcat+JDK),首先需要在服务器上部署JDK、然后下载对应服务(指Mysql、Redis等)的二进制安装包,再安装其对应的依赖、然后安装服务本身,配置每个服务的参数,最后安装Tomcat,将项目本地打包,上传到服务器上,放入对应Tomcat运行目录,可以想象,步骤繁琐且不易维护,稍有一个步骤错误,就可能需要重新对一些服务进行二次安装、同时随着应用越来越多,事情会越来越难以处理,更加让人恶心的是,一旦需要对服务器进行迁移,上述所有的工作都需要再次执行一次或多次,这些繁琐无趣的“体力活”,极大的降低了工作效率,因为这些应用与服务都是直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。

Dokcer提供容器来打包应用,解耦应用和运行平台,意味着上述的情景发生时,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台,这将降低很多风险、节省大量的宝贵时间,最让开发和运维人员开心的莫过于,一次创建和配置,之后可以在任意地方、任何时间让应用正常运行,而Docker就是解决该问题的一把好手。

  • Docker拥有更快的交付和部署。

使用Docker可以让开发人员快速的构建一套标准的开发环境,开发测试完成后,测试人员和运维人员完全可以使用该环境来快速上线保证无缝运行。Docker可以快速创建、删除容器,可以使项目实现快速迭代且大量节约部署时间。

  • 更高效的资源利用。

Docker容器的运行不需要额外的虚拟化管理程序的支持,内核级虚拟化可以实现更高的性能,同时对资源的额外需求很低。

  • 更好的迁移和拓展。

Docker容器几乎可以在任何平台上运行,包括物理机、虚拟机、公有云、私有云、自己的电脑等等,同时支持主流的操作系统发行版本。

  • 更简单的更新管理。

使用Dockerfile,只需要小小的配置修改,就能够替代以往大量的更新工作,并且所有的修改都以增量的方式被分发和修改,从而更容易的实现自动化高效管理容器。

三、Docker与虚拟机比较
特性容器虚拟机
启动速度秒级别分钟级别
性能接近原生较差
内存代价很小较多
硬盘使用一般为MB一般为GB
运行密度单机支持上千个容器一般几十个
隔离性完全隔离完全隔离
迁移性一般
四、Docker核心概念
  • 镜像(image)

Docker镜像类似安装Win10、Win11系统的镜像,可以理解它为一个只读模板,一个镜像可以包含一个基本的操作系统环境,里面仅仅安装了Maven应用程序,可以把它称为一个Maven镜像。

镜像是创建Docker容器的基础,通过版本管理和增量的文件系统,Docker提供了一套非常简单的机制来创建和更新现有的镜像,甚至可以直接从网上下载一个已经做好的应用镜像并直接使用。

  • 容器(container)

Docker容器类型一个轻量级的沙箱,Docker利用容器来运行和隔离应用,容器是从镜像创建的应用运行实例,可以对其进行启动、开始、停止、删除、查看日志等操作,这些容器彼此相互隔离,不可见。

可以把容器看做一个简易版的Linux系统环境以及运行在其中的应用程序应用程序打包而成的盒子。

  • 仓库(repository)

Docker仓库类似于代码仓库,它是Docker集中存放镜像的地方。

Docker仓库分为公开仓库和私有仓库,Docker提供官方镜像仓库地址,https://hub.docker.com/,当然国内也有不少云厂商提供的仓库资源,例如阿里云容器镜像服务等;当然,Docker也支持用户在本地网络或公有云创建自己的私有仓库,用户可以在自己的私有仓库中找到自己上传的镜像文件。

※ 镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可用层。

五、安装配置

服务器版本ubuntu20.4。
在这里插入图片描述

官网提供的镜像源国内下载极其不稳定且速度慢,官网安装方式Install on Linux | Docker Documentation,根据自身系统选择对应安装教程即可,本文推荐下述方式安装。

访问DaoCloud | Docker 极速下载。
在这里插入图片描述

执行该命令,等待安装完毕即可,安装完毕后可执行docker version查看docker版本信息。
在这里插入图片描述
配置国内镜像源,如不配置会导致下载某些镜像失败或速度过慢的情况,这里推荐配置阿里云镜像加速,我们打开阿里云,登录以后打开控制台。
在这里插入图片描述
添加快捷入口,搜索“容器镜像服务”,进行添加。
在这里插入图片描述
添加后点击进入,选择镜像工具,镜像加速器。
在这里插入图片描述
这时即可根据对应系统的操作文档进行操作。
在这里插入图片描述
我这里已经配置过就不展示配置过程了,配置后如图。
在这里插入图片描述

到这里我们的Docker就安装配置完成了。

※ 本文安装都是基于root用户安装,如非root用户安装,注意权限问题。

该系列不定期更新,创作不易,希望大家帮忙点赞转发,不甚感谢,另今日是2022年12月31日,作为年末的最后一天,LaoCat在这里祝大家在新的一年里砥砺前行,硕果累累。

参考文献:
《Docker技术入门与实践》 第2版
《Docker技术入门与实践》 第3版

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统下at任务调度机制

Linux系统下at任务调度机制 基本介绍 at命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。默认情况下,atd 守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果…

深入理解计算机系统_可重定位目标文件的格式---elf格式

本篇笔记记录可重定位目标文件的格式— elf格式,也是《深入理解计算机系统》第7章的内容。了解这些内容,对我们很有帮助,比如代码排错,可以深入了解C/C 实现原理。 分别介绍如何得到可重定位目标文件及其格式。 2.1 如何得到可重…

操作系统~Linux~线程的互斥,mutex互斥锁的使用及其原理

1.一些基本概念 1.临界资源:凡是被线程共享访问的资源都是临界资源(多线程、多进程打印数据到显示器,显示器就是临界资源) 2.临界区:代码中访问临界资源的代码(在代码中,…

kotlin学习笔记之注解与反射

一、声明并应用注解 一个注解允许你把额外的元数据关联到一个声明上。然后元数据就可以被相关的源代码工具访问,通过编译好的类文件或是在运行时,取决于这个注解是如何配置的。 1、应用注解 在kotlin中使用注解的方法和java一样。要应用一个注解&#xf…

如何通过3个月自学成为网络安全工程师!

前言: 趁着今天下班,我花了几个小时整理了下,非常不易,希望大家可以点赞收藏支持一波,谢谢。 我的经历: 我 19 年毕业,大学专业是物联网工程,我相信很多人在象牙塔里都很迷茫&…

Pycharm配置关于pyside6的外部工具

文章目录一、前言二、Pycharm配置1、designer.exe(1)打开Pycharm的设置(2)相关参数(可复制粘贴)2、Pyside6-uic.exe(1)设置(2)相关参数(可复制粘贴…

Java--抽象类和接口的区别

今天是22年最后一天了, 写篇博客记录一下吧, 这一年发生了很多事情, 也学到了很多知识, 后面要继续加油啊, 大家也要加油啊, 米娜桑. 目录 概述 区别 1. 定义关键字不同 2. 继承或实现的关键字不同 3. 子类扩展的数量不同 4. 属性访问控制符不同 5. 方法控制符不同 6.…

python互联网程序设计GUI程序设计和网络程序设计(人机互动聊天软件)

1.项目意义 1、了解网络的结构; 2、了解网络传输协议; 3、掌握基本的网络编程方法。 2.总体设计 使用 TCP 协议实现人机聊天互动,程序具有服务端和客户端: (1)必备功能&#xff1…

Java财务在线咨询网站系统财务咨询网

简介 财务咨询网站,可以咨询公司代办,代理记账等一系列的财务问题的资讯服务网站 演示视频 https://www.bilibili.com/video/BV1T54y1H7Ar/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 角色 管理员客服注册用户游客 技术…

Spring之DI入门案例

目录 一:DI入门案例实现思路分析 1.要想实现依赖注入,必须要基于 IOC 管理 Bean 2.Service 中使用 new 形式创建的 Dao 对象是否保留 ? 3.Service 中需要的 Dao 对象如何进入到 Service 中 ? 4.Service 与 Dao 间的关系如何描述 ? 二&#xff1…

(Qt) cmake编译Qt项目

文章目录前言环境cmake基础预备的项目代码文件资源路径demo.promain.cppres.qrcmywidget.cppmywidget.hmywidget.ui运行效果CMake文件资源路径CMakeLists.txt生成与构建END前言 通常我们在编写qt的时候都是在Qt creator中。而如何在VS Code中编写qt就是本文需要解决的问题 环…

顺序表 —— 初始化、销毁、打印、增加、删除、查找、修改

1.何为线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直…

zotero导出pdf

今天老师给我改论文的时候布置了一个任务,让我把所有论文的pdf按格式打包发给她。可是之前我用zotero的时候都是在线保存的,有些是没有pdf的,怎么办?而且就算有pdf,他们的命名格式也五花八门,难道一个个手改…

kafka 消息日志原理 指定偏移量消费 指定时间戳消费

Kafka 日志详解 Apache Kafka日志存储在物理磁盘上各种数据的集合,日志按照topic分区进行文件组织,每一个分区日志由一个或者多个文件组成。生产者发送的消息被顺序追加到日志文件的末尾。 如上图所述,Kafka主题被划分为3个分区。在Kafka中&…

vscode使用跳板机(密钥)进入内网并连接内网中其它机器(密码)

经过简单测试 1、不能像xshell一样选择服务器的密钥登陆,只能通过将本机的公钥传到服务器上 2、不能使用本地socket5做代理登录 3、不能使用系统代理登录 一、使用密钥连接到跳板机 1、内网穿透 2、将本机公钥上传到服务器上 1)建立密钥对 无论是win…

redis集群 mac安装

1.安装redis mac环境用brew install安装 brew install redis 安装好后默认配置启动单点服务 redis-server 注:brew默认程序安装在/usr/local/Cellar目录下 /usr/local/Cellar/redis 默认配置文件在 /usr/local/etc/redis.conf 2.创建配置文件 准备创建6个节…

谣言检测数据集

1 PHEME-R 这是一个在PHEME FP7项目的新闻学用例中收集和注释的数据集。这些谣言与9个不同的突发新闻相关。它是为分析社交媒体谣言而创建的,包含由谣言推文发起的推特对话;对话包括对这些谣言推文的回应推文。这些推文已经被注解为支持度、确定性和证…

VS2012安装教程

我要学只有我们两个人懂得C语言。 安装包:https://pan.baidu.com/s/1YR7Xk9Zlv7zQWCsERdVgIQ [提取码]:stvi 1、右键以管理员身份运行 “vs_ultimate.exe” 2、编辑软件安装位置,然后点击同意许可,之后点下一步即可! 3…

mongoDB聚合查询

管道 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。 聚合管道操作 可参考菜鸟文档:菜鸟文档 命令 功能描述 $project指定输出…

shell第四天作业——流程控制之循环

题目 一、for创建20个用户,用户前缀由用户输入,用户初始密码由用户输入。 二、for循环ping测试指定网段的主机,网段由用户输入。 三、使用for/while实现批量主机root密码的修改 一、for创建20个用户,用户前缀由用户输入&#x…