Distroless Images

查看原文

Distroless Images 指的是整个镜像里面只有你的应用和运行时依赖,不要把其他任何包括 package manager,shell,其他可以在标准 Linux Distribution 里面找到的程序丢进去。这是很多大公司的实践,好处是可以减少 CVE 噪音,减少镜像源头。

  • 由于 Distroless 没带 shell,所以你要在 Dockerfile 中指定一个 ENTRYPOINT
  • 格式:ENTRYPOINT ['myapp'], 如果用 ENTRYPOINT myapp 会被 container runtime prefix 一个 shell
  • 使用 multi-stage build 的小技巧来丢掉构建过程的产物,只留下构建结果。
  • 其实还是建议保留一个 sh 在镜像里面万一真要查问题时死活进不去会很麻烦。docker run --entrypoint=sh -it …
read more

使用 LXD 创建 Linux Containers

查看原文

本文展示了如何通过 lxd 创建容器。

  • lxd init: 设置 storage 和 network
  • lxc init 创建 vm
  • lxc network attach 将 vm 连上网卡
  • lxc start $image 启动 vm
  • lxc config set $image boot.autostart true 设置自动启动
  • lxc list 显示 vm 列表
read more

LXD 简介

查看原文

本文是 LXD Introduction。LXD 是 system container manager, 使用 linux container 提供类似 virtual machine 的使用体验。可用的镜像可在 https://images.linuxcontainers.org/ 查看,常见版本的 alpine, cents, ubuntu, debian, gentoo 什么都有。

LXD 的核心就是一个 daemon, 通过 unix socket 或者网络 提供 REST API 服务。这个 REST API 服务的功能由 LXC 提供, 它通过 liblxc 和 go …

read more

VueJS 的优缺点

查看原文

本文作者对 VueJS 给出了自己的看法:双向数据绑定,内建 State Manager, 快,普通 HTML 模板但也支持 JSX,轻量,可扩展,文档好,新时代的 jQuery,单文件可做完 HTML,CSS,JS 的整个组件

read more

Python 实现 BitCoin BlockChain

查看原文

本文实践了如何从头构建一个 Blockchain 网络。

  • 基础知识:
    • Double-Spending 难题:在点对点网络上,一笔钱怎么确保只能消费一次?
    • BitCoin 解决方案:打包 10 分钟内的多个交易到一个块,矿工给块签名(Proof of Work),第一个算出 nonce 的矿工将其广播到网络。只要好矿工多于半数,就能确保不会出现 Double-Spending。
      • 解决冲突:如果有人同时算出来,我们通过再下一个块的矿工决定。
    • ECDSA: 基础的加密算法。目前来看比较安全。Alice 把她的块用自己的私钥签名,别人用她附带的公钥确信这确实是她的块。
    • Block 有父节点的哈希地址,所以这些 Block 一个一个串起来组成了 BlockChain。
    • BlockChain 可能会遭到的攻击:Race Attack, Finney Attack, Majority Attack。
      • Race Attack: 建议收到至少一个 …
read more

Python PEP 0572 - Assignment Expressions

查看原文

PEP 0572 草案:实现类似这样的语法:if (match := pattern.search(data)) is not None:, while chunk := file.read(8192):.

这样的语法在 C 中很常见,在 Python 中之前还无法做到,因为 = 操作不是表达式,所以它不能赋值后返回值。

衍生思考:除去偏见,我觉得它似乎让代码变工整了。让 x = xxxxxx; if x: 这样的代码变紧凑了。

read more

Source Control 简介

查看原文

本文对版本控制做了一下简介:

  • 其必要性:不会丢失代码变更的历史
  • Monorepo v/s Multirepo: 一个大仓库还是很多小仓库,具体还是看团队的需求,偏好什么的。
  • 部署:有一种部署方式很适合小项目的部署,直接拉下来代码,然后重启。不然还得研究打包啊,构建啊什么的,杀鸡焉用牛刀?
  • 常见工具: git, svn, hg.
  • 常见服务:GitHub, GitLab, BitBucket, 我补一下喜欢的 Gerrit
read more

Jib - Java Docker Images Builder

查看原文

Jib 是一个 Java 的构建工具。目前比较常见的 Java 程序构建是将其打包为一个 Jar,丢到一个 Java Docker Image 里面,琐碎事情不少,要写 Dockerfile 什么的。这个工具简化了这个流程,直接和 Maven / Gradle 集成,添加依赖后可以通过 mvn compile jib:build + mvn compile jib:dockerBuild 或者 gradle jib, gradle jibDockerBuild 直接将镜像丢进 Registry。

read more

PostgreSQL 不要做这些事情

查看原文

本文介绍了 PostgreSQL 的一些不建议做的事情:

  • 不要 psql -W or psql --password
  • 不要用 timestamp 存时间戳,用 timestamptz, 除非你不需要计算时间戳,只是单纯存储这个值。
  • 不要用 timetz,用 timestamptz.
  • 不要用 Money 存钱,用 Numeric, 除非你只处理一种货币并且只加减钱不乘除钱。
  • 表名或者列名不用大写, 真有需求 Select 的时候 select character_name as "Character Name" from foo
  • 不用 char(n), 用 text, 前者会打空格给缺的部分。
  • 不用 varchar(n), 用 varchar 或者 …
read more

« Page 16 / 54 »