Docker in Docker
Why Docker in Docker?最适合的领域应该是持续集成领域,不断地在容器内部产生子容器,加速交付流程。 官方博客里提供的DinD 的解决方案在遥远的年代,需要很多其他的东西来辅助生成一个 docker in docker 的例子,但如今一个 —privileged 的 flag 就搞定一切了。 当前版本正确的 DinD 方案,是这样启动一个 DinD 容器: 12# 我们不能在任意容器里启动子docker,目前都需要dind镜像docker run --privileged -d docker:dind exec 进入这个容器: 1docker exec -it agitated_curran /bin/sh 然后在容器里再跑一个容器: 1docker run -it ubuntu /bin/bash Docker in Docker 为什么难?这有一篇博客《~jpetazzo/Using Docker-in-Docker for your CI or testing environment? Think twice.》,专门解释这个问题。总体看下来, DinD...
Unix/Linux 系统的常见目录
一级目录 目录路径 缩写解释 / 全称 用途描述 常见子目录/示例 / Root 根目录,所有其他目录的起点 无 /bin Binaries 基础命令的二进制文件(所有用户必需) ls, cp, mv, cat /boot Boot 系统启动文件(内核、引导加载程序) vmlinuz-*(内核文件)、grub/(GRUB配置)、initramfs /dev Devices 设备文件(物理/虚拟设备接口) sda(磁盘)、tty(终端)、null(空设备)、random(随机数生成器) /etc Etcetera 系统级配置文件(全局配置) passwd(用户账户)、fstab(挂载表)、apt/(APT包管理器配置)、ssh/ /home Home 用户主目录(个人文件和数据) /home/alice(用户 Alice 的目录) /lib Libraries 基础共享库和内核模块(支持 /bin 和...
AWS 相关
安装 cli安装或更新最新版本的 AWS CLI 12aws configureaws configure list 总体设计看这个 最终看这个 然后输入:aws_access_key_id =,aws_secret_access_key,Default region name: us-east-1,output format 选 json。 推送 ECR 首先创建一个 ECR 的repo。 12345678910111213141516171819# latest 不是一个标准 tag,需要给一个镜像打两个 tag:v24 latest# 完整镜像名:namespace/reponame:tagdocker build -t namespace/reponame:v${{BK_CI_BUILD_NUM}} .echo "aws sts get-caller-identity"aws sts get-caller-identityecho "docker push...
Kubernetes 架构演进:从容器到云原生应用平台的故事
本文由 Claude-3.7-Sonnet 生成。 从裸机到容器:应对复杂性的演进1. 物理服务器时代的困境最初,应用程序直接部署在物理服务器上,导致: 资源利用率低下(一台服务器只运行一个应用) 环境一致性问题(”在我的机器上能运行”) 应用隔离性差 2. 虚拟机的改进虚拟化技术出现,每台物理服务器可运行多个虚拟机: 提高了资源利用率 但启动慢、资源占用大 3. 容器(Container)的革命容器技术解决了关键痛点: 轻量级(共享宿主机OS内核) 快速启动(秒级) 可移植性强(构建一次,到处运行) 资源占用小 但问题出现了: 当容器数量增长,单机管理变得困难,集群管理更是挑战。 Kubernetes组件的逐步演进1. Pod:为什么不直接使用容器?容器本身有局限性: 单个容器难以满足应用的协作需求 需要将紧密关联的功能组合在一起 因此诞生了Pod: Pod是最小部署单元,包含一个或多个容器 共享网络命名空间和存储卷 同一Pod中的容器总是在同一节点上运行 适合边车(sidecar)模式,如日志收集、代理容器 2....
分布式鉴权技术
OAUTH2基本角色定义 授权服务器 - 验证身份并颁发令牌的服务器(我上面代码示例中的OAuth服务器) 资源服务器 - 提供API资源的服务器 客户端应用 - 访问API的应用,可以是: 第一方应用 - 您公司自己的应用 第二方应用 - 业务合作伙伴的应用 第三方应用 - 外部开发者的应用 token 类型 access_token (默认有效期 24 小时) refresh_token(默认有效期 30 自然日,每次刷新 access_token 的操作可自动刷新 refresh_token 有效期的起始计算时间)。 客户端凭证流程(适用于服务器到服务器通信)12345678910第一方/第二方应用 授权服务器 资源服务器(API) | | | |---1. 请求访问令牌------------>| | ...
Go 语言学习
《Go 语言编程》学习笔记Herb Sutter 在2003年写的《免费午餐已经结束》,言犹在耳,尽量通过并发来压榨硬件性能是大势所趋。但是并发难写。 并发执行是有执行体的。process、thread 和 coroutine 都是执行体。线程是轻量级进程,协程是轻量级线程。但大多数语言在语法层面上并不支持创建协程,而通过库的方式支持的协程功能也不完善。Go 语言提供的协程叫 Goroutine。Go 语言标准库提供的所有系统调用(syscall)操作,当然也包括所有同步 IO 操作,都会出让 CPU 给其他 goroutine,这让事情变得非常简单(哪里简单了,它自动产生了 yield...
秦晖:21世纪全球化危机
...
灵机一动的程序设计
怎样用此列表来排序彼列表123456789101112131415161718192021222324252627282930313233private List<TagGroup> reorder(Long id, List<TagGroup> entities) { final AccountSettings accountSettings = getAccountSetting( id); final List<Long> tagGroupOrders = accountSettings.getTagGroupOrders(); // 根据 tagGroupOrders 里提供的 tagGroupId 对 entities 排序 if (CollectionUtils.isNotEmpty(tagGroupOrders)) { entities.sort((o1, o2) -> { int index1 =...
Redis 开发与运维
Redis 特性Redis 高性能的原因Redis 的读写性能达到 10w/s,主要基于以下原因: 数据主要放在内存中。 Redis 使用距离 OS “层次更近”的 C 语言实现。 Redis 使用单线程架构,没有很高的 lock contention。 IO 多路复用技术 Redis 的代码实现得优雅而兼顾性能 Redis 的数据结构Redis 本身是 Remote Dictionary Server 的简称,其中,老的、常见的数据结构有: 字符串 哈希 列表 set(集合) zset(有序集合) 但后来追加了几种新颖的数据机构,包括:bitmap、hyperloglog,更后来更添加了 GEO 地理信息相关的工具。 基于这些数据结构,我们可以实现一些常见的功能: 键过期,可以用来实现缓存,进而实现分布式锁。 发布订阅功能,进而实现消息系统(TODO)。 Lua 脚本功能,可以实现自定义的 Redis 命令(TODO)。 实现简单的事务功能,能在一定程度上实现事务特性。 提供流水线功能,能够让客户端一次性把一批命令一次性上传到 Redis 里,能够合并 IO...
大模型相关
大模型发展.xmind RNN的雏形可以追溯到90年代Jeffrey L.Elman的经典文章:Finding Structure in Time(1990) 2013年Google提出的Word2Vec可能是最为人熟知的Embedding技术之一 Encoder-Decoder架构来自论文:Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation(2014) 注意力机制参考论文:Neural Machine Translation by Jointly Learning to Align and Translate(2014) LLM的技术发展和相互关系:Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond(2023) Transformer出自一篇经典论文:Attention Is All You...