Dockerlings: học Docker như game giải đố

Dockerlings sẽ giúp bạn học Docker thú vị hơn, Các bạn newbie khi mới tiếp cận với Docker thường bằng cách đọc tài liệu, xem video, đọc blog nhưng vẫn cảm giác oke hiểu đó nhưng mơ hồ. Rất nhiều các bạn mới học Docker gặp chung: “Đọc thì hiểu, nhưng khi bắt tay gõ vào thực hành thì quên sạch, hoặc file Dockerfile viết xong build toàn lỗi.”

Docker không phải thứ bạn chỉ đọc là hiểu. Bạn phải gõ – chạy – sai – sửa thì thì mới ngấm được kiến thức. Vậy làm sao để luyện tập Docker một cách bài bản, có hệ thống, và quan trọng là… không chán nản?

Hôm nay tôi giới thiệu với playgame thú vị anh em newbie về Dockerlings. Một dự án mã nguồn mở hay giúp các bạn học Docker bằng cách… sửa lỗi.

Dockerlings

Tại sao là Dockerlings?

Bạn nào từng học ngôn ngữ Rust chắc biết đến dự án huyền thoại Rustlings. Cơ chế của nó là: Nó đưa cho các bạn những đoạn code bị lỗi, nhiệm vụ của các bạn là sửa cho nó chạy được để “qua màn”.

Dockerlings áp dụng chính xác tư duy đó cho Docker.

Thay vì thụ động học vẹt qua xem video hoặc hỏi chat AI, Dockerlings bắt các bạn phải:

  • Đọc đề bài (là một file cấu hình lỗi).
  • Tự tra cứu tài liệu để hiểu tại sao nó lỗi.
  • Sửa lại file config.
  • Hệ thống tự động chấm điểm, nếu đúng thì chuyển sang bài tiếp theo.

Cách học này giúp anh em hình thành Muscle Memory (trí nhớ cơ bắp), gõ lệnh và viết Dockerfile sẽ ngấm vào tay nhanh hơn nhiều so với việc chỉ đọc.

Cách học “Sai thì Sửa”

Đầu tiên, các bạn setup Dockerlings theo cách sau đây:

git clone https://github.com/furkan/dockerlings.git
cd dockerlings

Đây là phần thú vị nhất. Dockerlings không dạy lý thuyết suông, nó ném bạn vào thực hành ngay.

Bạn đứng tại thư mục dockerlings vừa clone về và gõ: (nhớ phải Go trước đó nhé)

go build -o bin/dockerlings ./cmd/dockerlings
./bin/dockerlings watch

Ngay lập tức, màn hình sẽ hiện ra một giao diện dòng lệnh, nó sẽ chạy bài tập đầu tiên và… báo lỗi đỏ lòm. Đây là tính năng =)))

Quy trình học của bạn sẽ lặp đi lặp lại như sau:

  • Nhìn lỗi: Terminal báo bài tập nào đang lỗi.
  • Mở file: Dùng VS Code hoặc Vim mở file đó lên.
  • Đọc gợi ý : Trong file luôn có comment hướng dẫn bạn cần làm gì.
  • Sửa code: Sửa lại lệnh Docker hoặc Dockerfile theo yêu cầu.
  • Lưu file: Ngay khi bạn bấm Save (Ctrl+S), Dockerlings sẽ tự động chạy lại. Nếu đúng, nó sẽ xanh lè và chuyển sang bài kế tiếp.

Trải nghiệm thử một bài tập

Để bạn thấy rõ “độ chất” của tool này, chúng ta sẽ bỏ qua mấy bài hello-world dễ ợt. Hãy nhảy vào một bài tập ở mức trung bình mà người mới học đều lúng túng: Volumes (Lưu trữ dữ liệu).

Các bạn đều biết nguyên tắc của Docker: “Container sinh ra rồi chết đi, dữ liệu bên trong nó cũng bay màu theo”. Để giữ lại dữ liệu, ta phải dùng Volume.

Giả sử bạn đã vượt qua các màn dạo đầu, và dockerlings đang dừng ở bài tập ở level Core-08 với tên gọi Volumes for Persistence.

Bước 1: Nhìn lỗi để bắt bệnh

Khi chạy dockerlings watch, màn hình terminal sẽ báo lỗi đỏ rực ở bài volumes1.
Thông báo lỗi đại loại sẽ là:

Running the container… > Checking if the file exists on the host… > Error: File not found! The data was lost.

Nghĩa là: Container đã chạy, đã ghi dữ liệu, nhưng khi container tắt, dữ liệu không hề xuất hiện trên máy thật của các bạn.

Bước 2: Mở code và Phân tích

Các bạn dùng VS Code mở file bài tập (thường là một file script .sh hoặc file cấu hình bài tập). Nội dung bên trong sẽ chứa một lệnh docker run đang bị viết thiếu.

Nội dung file sẽ trông tựa tựa thế này (tôi mô phỏng lại logic của bài tập):

#!/bin/bash
# Goal: Run a container that writes to /data inside itself,
# but make sure that data appears in the ./my_data folder on the host.

# CURRENT (BROKEN) COMMAND:
docker run --name my-volume-container \
  alpine \
  sh -c "echo 'Hello form Dockerlings' > /data/message.txt"

# ERROR: The data is stuck inside the container and lost on exit.

Vấn đề ở đâu? Lệnh docker run ở trên chạy hoàn toàn bình thường, không báo lỗi cú pháp. Nhưng nó thiếu tham số để mount thư mục:

  • Máy host: thư mục my_data (đường dẫn hiện tại).
  • Container: thư mục /data.

Nếu không ánh xạ, lệnh echo kia chỉ ghi vào hư vô bên trong container mà thôi.

Bước 3: Sửa lỗi

Nhiệm vụ của bạn là thêm tham số -v (hoặc --volume) đúng cú pháp.
Cú pháp chuẩn của Docker là: -v <đường_dẫn_máy_thật>:<đường_dẫn_container>.

Các bạn sửa lại file script đó như sau:

docker run --name my-volume-container \
  -v $(pwd)/my_data:/data \   # <--- Dòng mà bạn cần thêm vào
  alpine \
  sh -c "echo 'Hello form Dockerlings' > /data/message.txt"

Bước 4: Xem kết quả

Ngay sau khi bạn bấm save

  • dockerlings (đang chạy ngầm) sẽ phát hiện thay đổi.
  • Nó tự động chạy lại lệnh script anh em vừa sửa.
  • Container chạy -> ghi file -> file xuất hiện trên máy thật.
  • Tool kiểm tra thấy file tồn tại và báo: Success! > Next exercise: Core-09 Bind Mounts

Vậy là bạn vừa hoàn thành một bài tập về Volume trong Docker bằng cách… sửa lỗi.

Đánh giá

Sau khi trải nghiệm qua bộ bài tập này, tôi có vài nhận xét cho các bạn:

Điểm cộng:

  • Học kiểu: Không lý thuyết suông, bắt tay vào sửa lỗi ngay lập tức.
  • Nhớ lâu: Tự tay gõ lệnh và fix lỗi giúp tạo “trí nhớ cơ bắp” (muscle memory) tốt hơn.
  • Phản hồi tức thì: Sai là báo đỏ, đúng là báo xanh, biết kết quả ngay lập tức.

Điểm trừ:

  • Chưa chuyên sâu: Nội dung dừng lại ở mức cơ bản đến trung bình, thiếu các kịch bản phức tạp (như Docker Swarm, Security Hardcore).
  • Thông báo lỗi đôi khi “cục súc”: Vì chạy script shell bên dưới, nên đôi khi log lỗi bắn ra hơi khó đọc với các bạn newbie.

Nếu anh em mới học Docker hoặc học lâu rồi mà hay quên cú pháp, thì dockerlings là nơi luyện tập trong 1-2 buổi cuối tuần nhé

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
1 Bình luận
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia