序言

本文包括了多种访问 Docker 容器的情况,探讨了每种情况应该使用容器的 IP 地址还是容器名。本文的内容对于熟练使用 Docker 的人不值一提,但在实践中,我常常忘记这些基本概念,浪费了不少时间。因此,我决定以 cheat sheet 的形式写一篇博文。本文的大部分内容由 ChatGPT 生成的。

总的来说,记住以下两点就够了:

  • 尽管我们喜欢用容器名访问容器,但这个 DNS 服务是由 docker 提供的,因此只能被容器使用
  • 对于端口映射 -p 8080:80 :用容器名/容器 IP 访问容器时,用容器的端口 80;用主机访问容器时,用主机的端口 8080
阅读全文 »

序言

本文主要包括 Docker healthcheck 的机制、语法,以及 Docker compose 的 depends_on 机制、语法。本文可以视作一个 cheat sheet。

healthcheck 机制

When a container has a healthcheck specified, it has a health status in addition to its normal status. This status is initially starting. Whenever a health check passes, it becomes healthy (whatever state it was previously in). After a certain number of consecutive failures, it becomes unhealthy.

阅读全文 »

问题

最近外网爆出了 Intel 13、14 代 i9 打游戏会报显存错误。这个也许只是 CPU 不稳定导致的短时运算错误,不足为惧[1]。但是,B站上有人讨论很多 14 代 i9 在待机模式下蓝屏,甚至 13700K 也出现了这种现象。如果消息准确,那么使用了半年的 14代 i9 就出现了“缩缸”现象(硬件损坏导致的永久性能损失)。理论上,CPU 的寿命至少是 10 年,而且大部分 CPU 都是不用了、而不是用坏了。我的 CPU 就是 13700K,这让我非常警惕。

对于这个问题的讨论有两点需要厘清:

  1. 软件报错,比如游戏、压测工具和渲染工具。这一点占据了极大比例的流量。目前,无论是 Intel 官方还是第三方网站、博主,给出的解决方案都是限制功耗和降频,使得软件不会报错。Intel 把锅甩给主板厂商,要求它们按照 Intel 标准来设置 BIOS。目前来看,这个所谓的 Intel 标准电压更高、频率更低,跑分更差。要注意,频率降低等于消费者吃亏。因此,Intel 和主板厂商都有责任
  2. CPU“缩缸”,这是产品缺陷。这一点只占据很小比例的流量。显然,Intel 永远不会承认这一点。也许从 23 年 6 月 Intel 质保政策开始收紧时[2],Intel 已经知道了这一事实。

我是在 23 年初配的电脑,轻度办公、写一写代码,基本没玩过 3A 大作。最近,我用 CPU-Z 和 R23 测试了性能,和网上的结果[3][4]差不多。因此,我的 13700K 应该没有“缩缸”。

话说回来,我倒不是很关心降频,我更关心 CPU 寿命。目前自动核心电压为 1.38 V,R23 跑一次就 100 度。这样的配置,迟早要“缩缸”。因此,本文主要记录我是如何给 CPU 降压的,以及在研究过程中发现的各种问题。

阅读全文 »

序言

Metabase 是一个开源的数据分析工具,操作简单,可以连接到多种数据源。虽然数据分析能力没有 Excel 强大,Metabase 也足够日常使用了。并且,我更擅长写 SQL,而不是操作 Excel,因此 Metabase 是个很好的选择。

阅读全文 »

对于开发者,安装 MySQL 不是什么难事,但是往往步骤比较多。我记录了一个 Docker compose 模板,能直接启动一个配置好的 MySQL 容器,用于开发。

Docker compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '123456'
ports:
- 43306:3306
volumes:
- mysql_data:/var/lib/mysql
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --character-set-client-handshake=FALSE
healthcheck:
test: out=$$(mysqladmin ping -h 127.0.0.1 -u root --password=$$MYSQL_ROOT_PASSWORD); echo $$out | grep 'mysqld is alive' || { echo $$out; exit 1; }
start_period: 0s
interval: 5s
timeout: 3s
retries: 2

volumes:
mysql_data:
external: true

配置说明

阅读全文 »
0%