最近在盘gitlab.0.先review了一下docker
# 正文
本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的知识就都写,不一定一直说gitlab:随时跑题、跑完就回来、差不多就结束文章,只要帖子里有点儿东西就行。
要说盘gitlab,没有个环境用来练习是很难的,或者说都不会搭建环境,那就是没根儿。所以怎么搭建环境呢?公司的这个是2个docker容器,一个gitlab实例的,一个nginx的。好了,开始第一次跑题,说一下docker。docker一词的英文原意是码头工人、码头装卸工[e1],所以想先从单词原意入手得到个感性认识是没大有戏了。看看官网docker.com[e2],说docker是个平台,用来开发、移动、运行应用程序的,原话是:an open platform for developing, shipping, and running applications。当然优点必须很多。
docker这个平台是通过一个叫“容器”的东东提供打包和运行应用程序的环境。“容器”一词对应的英文是“container”,容器里已经包含了应用运行所需要的东西,所以就不用再依赖宿主机的了,原话是:Containers are lightweight and contain everything needed to run the application, so you don't need to rely on what's installed on the host。下一句是You can share containers while you work, and be sure that everyone you share with gets the same container that works in the same way。就是说,想要把开发成果部署在不同的环境,那就在不同的环境部署一下容器;如此,不同环境部署的开发成果就是一样的,避免一些类似“我这里能运行啊,你用的那个环境有问题吧”的拉扯。
比如我们可以把一个系统拆成很作组件:前端、数据库、底层服务等,一个组件做程一个容器;每个组件是一个独立的进程,它们在自己的、独立的环境中运行,和宿主机上别的东西隔离。实际上,通过vmware或pve这种平台在一套硬件资源上安装不同的虚拟机进而部署不同的应用也有这个效果;那么相比虚拟机,使用容器有什么好处呢?操作系统本身是有重量的:一个什么应用都不运行的操作系统也要消耗一定的磁盘、内存以及CPU算力,这算是一种“overheads”[e3];而容器技术就可以节省这些“overheads”,同时带来的一个好处就是重启时更快。我们看docker的图标很像一个载着很多集装箱的、鲸鱼形状的轮船[e4],大概就是把轮船的运力比作硬件资源、把容器比作集装箱吧。docker官网的说法更好懂:
接下来是我读docker官网文档时记录的一些笔记,我是用过一点儿docker了,觉得写成这个程度自己能看懂;但不一定对初识docker的人那么友好;所以,觉得不好懂就去docker.com上的文档吧,毕竟再好的翻译也不如原文。
/* 私房docker 笔记,开始 */
Docker是CS架构的,Docker Client给Docker Daemon发消息,然后Docker Daemon干创建容器、运行重启、部署容器这样的重活儿。Docker的前后端可以在同一台设备上,也可以在不同的设备上,它们通过一个REST API通讯,REST API通过UNIX套接字实现(本地or网口)。还有一个docker客户端叫Docker Compose,Docker Compose可以lets you work with applications consisting of a set of containers,就是把一堆容器的配置按语法写到文件里,然后Docker Compose就可以根据配置一次启动若干容器。
Docker Daemon名为dockerd[e5],它监听上文说到的REST API请求,然后管理像images、containers、networks、volumes这些Docker objects。而且,Docker Daemon还可以和其它的Docker Daemon服务交互。Docker Client就是我们以后会经常敲的docker命令,这是和Docker Daemon通讯的最基础的方式。比如我们从bash上执行了一个docker run <container-id>,以我的环境为例[e6],就是可执行程序/usr/bin/docker给dockerd进程发消息,然后让dockerd干活儿。
Docker Desktop是一个可以安装在Mac、windows或者linux系统上的程序,有这个就可以从办公电脑上创建并分享容器化的应用和微服务了。Docker Desktop包含了:
Docker daemon、Docker client、Docker Compose、Docker Content Trust、Kubernetes以及Credential Helper.
Docker registry是保存docker镜像的地方,Docker Hub是一个公开的Docker registry,所有人都可以从Docker Hub上查找并使用镜像。当执行docker pull或者docker run命令时,Docker就会从配置文件里的Docker registry拉取镜像;当然,也可以push镜像。
上边说到过Docker objects,包含镜像、容器、networks、volumes、plugins以及其它对象。挨个说说吧。镜像,images,是一个包含了创建容器命令的只读模板。通常,镜像是基于别的镜像来制作的,比如我们可以从docker hub上拉取ubuntu的镜像,安装上阿帕奇的web server和自己的应用、部署上自己的配置,然后打成新的镜像。dockerfile就是创建镜像时使用的,里面包含了一个创建镜像、运行镜像必要步骤的指令;原句是To build your own image, you create a Dockerfile with a simple syntax for defining the steps needed to create the image and run it;然后紧跟一句“Each instruction in a Dockerfile creates a layer in the image”,所以我觉得这里说的dockerfile里面保存的应该是“指令”,而不是字面上的“语法”。当修改了dockerfile并重新制作镜像时,Docker只会重建有修改的layer;这也是镜像/容器技术相比虚拟化技术更轻量、快速的原因之一。
说容器,它是一个可以运行的、镜像的实例:A container is a runnable instance of an image。可以创建、启动、停止、移动、删除容器。可以把容器连接到一个或多个网路,可以给容器挂载存储,还可以根据容器的当前状态创建新的image。
/* 私房docker 笔记,结束 */
好了,今天就这些吧。
# ENDNOTES
e1
e2.1
e2.2
e2.3
e3
e4
e5
e6
相关文章:
最近在盘gitlab.0.先review了一下docker
# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...
OA项目登录
导入依赖,下面的依赖是在这次OA登录中用到的 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sprin…...
verilogHDL仿真详解
前言 Verilog HDL中提供了丰富的系统任务和系统函数,用于对仿真环境、文件操作、时间控制等进行操作。(后续会进行补充) 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns,精度为1ps, //编译…...
基于http协议的天气爬虫
该系统将基于目前比较流行的网络爬虫技术, 对网站上的天气数据进行查询分析, 最终使客户能够通过简单的操作, 快速, 准确的获取目标天气数据。主要包括两部分的功能, 第一部分是天气数据查询, 包括时间段数…...
_STM32关于CPU超频的参考_HAL
MCU: STM32F407VET6 官方最高稳定频率:168MHz 工具:STM32CubeMX 本篇仅仅只是提供超频(默认指的是主频)的简单方法,并未涉及STM32超频极限等问题。原理很简单,通过设置锁相环的倍频系数达到不同的频率&am…...
C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序
一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样,它计算图中的最短路径。然而,Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面,Floy…...
AWS云计算概览(自用留存,整理中)
目录 一、云概念概览 (1)云计算简介 (2)云计算6大优势 (3)web服务 (4)AWS云采用框架(AWS CAF) 二、云经济学 & 账单 (1)定…...
1. npm 常用命令详解
npm 常用命令详解 npm(Node Package Manager)是 Node.js 的包管理工具,用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...
js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值
问: 现在tabData.value 接收到了后端返回的数据, [{text:人力,percentage:‘90’},{text:物品,percentage:‘20’},{text:物理,percentage:‘50’},{text:服务,percentageÿ…...
【Spring】@Size 无法拦截null的原因
问题复现 在构建 Web 服务时,我们一般都会对一个 HTTP 请求的 Body 内容进行校验,例如我们来看这样一个案例及对应代码。当开发一个学籍管理系统时,我们会提供了一个 API 接口去添加学生的相关信息,其对象定义参考下面的代码&…...
【Block总结】掩码窗口自注意力 (M-WSA)
摘要 论文链接:https://arxiv.org/pdf/2404.07846 论文标题:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制,旨在解决传统自注意力方法在…...
用 HTML5 Canvas 和 JavaScript 实现雪花飘落特效
这篇文章将带您深入解析使用 HTML5 Canvas 和 JavaScript 实现动态雪花特效的代码原理。 1,效果展示 该效果模拟了雪花从天而降的动态场景,具有以下特点: 雪花数量、大小、透明度和下落速度随机。雪花会在屏幕底部重置到顶部,形成循环效果。随窗口大小动态调整,始终覆盖…...
【cocos creator】【ts】事件派发系统
触发使用: EventTool.emit(“onClick”) 需要监听的地方,onload调用: EventTool.on(“onClick”, this.onClickEvent, this) /**事件派发*/class EventTool {protected static _instance: EventTool null;public static get Instance(): Eve…...
《探索鸿蒙Next上开发人工智能游戏应用的技术难点》
在科技飞速发展的当下,鸿蒙Next系统为应用开发带来了新的机遇与挑战,开发一款运行在鸿蒙Next上的人工智能游戏应用更是备受关注。以下是在开发过程中可能会遇到的一些技术难点: 鸿蒙Next系统适配性 多设备协同:鸿蒙Next的一大特色…...
CSS | CSS实现两栏布局(左边定宽 右边自适应,左右成比自适应)
目录 一、左边定宽 右边自适应 1.浮动 2.利用浮动margin 3.定位margin 4.flex布局 5.table 布局 二、左右成比自适应 1:1 1flex布局 table布局 1:2 flex布局 <div class"father"><div class"left">左边自适应</div><div class"r…...
acwing_3195_有趣的数
acwing_3195_有趣的数 // // Created by HUAWEI on 2024/11/17. // #include<iostream> #include<cstring> #include<algorithm>#define int long longusing namespace std;const int N 1000 50; const int MOD 1e9 7; int C[N][N]; //组合数signed mai…...
Liunx-搭建安装VSOMEIP环境教程 执行 运行VSOMEIP示例demo
本文安装环境为Liunx,搭建安装VSOMEIP环境并运行基础例子。 1. 安装基础环境 使用apt-get来安装基础环境,受网络影响可以分开多次安装。环境好的也可以一次性执行。 sudo apt-get install gcc g sudo apt-get install cmake sudo apt-get install lib…...
Git | git revert命令详解
关注:CodingTechWork 引言 Git 是一个强大的版本控制工具,广泛应用于现代软件开发中。它为开发人员提供了多种功能来管理代码、协作开发和版本控制。在 Git 中,有时我们需要撤销或回退某些提交,而git revert 是一个非常有用的命令…...
ASP.NET Core 中,Cookie 认证在集群环境下的应用
在 ASP.NET Core 中,Cookie 认证在集群环境下的应用通常会遇到一些挑战。主要的问题是 Cookie 存储在客户端的浏览器中,而认证信息(比如 Session 或身份令牌)通常是保存在 Cookie 中,多个应用实例需要共享这些 Cookie …...
Flyte工作流平台调研(五)——扩展集成
系列文章: Flyte工作流平台调研(一)——整体架构 Flyte工作流平台调研(二)——核心概念说明 Flyte工作流平台调研(三)——核心组件原理 Flyte工作流平台调研(四)——…...
【AUTOSAR 基础软件】软件组件的建立与使用(“代理”SWC)
基础软件往往需要建立一些“代理”SWC来完成一些驱动的抽象工作(Complex_Device_Driver_Sw或者Ecu_Abstraction_Sw等),或建立Application Sw Component来补齐基础软件需要提供的功能实现。当面对具体的项目时,基础软件开发人员还可…...
java通过ocr实现识别pdf中的文字
需求:识别pdf文件中的中文 根据github项目mymonstercat 改造,先将pdf文件转为png文件存于临时文件夹,然后通过RapidOcr转为文字,最后删除临时文件夹 1、引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId&g…...
Git 命令代码管理详解
一、Git 初相识:版本控制的神器 在当今的软件开发领域,版本控制如同基石般重要,而 Git 无疑是其中最耀眼的明珠。它由 Linus Torvalds 在 2005 年创造,最初是为了更好地管理 Linux 内核源代码。随着时间的推移,Git 凭借…...
Docker的安装和使用
容器技术 容器与虚拟机的区别 虚拟机 (VM) VM包含完整的操作系统,并在虚拟化层之上运行多个操作系统实例。 VM需要更多的系统资源(CPU、内存、存储)来管理这些操作系统实例。 容器 (Container) 容器共享主机操作系统的内核,具…...
Flink系统知识讲解之:Flink内存管理详解
Flink系统知识讲解之:Flink内存管理详解 在现阶段,大部分开源的大数据计算引擎都是用Java或者是基于JVM的编程语言实现的,如Apache Hadoop、Apache Spark、Apache Drill、Apache Flink等。Java语言的好处是不用考虑底层,降低了程…...
使用JMeter模拟多IP发送请求!
你是否曾遇到过这样的场景:使用 JMeter 进行压力测试时,单一 IP 被服务器限流或者屏蔽?这时,如何让 JMeter 模拟多个 IP 发送请求,成功突破测试限制,成为测试工程师必须攻克的难题。今天,我们就…...
【Ubuntu与Linux操作系统:六、软件包管理】
第6章 软件包管理 6.1 Linux软件安装基础 Linux的软件包是以二进制或源码形式发布的程序集合,包含程序文件和元数据。软件包管理器是Linux系统的重要工具,用于安装、更新和卸载软件。 1. 常见的软件包管理器: DEB 系统(如Ubunt…...
【数据结构-堆】力扣1834. 单线程 CPU
给你一个二维数组 tasks ,用于表示 n 项从 0 到 n - 1 编号的任务。其中 tasks[i] [enqueueTimei, processingTimei] 意味着第 i 项任务将会于 enqueueTimei 时进入任务队列,需要 processingTimei 的时长完成执行。 现…...
【前端动效】原生js实现拖拽排课效果
目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示,页面左侧有一个包含不同课程(如语文、数学等)的列表,页面右侧…...
C#使用OpenTK绘制3D可拖动旋转图形三棱锥
接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default//…...
诸暨做网站广告的电话/性价比高seo排名优化的
MySQL的官方地址:https://www.mysql.com/社区最新版本:5.7.18有两种下载格式:Installer和Zip两种以zip格式简单介绍:将压缩包解压后内容复制到所需目录(如:D:/Program Files/mysql )mysql :the MySQL command-line tool 命令行工具…...
金融网站如何做设计/网站建设方案设计书
1.目录结构boot/ 目录下包括三个汇编程序,其中包括磁盘引导程序 bootsects.s、获取BIOS中参数的 setup.s汇编程序和32位运行启动代码head.s汇编程序。这三个汇编程序完成了把内 核从快射别上引导加载到内存的工作,并对系统配置参数进行探测ÿ…...
wordpress页面的template/搜索百度下载安装
转自http://siqun.blog.163.com/blog/static/213496001201341231121720/ 每个进程各自有不同的用户地址空间,任 何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1…...
武汉做网站冰洁找到冰洁工作室/网站软件下载
变量的赋值 一个变量声明后,可以在任何时候对其赋值。赋值的语法是: <变量> <表达式>; 其中“”叫“赋值符”,它的作用是把右边的值赋给左边的变量。转载于:https://www.cnblogs.com/happyty/archive/2012/05/26/2519391.html...
专门做影评的网站/百度搜索关键词排名查询
http://codevs.cn/problem/1409/ (题目链接) 题意 给出n个三维的导弹,每次拦截只能打x,y,z严格上升的若干个导弹,求最多能一次拦截下多少个导弹,以及最少拦截几次将所有导弹全部拦截。 Solution 第一问直接排序后n的dp…...
哪个网站可以做微信推送/微博指数
Silverlight 1.0的时候就有了这个Demo ,当时一定很轰动吧: 另外一个改进版本的demo: http://wintellect.com/silverlight/pageturndemo/ 作者文章...