Tôi gặp phải một vấn đề tương tự, đó là vấn đề cấp phép và nguyên nhân của vấn đề này là do Docker daemon / server luôn chạy như root
người dùng và muốn bạn luôn mở đầu lệnh docker vớisudo
.
Docker daemon liên kết với một ổ cắm Unix thay vì cổng TCP. Theo mặc định, ổ cắm Unix được sở hữu bởi người dùng root
và những người dùng khác chỉ có thể truy cập nó bằng cách sử dụngsudo
.
Để khắc phục điều này, đây là những gì làm việc cho tôi:
Đầu tiên, hãy kiểm tra xem bạn đã tạo nhóm docker chưa:
cat /etc/group
Nếu bạn không tìm thấy docker
trong danh sách được hiển thị, thì bạn sẽ cần tạo một:
sudo groupadd docker
Tiếp theo, xác nhận của bạn user
và của bạn group
bằng cách sử dụng lệnh dưới đây:
cat /etc/group
Cuộn qua để xem nhóm cho docker. Nó phải là định dạng này
docker:x:140:promisepreston
nơi docker
là của tôi group
và promisepreston
là của tôiuser
Bây giờ chúng tôi có thể thêm người dùng của bạn vào nhóm docker
Chỉ dành cho Tệp Container Docker:
Sao chép và chạy lệnh bên dưới trong thiết bị đầu cuối của bạn chính xác như thế nào được nêu mà không sửa đổi nó trong bất kỳ hình thức nào, bất kể hình ảnh / container / lệnh docker mà bạn muốn chạy hoặc đang cố chạy hoặc đang gặp phải vấn đề về quyền:
sudo usermod -aG docker $USER
Sau khi chạy lệnh trên, bạn sẽ cần Đăng xuất và đăng nhập lại để thành viên nhóm của bạn được đánh giá lại. Tuy nhiên, trên Linux, bạn cũng có thể chạy lệnh sau bên dưới để kích hoạt các thay đổi cho các nhóm ( Sao chép và chạy lệnh bên dưới trong thiết bị đầu cuối của bạn chính xác như thế nào được nêu mà không sửa đổi nó trong bất kỳ hình thức nào, bất kể hình ảnh / container / lệnh docker nào bạn muốn chạy hoặc đang cố chạy hoặc đang gặp phải vấn đề về quyền ):
newgrp docker
Bây giờ bạn có thể xác minh rằng bạn có thể chạy các lệnh docker mà không cần quyền sudo, bằng cách chạy lệnh gây ra sự cố quyền lần nữa, giả sử ( Thay thế my-command
bằng tên của hình ảnh / container / lệnh của bạn ):
docker run my-command
Đối với các tệp Docker và tệp hệ thống cục bộ:
Nếu bạn có một bản sao của các tệp trên hệ thống tệp cục bộ của mình, thì bạn có thể thay đổi quyền sở hữu của thư mục ứng dụng nơi tệp ứng dụng được lưu trữ, sử dụng định dạng này:
sudo chown <your_user>:<your_group> -R my-app-directory/
Vì vậy, trong trường hợp của tôi, nó sẽ là:
sudo chown promisepreston:docker -R my-app-directory/
Ghi chú: Vui lòng chạy lệnh này trong thư mục mẹ chứa thư mục ứng dụng.
Đó là tất cả.
Tôi hi vọng cái này giúp được