Giới thiệu
Bài viết này hướng dẫn bạn cách cài đặt Docker trực tiếp trong Windows Subsystem for Linux 2 (WSL 2) mà không cần sử dụng Docker Desktop. Mình đã tổng hợp để bạn có thể làm nhanh chóng, chỉ yêu cầu một số dòng lệnh shell đơn giản. Điều này giúp tận dụng tối đa khả năng của WSL 2 và Docker, đồng thời giảm bớt sự phụ thuộc vào Docker Desktop.
Lợi ích của việc cài đặt Docker trong WSL 2 là gì?
Cài đặt Docker trực tiếp trong WSL 2 mang lại nhiều lợi ích. Đầu tiên, quá trình này rất nhanh chóng, giúp tiết kiệm thời gian và công sức. Thứ hai, Docker khi cài đặt trực tiếp trong WSL 2 tương thích với nhiều distro Linux, tạo điều kiện thuận lợi cho việc sử dụng và tùy chỉnh.
Ngoài ra, việc cài đặt Docker trong WSL 2 còn cho phép bạn chạy Kubernetes trực tiếp trong WSL 2 nếu bạn chọn sử dụng KinD hoặc bất kỳ công cụ nào khác cho phép bạn chạy một cụm Kubernetes mà không cần Docker Desktop. Điều này mở rộng khả năng của WSL 2 và Docker, đồng thời tạo điều kiện cho việc triển khai và quản lý các ứng dụng container hóa.
Có thể nó hơi rối, nhưng đơn giản là WSL sẽ giúp bạn chạy máy ảo linux trong môi trường windows.
Tại sao nên cài đặt Docker trực tiếp trong WSL 2 mà không cần Docker Desktop?
=> sẽ có một số lỗi về định dạng file, hay cơ bản là docker được thiết kế để chạy trên linux là chính. Thêm vào đó, vấn đề bản quyền đối với các doanh nghiệp lớn, nên bạn cần phải làm quen với dạng command của Docker.
Bước 1: Gỡ cài đặt Docker Desktop
Đầu tiên, bạn cần gỡ cài đặt Docker Desktop. Bạn cần làm vì chúng ta sẽ cài đặt Docker trực tiếp trong WSL 2 và không cần Docker Desktop nữa. Ngoài ra, bạn cũng nên xóa các liên kết mà Docker đã thêm vào WSL 2 để tránh bất kỳ sự nhầm lẫn nào trong quá trình cài đặt.
Bước 2: Cài đặt WSL2
Mình thường hay sử dụng Ubuntu. Nên mình hướng dẫn cách cài đặt distro này.
- Cài đặt WSL: Mở PowerShell với quyền quản trị (Run as Administrator) và chạy lệnh sau:
wsl --set-default-version 2
Nếu bạn nhận được một thông báo lỗi rằng WSL 2 yêu cầu cập nhật hệ điều hành, hãy làm theo các hướng dẫn trong thông báo để kích hoạt các tính năng máy ảo.
- Cài đặt Ubuntu: Mở Microsoft Store, tìm kiếm "Ubuntu", và cài đặt phiên bản Ubuntu bạn muốn (ví dụ: Ubuntu 20.04 LTS).
- Khởi động Ubuntu: Sau khi cài đặt, hãy mở Ubuntu từ menu Start. Lần đầu tiên bạn khởi động, nó sẽ hoàn thành việc cài đặt.
- Tạo người dùng mới: Bạn sẽ được yêu cầu tạo một tên người dùng mới và mật khẩu. Những thông tin này sẽ được sử dụng cho tài khoản superuser và tài khoản người dùng mặc định trong Ubuntu.
- Cập nhật và nâng cấp Ubuntu: Cuối cùng, bạn nên cập nhật và nâng cấp các gói phần mềm Ubuntu. Mở terminal Ubuntu và chạy các lệnh sau:
sudo apt update
sudo apt upgrade
Và đó là tất cả! Bạn đã cài đặt thành công WSL2 Ubuntu trên Windows.
Làm thế nào để cài đặt Docker và Docker Compose v2 trong WSL 2?
Bước 3: Cài đặt Docker / Docker Compose v2 trong WSL 2
Tiếp theo, chúng ta sẽ cài đặt Docker và Docker Compose v2 trong WSL 2. Đây là các lệnh cụ thể bạn cần chạy:
# Cài đặt docker, nếu có thông báo gì bạn cứ bình tĩnh coi, còn nếu kêu bạn chờ 20s thì cứ chờ đừng nôn nóng curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # Thêm quyền user và docker sudo usermod -aG docker $USER # Cài đặt Compose v2 sudo apt-get update && sudo apt-get install docker-compose-plugin
# Nếu bạn nào muốn cài đặt docker-compose v1 thì dùng:
sudo apt-get install docker-compose # Kiểm tra xem đã cài đặt được chưa docker --version docker compose version
# Nếu bạn đang Ubuntu 22.04 or Debian 10 / 11? Bạn cần phải thêm vào bước này để iptables không tự động stop service của bạn Lưu ý bạn phải chọn (1) để sử dụng iptables-legacy. Nếu không sẽ không start được service sudo update-alternatives --config iptables
Tiếp theo: Làm thế nào để đảm bảo rằng dịch vụ Docker đang chạy trong WSL 2?
Bước 4: Đảm bảo dịch vụ Docker chạy trong WSL 2
Chúng ta sẽ sử dụng một đoạn mã shell để đảm bảo rằng dịch vụ Docker sẽ được khởi động nếu nó chưa chạy. Bạn mở file ~/.profile
, hoặc .zprofile hoặc các file tương tự tùy distro của bạn đang dùng. Thêm vào đoạn code sau:
if grep -q "microsoft" /proc/version > /dev/null 2>&1; then if service docker status 2>&1 | grep -q "is not running"; then wsl.exe --distribution "${WSL_DISTRO_NAME}" --user root \ --exec /usr/sbin/service docker start > /dev/null 2>&1 fi fi
Đoạn mã trên sẽ khởi động dịch vụ Docker nếu nó chưa chạy. Lần đầu tiên chạy đoạn mã này, terminal của bạn có thể bị treo trong vài giây.
Sau khi thêm xong bạn thử tắt wsl bằng lệnh.
wsl --shutdown
Sau đó mở lại nếu docker tự động chạy thì bạn đã làm đúng.
Xử lý lỗi
sudo docker run hello-world docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.
Đây là lỗi không start được service docker bạn cần chỉnh lại iptables như đã hướng dẫn ở trên. sau đó chạy lại lệnh
sudo service docker start
Kết luận
Việc cài đặt Docker trực tiếp trong WSL 2 mà không cần Docker Desktop mang lại nhiều lợi ích, bao gồm tốc độ nhanh, khả năng tương thích với nhiều distro Linux, và khả năng chạy Kubernetes trực tiếp trong WSL 2. Điều này giúp tận dụng tối đa khả năng của WSL 2 và Docker, đồng thời giảm bớt sự phụ thuộc vào Docker Desktop.
Nếu bạn quan tâm đến việc phát triển phần mềm, hãy xem xét dự án phần mềm của chúng tôi. Phần mềm của chúng tôi có nhiều đặc điểm độc đáo, giúp tối ưu hóa quy trình làm việc và tăng năng suất.
Video cài đặt Docker trên WSL 2
Bình luận: