当前位置: 首页 > 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;——…...

软阴影:那个让虚拟世界“温柔起来“的光影小秘密

一、从一只小猫的影子说起 前几天我在朋友家做客&#xff0c;他家养了一只胖乎乎的橘猫&#xff0c;正趴在阳台的窗边晒太阳。我无意间瞥了一眼那只猫脚边的影子&#xff0c;突然被一个细节震撼了—— 那只猫的影子——并不是一片均匀的黑。 仔细看——猫肚子紧贴地板的地方——…...

从理论推导到代码实现:手把手教你用Python/Numpy写出守恒形式的NS方程求解器

从理论推导到代码实现&#xff1a;手把手教你用Python/Numpy写出守恒形式的NS方程求解器计算流体力学&#xff08;CFD&#xff09;的魅力在于它将抽象的数学方程转化为可执行的代码&#xff0c;让流体运动的奥秘在计算机中重现。对于已经掌握流体力学理论的中高级学习者来说&am…...

[智能体-69]:重新认知MCP:协议不生产智能,只是AI全域交互的标准化基石

MCP只是提供了大模型、编排调度、外部工具能够进行结构化交流的标准&#xff0c;而整个系统的智能主要依赖编排调度&#xff0c;与外部软件系统的交互取决于外部工具&#xff0c;包括外部语音交互、视觉交互、数字化交互。当下MCP&#xff08;Model Context Protocol&#xff0…...

如何高效批量下载音乐歌词:智能歌词管理完整指南

如何高效批量下载音乐歌词&#xff1a;智能歌词管理完整指南 【免费下载链接】ZonyLrcToolsX ZonyLrcToolsX 是一个能够方便地下载歌词的小软件。 项目地址: https://gitcode.com/gh_mirrors/zo/ZonyLrcToolsX ZonyLrcToolsX 是一款专业的跨平台歌词下载工具&#xff0c…...

孤舟笔记 互联网常用框架篇三 Dubbo是如何动态感知服务下线的?注册中心和服务端双保险

文章目录先说结论机制一&#xff1a;注册中心通知机制二&#xff1a;心跳检测机制三&#xff1a;连接事件感知机制四&#xff1a;定时拉取四种机制的协作回答技巧与点评加分回答面试官点评个人网站微服务环境下&#xff0c;服务实例随时可能上下线——重启、扩容、宕机……调用…...

可解释AI新突破:基于局部帕累托最优的模型解释框架

1. 项目概述&#xff1a;当AI模型成为“黑箱”&#xff0c;我们如何撬开它&#xff1f;在机器学习项目里摸爬滚打十几年&#xff0c;我见过太多这样的场景&#xff1a;团队花大力气训练出一个准确率高达95%的复杂模型&#xff08;比如深度神经网络&#xff09;&#xff0c;业务…...

利用FTDI芯片MPSSE模式构建Arduino兼容开发环境

1. 项目概述&#xff1a;当FTDI芯片遇上Arduino生态如果你手头有一些闲置的FTDI USB转串口模块&#xff0c;比如常见的FT232R、FT2232H&#xff0c;或者像我一样&#xff0c;从某个旧设备上拆下来一块FT2232C的老古董&#xff0c;除了用来给单片机烧录程序或者做串口调试&#…...

抖音内容批量下载实战:从零开始构建个人视频资料库

抖音内容批量下载实战&#xff1a;从零开始构建个人视频资料库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

SpeakingURL版本升级指南:从旧版本迁移到最新版本的完整教程

SpeakingURL版本升级指南&#xff1a;从旧版本迁移到最新版本的完整教程 【免费下载链接】speakingurl Generate a slug – transliteration with a lot of options 项目地址: https://gitcode.com/gh_mirrors/sp/speakingurl SpeakingURL是一款强大的URL友好化工具&…...

密码学入门:区块链中的密码学原理

密码学入门&#xff1a;区块链中的密码学原理 大家好&#xff0c;我是欧阳瑞&#xff08;Rich Own&#xff09;。今天想和大家聊聊密码学这个重要话题。作为一个Web3探索者&#xff0c;密码学是区块链的基础。今天就来分享一下区块链中常用的密码学原理。 为什么密码学很重要&a…...