Cách tiêu chuẩn để chạy trình nền Docker Engine (không có Docker Desktop) trong WSL Ubuntu chỉ đơn giản là:
khởi động docker dịch vụ sudo
Điều này xử lý daemonization của nó cùng với nhiều nhiệm vụ khác. Bạn có thể xem toàn bộ kịch bản bằng cách kiểm tra /etc/init.d/docker
. Chạy cái này thay vì cố gắng sao chép thủ công quá trình khởi động.
Nếu bạn muốn nó tự động bắt đầu, có một số tùy chọn:
Bạn đã thấy câu trả lời khác để sửa đổi tập lệnh khởi động của mình. Cá nhân, tôi không phải là một fan hâm mộ lớn của phương pháp này. Đầu tiên, tôi muốn giữ cho các tập lệnh khởi động của mình gọn gàng nhất có thể để có hiệu suất tốt nhất. Thứ hai, những sửa đổi như thế này có xu hướng "tích lũy" theo thời gian, khiến việc khắc phục sự cố trình bao của bạn trở nên khó khăn hơn trong tương lai. Điều đó nói rằng, nó không phải là một lựa chọn khủng khiếp cho WSL, ít nhất là trên Windows 10.
Tuy nhiên, nếu bạn thực sự muốn đi theo con đường này, có một cách dễ dàng hơn nhiều so với câu trả lời khác. Đơn giản chỉ cần thêm dòng sau vào của bạn ~/.bash_profile
(vì có vẻ như bạn đang sử dụng Bash):
wsl.exe -u root -e sh -c "trạng thái docker dịch vụ > /dev/null || bắt đầu docker dịch vụ"
Đó là tất cả. Bạn không cần phải thực hiện các sửa đổi đối với sudoers
từ wsl.exe -u gốc
thực thi phiên với tư cách là người dùng root mà không cần mật khẩu.
Nhưng chắc chắn sử dụng của bạn ~/.bash_profile
cho việc này, không ~/.bashrc
. Cái trước chỉ được thực hiện cho đăng nhập shell, nhưng cái sau được thực thi cho tất cả các shell tương tác, bổ sung thêm chi phí hoạt động.
Windows 11 giúp việc này trở nên dễ dàng hơn (nếu bạn có thể nâng cấp) với cấu hình đặc biệt cho các dịch vụ mà bạn muốn chạy khi phiên bản WSL khởi động. Chỉ cần sudo vi /etc/wsl.conf
với các nội dung sau:
[khởi động]
lệnh = "bắt đầu docker dịch vụ"
Điều này sẽ chỉ thực hiện một lần, khi Ubuntu được khởi động. Nếu phiên bản bị tắt với wsl --chấm dứt Ubuntu
hoặc wsl --shutdown
, nó sẽ chạy lại lần sau khi bạn khởi động Ubuntu.
Các lệnh này cũng chạy với quyền root mà không cần mật khẩu.
Nếu bạn muốn khởi động Docker Engine bất cứ khi nào bạn đăng nhập vào Windows, hãy tạo một "Tác vụ theo lịch trình" trong Windows chạy trên Đăng nhập và trỏ đến wsl.exe
với các đối số là -u root -e sh -c "trạng thái docker dịch vụ || bắt đầu docker dịch vụ"