lazydocker: giao diện terminal cho Docker và Compose
lazydocker là một terminal UI biến các lệnh docker và docker-compose thành phím tắt trong một màn hình duy nhất dựa trên thư viện gocui. Dùng nó nếu bạn suốt ngày restart rồi xem log của nhiều service Compose; bỏ qua nếu bạn cần điều phối Swarm hoặc một dashboard chạy trên trình duyệt cho đồng đội không quen làm việc với terminal.
lazydocker là gì?
lazydocker là một terminal UI dùng để quản lý Docker và Docker Compose, viết bằng Go trên nền thư viện gocui. Nó hiển thị trạng thái container và service, log, cùng biểu đồ tài nguyên trong một cửa sổ terminal duy nhất, với các phím tắt để restart, rebuild và xoá container thay vì phải gõ riêng từng lệnh docker. Nó còn cho phép dọn (prune) các container, image và volume không dùng nữa ngay trên cùng màn hình đó.
Bạn có thể làm gì với lazydocker
- ✓Xem trạng thái mọi container và service Compose trong một panel, cập nhật trực tiếp, thay vì phải chạy lại `docker-compose ps`.
- ✓Vào thẳng luồng log của một container hay service chỉ với một phím — một docker logs viewer tích hợp sẵn, không bị ngắt khi container restart.
- ✓Xem ascii graphs của CPU, memory và các chỉ số container khác ngay trên terminal, và có thể tuỳ chỉnh chỉ số muốn theo dõi.
- ✓Attach thẳng vào một container hay service đang chạy từ panel.
- ✓Restart, xoá hoặc rebuild container và service mà không cần tự gõ lệnh docker hay docker-compose.
- ✓Xem các ancestor layer của một image để biết nó được build từ đâu.
- ✓Prune container, image hoặc volume đang chiếm dung lượng ổ đĩa, ngay trên cùng một màn hình.
- ✓Xây trên thư viện terminal UI gocui bằng Go, hỗ trợ cả chuột lẫn phím tắt.
Khi nào lazydocker là công cụ phù hợp
- •Bạn đang chạy nhiều service Docker Compose ở local và cứ phải đổi qua lại giữa các tab terminal để xem service nào vừa crash.
- •Bạn muốn tail log của một service mà không bị luồng log tắt mỗi lần service đó restart.
- •Bạn cần restart, rebuild hoặc xoá container nhanh mà không nhớ nổi flag chính xác của docker hay docker-compose.
- •Bạn muốn xem nhanh CPU và memory của container mà không cần dựng riêng một hệ thống giám sát.
Cài đặt lazydocker
README của lazydocker liệt kê nhiều cách cài. Trên macOS hoặc Linux dùng Homebrew, chạy `brew install jesseduffield/lazydocker/lazydocker` (formula đã tap riêng) hoặc `brew install lazydocker` từ Homebrew core. Trên Windows, cả Scoop (`scoop install lazydocker`) và Chocolatey (`choco install lazydocker`) đều dùng được. Người dùng Arch Linux có thể chạy `yay -S lazydocker` qua AUR. Nếu có Go >= 1.19, `go install github.com/jesseduffield/lazydocker@latest` sẽ build trực tiếp; với Go <= 1.17 README đưa ra lệnh `go get github.com/jesseduffield/lazydocker` thay thế. Còn có một script cài tự động cho Linux — `curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash` — dù chính README cũng nhắc nên kiểm tra kỹ trước khi pipe vào bash. Bản binary cho Linux, macOS và Windows có trên trang GitHub releases, và có sẵn image Docker (`lazyteam/lazydocker`) để chạy trong container với Docker socket được mount vào. Yêu cầu: Docker >= 29.0.0 (API >= 1.24), và Docker-Compose >= 1.23.2 là tuỳ chọn.
Bắt đầu dùng lazydocker
Gõ `lazydocker` trong terminal để mở nó lên. Không cần file config nào để bắt đầu. Nên tạo alias vì bạn sẽ gõ nó thường xuyên: `echo "alias lzd='lazydocker'" >> ~/.zshrc` (đổi `.zshrc` thành file rc của shell bạn đang dùng). Màn hình chính chia thành các panel cho project, container, service và image; điều hướng bằng phím mũi tên hoặc chuột, và mỗi thao tác — restart, xem log, attach — đều gán sẵn một phím tắt hiển thị ngay trên màn hình. README dẫn tới một trang keybindings riêng và một video hướng dẫn ngắn thay vì liệt kê hết phím tắt trong văn bản.
Điểm mạnh
- ✓Mọi thao tác docker và docker-compose thường dùng — restart, xoá, rebuild, attach, xem log — chỉ cần một phím thay vì nhớ lệnh.
- ✓Layout panel giữ project, container, service và image hiện cùng lúc, không phải chuyển qua lại giữa nhiều cửa sổ terminal để xem trạng thái.
- ✓Biểu đồ ascii của các chỉ số container hiện ngay trên terminal mà không cần dựng dashboard riêng.
- ✓Đóng gói thành một binary Go duy nhất, có đường cài qua Homebrew, Scoop, Chocolatey, AUR và `go install`, nên gắn thẳng vào workflow terminal có sẵn mà không cần thêm app GUI.
Những gì lazydocker không làm
- △Không có tài liệu nào nói lazydocker hỗ trợ Swarm — chính phần alternatives trong README lại trỏ sang Portainer cho việc đó.
- △Mặc định chỉ hiện log của 1 giờ gần nhất; muốn xem nhiều hơn phải tự sửa `commandTemplates` trong file config.
- △Chọn text bằng chuột cần thêm một phím (giữ Option trên Mac) vì thao tác kéo chuột bình thường đã dùng để click chọn container.
- △README ghi nhận một bug đã biết: chạy lazydocker trong chính container Docker của nó sẽ không thấy được log và CPU.
- △Wrap chữ trong panel log chính mặc định tắt vì tốn CPU, nên dòng dài bị cắt thay vì xuống dòng trừ khi bạn bật `gui.wrapMainPanel`.
Lựa chọn thay thế cho lazydocker
Câu hỏi thường gặp
lazydocker chạy trên macOS, Linux và Windows. README liệt kê cách cài cho từng nền tảng: Homebrew dùng được trên macOS và Linux, Scoop và Chocolatey dành cho Windows, còn bản binary có sẵn cho Linux, macOS và Windows trên trang GitHub releases.
lazydocker cần Docker phiên bản 29.0.0 trở lên (API 1.24 trở lên) đã cài và đang chạy. Docker-Compose 1.23.2 trở lên là tuỳ chọn — lazydocker vẫn chạy được nếu không có, nhưng các tính năng liên quan Compose cần nó.
Mở lazydocker, click vào panel project ở góc trên bên trái, rồi nhấn 'o' (hoặc 'e' nếu bạn dùng Vim) để mở thẳng file config. README của lazydocker dẫn tới một trang Config Docs riêng liệt kê đầy đủ các tuỳ chọn.
Tài liệu của lazydocker không nhắc tới việc hỗ trợ Docker Swarm. Trong phần alternatives của README, lazydocker trỏ sang Portainer đúng vì Portainer hỗ trợ Docker Swarm, cho thấy Swarm không nằm trong phạm vi của lazydocker.
Chọn một container hay service trong panel của lazydocker, luồng log sẽ hiện ngay trong màn hình chính, không cần gõ lệnh `docker logs` riêng. Mặc định lazydocker chỉ hiện log của 1 giờ gần nhất; muốn xem nhiều hơn phải sửa `commandTemplates` trong file config.
lazydocker chạy hoàn toàn trong terminal, còn Portainer là dashboard chạy qua trình duyệt và truy cập qua mạng. README của lazydocker cũng ghi rằng Portainer hỗ trợ Docker Swarm, trường hợp mà tài liệu của lazydocker không đề cập.
Vấn đề mà nó giải quyết
Debug một service Docker Compose hay bị lỗi thường nghĩa là phải mở nhiều cửa sổ terminal cùng lúc: một cửa sổ chạy `docker-compose logs --follow myservice` nhưng lại tắt mỗi khi service đó restart, một cửa sổ khác chạy `docker-compose ps` để kiểm tra trạng thái, cộng thêm việc phải nhớ alias nào làm việc gì. README của lazydocker mô tả đúng vòng lặp này — kiểm tra trạng thái, restart container, rồi lại mất luồng log — như lý do dự án ra đời.
Ai nên dùng thử — và ai nên bỏ qua
Phù hợp với developer nào ngày nào cũng dùng docker hay docker-compose qua dòng lệnh và chán cảnh lặp lại restart-rồi-xem-log. Cũng hợp với ai quen làm việc trên terminal và muốn thêm một công cụ điều khiển bằng phím tắt bên cạnh vim hay tmux. Nó hợp ít hơn với một team cần dashboard mở được trên trình duyệt cho người không quen terminal, hoặc với ai đang chạy Docker Swarm, vì tài liệu của lazydocker không đề cập tới trường hợp đó.
lazydocker có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về lazydocker.
