
10 năm trước, anh em coder chúng ta hay có cái bài gãi đầu gãi tai bảo sếp: "Ủa lạ nhể, nãy chạy trên máy em bình thường mà ta?". Xong rồi Docker xuất hiện, vỗ vai anh em bảo: "Thế thì đóng gói m cái máy của mày quăng lên server luôn đi"*. Thế là bùm, chúng ta có một tiêu chuẩn ngành công nghiệp mới.
Đợt này trên Hacker News đang rần rần vụ bài báo kỷ niệm "A decade of Docker containers" (10 năm Docker). Đọc comment của các bô lão trên đấy mới thấy nhiều thâm cung bí sử ảo ma vãi chưởng. Anh em pha cốc cafe rồi cùng tôi điểm lại xem chuyện quái gì đã xảy ra.
Bài báo gốc trên CACM thì dài, nhưng tóm tắt lại cho anh em lười đọc thì có 2 cú plot-twist khét lẹt:
Thứ nhất, Docker ra đời từ 2013, tức là tính đến nay đã 12 năm. Thế tại sao lại là "10 năm"? Đơn giản vì quy trình duyệt bài của mấy tạp chí học thuật quá rùa bò. Lão tác giả phải ngâm bài lâu đến mức cái tít "12 năm" nghe nó tụt mood, nên chốt luôn "A decade" cho nó tròn trĩnh và... có vibe.
Thứ hai, cú lừa ngoạn mục mang tên SLIRP. Hồi mới ra mắt, Docker bị block sấp mặt bởi hệ thống tường lửa (Firewall) ngáo ngơ của mấy tập đoàn lớn. Giải pháp? Mấy pháp sư Docker đã đào mồ SLIRP - một cái tool dial-up từ thập niên 90 (vốn dùng cho máy tính bảng cổ đại Palm Pilot). Thay vì dùng network bridging đàng hoàng, họ dùng SLIRP để dịch traffic mạng của container qua host system calls, giả vờ như một cái VPN. Nó qua mặt hệ thống corporate IT security một cách mượt mà. Đỉnh cao của "hack bẩn"!
Dưới phần bình luận, các bô lão IT chia phe combat nảy lửa, đọc cuốn hơn cả truyện kiếm hiệp:
1. Phe "Ship m cái máy đi cho lẹ":* Lão talkvoix đá xoáy cực gắt: Chúng ta đã mất đúng 1 thập kỷ để biến cái cớ chống chế "trên máy em chạy mượt mà" thành kiến trúc tiêu chuẩn của cả ngành (ship luôn cái máy của mày lên production). Lão redhanuman bồi thêm chí mạng: 10 năm sau chúng ta lặp lại y chang với bọn AI. Dân data cứ bảo "Chạy trên Jupyter notebook của em ngon", thế là mấy anh Data Engineer bọc container cái notebook đó lại và gọi nó là "Data Pipeline". Trí trá thật sự!
2. Phe chê Linux rác: Một thanh niên bức xúc chửi thẳng mặt: "Linux user space là một thảm họa thiết kế, hỏng từ trong trứng. Docker đáng lẽ đo cần tồn tại"*. Theo thanh niên này, nếu việc cấu hình dependency trên Linux không quá khốn nạn, thì anh em đã chẳng phải đẻ ra cái trò container nặng nề này.
3. Phe "Nix và những người bạn": Vài đạo hữu thượng đẳng kêu gọi bỏ Docker, chuyển sang dùng Nix hay Process Compose để đỡ phải map port hay mount volume lằng nhằng. Nhưng bị dân DevOps đập lại ngay: Docker ăn tiền ở chỗ nó nhàn cho Ops. Ném lên máy chủ orchestration (như K8s) rụp cái là xong, nhẹ hơn VM tỷ lần. Nix quản lý image tốt nhưng éo giải quyết được bài toán runtime mượt như Docker.
4. Phe phàn nàn Dockerfile:
Nhiều anh em ngán ngẩm cảnh copy-paste mấy dòng RUN apt-get upgrade vô tội vạ, ao ước có thứ gì đó declarative (khai báo) xịn xò hơn là ba cái shell script củ chuối. Nhưng chốt lại, chính cái sự linh hoạt (dù hơi bẩn) đó lại là thứ giúp Docker sống dai.
Từ cái drama hoài niệm này, rút ra mấy chân lý cho anh em đi làm:
docker-compose up -d thôi.Nguồn hóng hớt: Hacker News - A decade of Docker containers
Anh em xài Docker mỗi ngày nhưng có biết nó từng xài tool dial-up từ thập niên 90 để lách tường lửa? Cùng C4F hóng drama và bóc phốt Linux user space.