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

最近在盘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实例上&#xff0c;实例是别的同事搭建的。最近又又又想了解一下&#xff0c;而且已经盘了一些了&#xff0c;所以写写记录一下。因为这个事儿没太多的进度压力&#xff0c;索性写到哪儿算哪儿&#xff0c;只要是新了解到的…...

OA项目登录

导入依赖,下面的依赖是在这次OA登录中用到的 <!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.sprin…...

verilogHDL仿真详解

前言 Verilog HDL中提供了丰富的系统任务和系统函数&#xff0c;用于对仿真环境、文件操作、时间控制等进行操作。&#xff08;后续会进行补充&#xff09; 正文 一、verilogHDL仿真详解 timescale 1ns/1ps //时间单位为1ns&#xff0c;精度为1ps&#xff0c; //编译…...

基于http协议的天气爬虫

该系统将基于目前比较流行的网络爬虫技术&#xff0c; 对网站上的天气数据进行查询分析&#xff0c; 最终使客户能够通过简单的操作&#xff0c; 快速&#xff0c; 准确的获取目标天气数据。主要包括两部分的功能&#xff0c; 第一部分是天气数据查询&#xff0c; 包括时间段数…...

_STM32关于CPU超频的参考_HAL

MCU: STM32F407VET6 官方最高稳定频率&#xff1a;168MHz 工具&#xff1a;STM32CubeMX 本篇仅仅只是提供超频&#xff08;默认指的是主频&#xff09;的简单方法&#xff0c;并未涉及STM32超频极限等问题。原理很简单&#xff0c;通过设置锁相环的倍频系数达到不同的频率&am…...

C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序

一、弗洛伊德沃肖尔算法 Floyd-Warshall算法是图的最短路径算法。与Bellman-Ford算法或Dijkstra算法一样&#xff0c;它计算图中的最短路径。然而&#xff0c;Bellman Ford和Dijkstra都是单源最短路径算法。这意味着他们只计算来自单个源的最短路径。另一方面&#xff0c;Floy…...

AWS云计算概览(自用留存,整理中)

目录 一、云概念概览 &#xff08;1&#xff09;云计算简介 &#xff08;2&#xff09;云计算6大优势 &#xff08;3&#xff09;web服务 &#xff08;4&#xff09;AWS云采用框架&#xff08;AWS CAF&#xff09; 二、云经济学 & 账单 &#xff08;1&#xff09;定…...

1. npm 常用命令详解

npm 常用命令详解 npm&#xff08;Node Package Manager&#xff09;是 Node.js 的包管理工具&#xff0c;用于安装和管理 Node.js 应用中的依赖库。下面是 npm 的一些常用命令及其详细解释和示例代码。 镜像源 # 查询当前使用的镜像源 npm get registry# 设置为淘宝镜像源 …...

js:根据后端返回数据的最大值进行计算然后设置这个最大值为百分之百,其他的值除这个最大值

问&#xff1a; 现在tabData.value 接收到了后端返回的数据&#xff0c; [{text:人力,percentage&#xff1a;‘90’}&#xff0c;{text:物品,percentage&#xff1a;‘20’}&#xff0c;{text:物理,percentage&#xff1a;‘50’}&#xff0c;{text:服务,percentage&#xff…...

【Spring】@Size 无法拦截null的原因

问题复现 在构建 Web 服务时&#xff0c;我们一般都会对一个 HTTP 请求的 Body 内容进行校验&#xff0c;例如我们来看这样一个案例及对应代码。当开发一个学籍管理系统时&#xff0c;我们会提供了一个 API 接口去添加学生的相关信息&#xff0c;其对象定义参考下面的代码&…...

【Block总结】掩码窗口自注意力 (M-WSA)

摘要 论文链接&#xff1a;https://arxiv.org/pdf/2404.07846 论文标题&#xff1a;Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一种新颖的自注意力机制&#xff0c;旨在解决传统自注意力方法在…...

用 HTML5 Canvas 和 JavaScript 实现雪花飘落特效

这篇文章将带您深入解析使用 HTML5 Canvas 和 JavaScript 实现动态雪花特效的代码原理。 1,效果展示 该效果模拟了雪花从天而降的动态场景,具有以下特点: 雪花数量、大小、透明度和下落速度随机。雪花会在屏幕底部重置到顶部,形成循环效果。随窗口大小动态调整,始终覆盖…...

【cocos creator】【ts】事件派发系统

触发使用&#xff1a; EventTool.emit(“onClick”) 需要监听的地方&#xff0c;onload调用&#xff1a; EventTool.on(“onClick”, this.onClickEvent, this) /**事件派发*/class EventTool {protected static _instance: EventTool null;public static get Instance(): Eve…...

《探索鸿蒙Next上开发人工智能游戏应用的技术难点》

在科技飞速发展的当下&#xff0c;鸿蒙Next系统为应用开发带来了新的机遇与挑战&#xff0c;开发一款运行在鸿蒙Next上的人工智能游戏应用更是备受关注。以下是在开发过程中可能会遇到的一些技术难点&#xff1a; 鸿蒙Next系统适配性 多设备协同&#xff1a;鸿蒙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&#xff0c;搭建安装VSOMEIP环境并运行基础例子。 1. 安装基础环境 使用apt-get来安装基础环境&#xff0c;受网络影响可以分开多次安装。环境好的也可以一次性执行。 sudo apt-get install gcc g sudo apt-get install cmake sudo apt-get install lib…...

Git | git revert命令详解

关注&#xff1a;CodingTechWork 引言 Git 是一个强大的版本控制工具&#xff0c;广泛应用于现代软件开发中。它为开发人员提供了多种功能来管理代码、协作开发和版本控制。在 Git 中&#xff0c;有时我们需要撤销或回退某些提交&#xff0c;而git revert 是一个非常有用的命令…...

ASP.NET Core 中,Cookie 认证在集群环境下的应用

在 ASP.NET Core 中&#xff0c;Cookie 认证在集群环境下的应用通常会遇到一些挑战。主要的问题是 Cookie 存储在客户端的浏览器中&#xff0c;而认证信息&#xff08;比如 Session 或身份令牌&#xff09;通常是保存在 Cookie 中&#xff0c;多个应用实例需要共享这些 Cookie …...

Flyte工作流平台调研(五)——扩展集成

系列文章&#xff1a; Flyte工作流平台调研&#xff08;一&#xff09;——整体架构 Flyte工作流平台调研&#xff08;二&#xff09;——核心概念说明 Flyte工作流平台调研&#xff08;三&#xff09;——核心组件原理 Flyte工作流平台调研&#xff08;四&#xff09;——…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

Vue 实例的数据对象详解

Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...