기초·개념
리눅스, 네트워크, 컨테이너, 특정 제품에 묶이지 않는 원리.
Git 히스토리의 대용량 파일 제거 — filter-repo
2.3GB JSON을 커밋해버렸습니다. 이미 히스토리에 들어간 파일은 .gitignore로 안 지워집니다. 히스토리를 다시 써야 합니다.
rootless Docker — br_netfilter 로드 실패
root 없이 Docker를 돌리려는데 데몬이 br_netfilter 커널 모듈을 못 올려서 죽었습니다. rootless는 bridge 네트워크를 안 쓰는데 기본 설정이 bridge를 요구합니다.
eBPF 프로세스 exec 감시 — 실제로 걸린 것들
특정 프로그램이 실행되는 순간을 잡는 도구를 만들었습니다. eBPF가 뭔지부터 정리하고, 프로세스 이름이 15자에서 잘리는 것과 타임스탬프가 1970년으로 찍히는 것까지.
Ubuntu 24.04 베이스 이미지 — UID 1000 충돌
보안 점검으로 베이스 이미지를 24.04로 올렸더니 useradd가 실패했습니다. ubuntu:24.04엔 UID/GID 1000을 이미 차지한 기본 ubuntu 유저가 있어서, 관습적인 useradd -u 1000이 충돌합니다.
cgroup v1 경로 하드코딩 — v2에서 조용히 죽은 격리 로직
OS를 Ubuntu 22.04로 올린 뒤 컨테이너 생성이 몰릴 때 간헐적으로 실패했습니다. 코드는 그대로였는데, cgroup v1 경로를 하드코딩한 격리 로직이 cgroup v2 환경에서 매번 조용히 no-op이 되고 있었습니다.
Docker 29에서 사라진 inspect 최상위 IPAddress 필드
Docker를 29로 올린 뒤 컨테이너 생성이 매번 롤백됐습니다. inspect 응답의 최상위 NetworkSettings.IPAddress 필드가 29부터 제거됐는데, 구버전 클라이언트는 이걸 에러가 아니라 빈 문자열로 받고 있었습니다.
cgroup v1 vs v2 — PSI와 메모리 압력
쿠버네티스 requests/limits는 cgroup으로 구현됩니다. v1은 리소스별로 트리가 쪼개져 있고, v2는 하나로 통합되면서 PSI가 생겨 OOM으로 죽기 전에 메모리 압력을 감지할 수 있습니다.
Ubuntu 24.04 rootless Docker — nsenter와 netns
컨테이너로 작업을 돌리는 서버를 Ubuntu 24.04로 올린 뒤 컨테이너 접속이 깨졌습니다. apparmor의 userns 제한과 rootless docker의 detach-netns가 겹쳐서, nsenter가 엉뚱한 네임스페이스로 들어가고 있었습니다.
Prometheus 설정 리로드 실패 — 단일 파일 bind mount와 inode
prometheus.yml을 고치고 rsync로 올린 뒤 /-/reload를 불렀더니 200에 'reloaded successfully'까지 찍혔는데, 실제로는 옛날 설정이 그대로였습니다. 단일 파일 bind mount가 inode를 고정하고, rsync는 새 inode를 만들기 때문입니다.
Node.js 이벤트 루프 — 큐 우선순위
Node.js가 콜백을 처리하는 순서에는 우선순위가 있습니다. nextTick과 Promise가 setTimeout·setImmediate보다 먼저 비워지고, 이 큐는 OS가 아니라 libuv가 프로세스 안에서 관리합니다.
SFTP vs NFS — 실시간 I/O엔 왜 NFS인가
SFTP는 SSH 위의 파일 전송 서브시스템이라 요청-응답마다 왕복이 생기고, NFS는 커널 파일시스템이라 앱이 로컬 디스크처럼 씁니다. 배치 전송엔 SFTP, 실시간 I/O엔 NFS인 이유를 정리합니다.
검색 결과가 없습니다.