Không thể kết nối với Docker Daemon tại ‘unix: ///var/run/docker.sock’
Docker ngày càng trở nên phổ biến với khả năng tạo, triển khai và chạy các ứng dụng sử dụng vùng chứa một cách dễ dàng. Vùng chứa cho phép các nhà phát triển đóng gói một ứng dụng với tất cả các thư viện và phần phụ thuộc của nó trước khi triển khai nó dưới dạng một gói đầy đủ. Đang cài đặt Docker trên Linux tương đối dễ dàng. Tất cả những gì bạn cần làm là chạy một vài lệnh trong Terminal và bạn đã sẵn sàng.
Tuy nhiên, điều này có thể không giống nhau đối với tất cả người dùng, ngay cả sau khi cài đặt thành công. Một trong những lỗi phát sinh phổ biến nhất là:Không thể kết nối với daemon Docker tại (unix: ///var/run/docker.sock. Trình nền docker có đang chạy không?) Lỗi này có thể phát sinh khi chạy các lệnh docker khác nhau như chạy docker, thông tin về docker, kéo docker, dừng docker, v.v.
Nguyên nhân nào gây ra Lỗi: Không thể kết nối với Docker Daemon?
Sau khi nhận được nhiều lời phàn nàn của các nhà phát triển, chúng tôi quyết định đi sâu vào và đưa ra các giải pháp hiệu quả. Một số lý do gây ra lỗi này bao gồm:
- Docker daemon khôngđang chạy.
- Docker khôngtắt sạch sẽ.
- Thiếuđặc quyền root để bắt đầu dịch vụ docker.
Bây giờ bạn đã có hiểu biết cơ bản về nguyên nhân sự cố, hãy cùng xem các giải pháp khác nhau có sẵn cho bạn.
Giải pháp 1: Khởi động dịch vụ Docker với systemctl
Nếu bạn vừa hoàn thành cài đặt mới của Docker trên Ubuntu hoặc khởi động lại PC của mình, thì khả năng cao làDịch vụ Docker Làkhông chạy. Docker daemon (dockerd) là dịch vụ hệ thống dành cho docker. Dịch vụ này xử lý các đối tượng Docker khác nhau như hình ảnh, vùng chứa, mạng và khối lượng và lắng nghe các yêu cầu API Docker.
Lệnh Systemctl ra đời để thay thế hệ thống init SysV cũ và nóquản lý các dịch vụ systemd chạy trên hệ thống Linux. Nếu bạn không có systemctl trong hệ thống của mình, đừng lo lắng; sử dụngdịch vụ lệnh như mô tả bên dưới.
Ghi chú: Phương pháp này chỉ hoạt động đối với những người dùng đã cài đặt Docker với trình quản lý gói APT. Nếu bạn đã cài đặt Docker quaSNAP, tham khảoGiải pháp 5phía dưới.
- Mở thiết bị đầu cuối và thực hiện lệnh đầu tiên -mở mặt nạ.
sudo systemctl bật mí docker
Nếu chúng tôi cố gắng khởi động dịch vụ docker khi docker bị che, chúng tôi có thể gặp phải lỗi "Không thể khởi động docker.service: Unit is masked." Mask có thể được coi là một phiên bản vô hiệu hóa mạnh mẽ hơn. Khi tệp đơn vị bị che, đơn vị được liên kết với ‘dev / null.’ Bạn có thể liệt kê trạng thái của tất cả tệp đơn vị bằng lệnh - ‘$ systemctl list-unit-files‘
2. Sau khi đơn vị docker là lộ mặt, chúng ta có thể khởi động dockerdaemon bằng lệnh systemctl. Các người đóng tàu daemon quản lý các đối tượng docker như Hình ảnh, Vùng chứa và các yêu cầu API Docker. Thực hiện lệnh dưới đây trên dòng lệnh.
docker bắt đầu systemctl
3. Để kiểm chứng cho dù dịch vụ docker đang hoạt động và đang chạy. Chúng tôi sẽ sử dụngtrạng thái systemctl , hiển thị trạng thái hiện tại của dịch vụ cụ thể. Thực hiện lệnh bên dưới trên Terminal của bạn.
docker trạng thái systemctl
Từ hình ảnh trên, chúng ta có thể thấy rằngdocker đang hoạt động và đang chạy.
Giải pháp 2: Dọn dẹp dịch vụ 'Kéo Docker không thành công' và Bắt đầu dịch vụ Docker
Có những trường hợp bạn có thể đóng Docker một cách bất ngờ khi đang kéo một vùng chứa. Những tình huống như vậy sẽ che giấu docker.service vàdocker .socketcác tập tin. Docker.socket là một tệp nằm tại ‘/var/run/docker.sock’ và được sử dụng để giao tiếp với Docker daemon. Chúng tôi sẽ cầnvạch mặt các tệp hai đơn vị - docker .service và docker.daemon trước đâytiến hành đếnkhởi động docker.
- Khởi chạyThiết bị đầu cuối và thực hiệnlệnh phía dưới:
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Nếu bạn vẫn gặp lỗi ngay cả sau khi thực hiện các lệnh bên dưới, chúng tôi sẽ cần xóa bỏ các tập tin trong Containerd thư mục trước khi khởi động lại Docker. Containerd là một tính năng được giới thiệu trong Docker 1.11 và được sử dụng để quản lý vòng đời của hình ảnh Docker.
2. Mở Terminal và thực hiện các lệnh bên dưới. Đảm bảo bạn biết mật khẩu gốc vì chúng ta sẽ cần các đặc quyền nâng cao để thực hiện các lệnh.
sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
Giải pháp 3: Khởi động dịch vụ Dockerd (Docker Daemon)
Dockerd là trình nền Docker lắng nghe các API Docker và quản lý các đối tượng Docker khác nhau. Dockerd có thể được sử dụng thay thế cho lệnh ‘$ systemctl start docker‘Cũng được sử dụng để khởi động trình nền Docker.
- Mở Thiết bị đầu cuối và bắt đầu dockerd bằng cách thực hiện lệnh dưới đây:
sudo dockerd
Giải pháp 4: Khởi động Docker bằng lệnh Service
Nếu bạn đang sử dụng Hệ thống init SysV, thì lệnh systemctl sẽ không hoạt động với bạn. Chúng tôi sẽ cần sử dụng lệnh dịch vụ đến khởi động trình nền docker.
- khởi chạy Terminal và hành hình các lệnh bên dưới:
dịch vụ sudo - trạng thái-tất cả dịch vụ sudo bắt đầu
Giải pháp 5: Bắt đầu Dịch vụ Docker với Snap
Nếu bạn đã cài đặt Docker vớiTrình quản lý gói Snap, bạn sẽ cần sử dụng lệnh snap để quản lý trình nền của docker.
Nói chung, Snap quản lý các dịch vụ của họ một cách tự động. Tuy nhiên, trong những trường hợp như lỗi này, nó sẽ cần đến sự can thiệp của thủ công. Một số đối số bạn có thể sử dụng với lệnh snap bao gồm dừng, bắt đầu và khởi động lại. Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng tham số bắt đầu.
- Mở Terminal và thực hiện lệnh bên dưới đểkhởi động Docker.
sudo snap start docker
2. Thực hiện lệnh dưới đây để kiểm chứng liệu Dịch vụ Docker đã được bắt đầu.
dịch vụ chụp ảnh sudo
Răng se danh sách tất cả đang chạy dịch vụ chụp nhanh.
Nếu các lệnh trên không hiệu quả với bạn, hãy thử kết nối docker: phích cắm tại nhà vì nó không được kết nối tự động theo mặc định. Sau khi hoàn thành, khởi đầu các Dịch vụ Docker.
3. Khởi chạy Terminal và chạy các lệnh bên dưới:
sudo snap kết nối docker: home: home sudo snap start docker
Giải pháp 6: Khởi động Docker cho người dùng không có Root Pđặc quyền
Lỗi cũng có thể phát sinh do thiếu các đặc quyền nâng cao và người dùng không có quyền truy cập vào ‘unix: ///var/run/docker.sock.’ May mắn thay, có một giải pháp. Chúng tôi sẽ xuất biến Docker Host sang localhost qua cổng 2375.
- Mở Terminal và chạy lệnh dưới đây:
xuất DOCKER_HOST = tcp: // localhost: 2375
Giải pháp 7: Cài đặt lại Docker
Nếu các giải pháp trên không giải quyết được lỗi, thì khả năng cao là bạn có thể gặp lỗi cài đặt. Để cài đặt Docker chính xác trong hệ thống Linux của bạn, hãy làm theo các bước từ trang web chính thức của Docker.