Quyền bị từ chối khi chạy Docker sau khi cài đặt nó dưới dạng Snap


33

Tôi đã cài đặt Docker thông qua cửa hàng Phần mềm, cho biết đó là gói Snap. Điều đó ổn đối với tôi, tôi đoán vậy, nhưng thật không may, mọi lệnh Docker tôi đã thử không hoạt động:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

Bất kỳ ý tưởng làm thế nào để khắc phục điều này?

Chỉnh sửa: Bây giờ tôi đã xử lý vấn đề này bằng cách cài đặt Docker từ kho riêng của Docker , có thể hoạt động cho những người duyệt câu hỏi này trong tương lai. Mặc dù vậy, tôi đang để lại câu hỏi cho những ai muốn có thể chạy nó từ Snap.


Đã cài đặt docker từ repos chính thức. Docker đã chạy khi tôi thêm người dùng của mình vào dockernhóm, id -nGkhông hiển thị docker và bất kỳ dockerlệnh nào dẫn đến lỗi từ chối cấp phép. Đăng xuất và đăng nhập lại không hoạt động vì quá trình hệ thống docker tiếp tục chạy. Khởi động lại hệ thống hoặc khởi động lại docker cho thấy người dùng là một phần của nhóm docker và cho phép thực thi các lệnh docker. LƯU Ý: 0 đại diện, không thể thêm nhận xét.
Santosh Patel

Câu trả lời:


33

Đây là từ trang GitHub, bạn đã thử các bước chính xác sau:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

Từ Docker snap github


Tôi đã không nhìn thấy trang đó, vì vậy cảm ơn cho liên kết. Điều đó nói rằng, vì tôi không sử dụng Ubuntu Core, tôi phải làm theo addgrouphướng dẫn, mà tôi nghĩ là về những gì tôi đã làm, theo các câu trả lời khác. Thật không may, tôi không muốn chạm vào hệ thống hiện đang hoạt động nữa, nhưng tôi rất muốn nghe nếu người khác thử điều này và quản lý để làm cho nó hoạt động.
Vincent

2
vô hiệu hóa / kích hoạt snaper snap đã giúp tôi, cảm ơn
Manish Kumar

1
Điều này cũng áp dụng cho Ubuntu (Desktop) 19.04.
Nick Breen

31

Thông báo lỗi cho bạn biết rằng người dùng hiện tại của bạn không thể truy cập vào công cụ docker, vì bạn thiếu quyền truy cập vào ổ cắm unix để liên lạc với công cụ.

Giải pháp tạm thời

Sử dụng sudolệnh để thực thi các lệnh với quyền nâng cao mỗi lần.

Giải pháp vĩnh viễn (đề xuất)

Thêm người dùng hiện tại vào dockernhóm. Điều này có thể đạt được bằng cách gõ

sudo usermod -a -G docker $USER

Bạn phải đăng xuất và đăng nhập lại để thành viên nhóm có hiệu lực.

Nguồn: techoverflow.net


1
Google-fu của bạn tốt hơn của tôi, rõ ràng. Thật không may, điều này không hoạt động. Trước hết, dockernhóm không tồn tại. Tôi sau đó chạy đầu tiên sudo addgroup dockervà sau đó chạy lại lệnh của bạn, sau đó đăng xuất và đăng nhập lại. Thật không may, lỗi hiển thị trong câu hỏi vẫn tồn tại ...
Vincent

2
@Vincent bạn không quên thay đổi nhóm không diễn ra ngay lập tức, phải không? Hãy thử newgrp dockerhoặc đăng xuất và đăng nhập.
ADDB

Không, xin lỗi, quên đề cập đến điều đó - Tôi đã cập nhật nhận xét của mình trong khi bạn trả lời :) Chạy groups vincentcho:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent

@Vincent chỉ để tham khảo, daemon docker của bạn đã bắt đầu, phải không? Hãy thử sudo /etc/init.d/docker statushoặc sudo service docker statusđể kiểm tra điều này.
ADDB

Hmm, tôi không nghĩ rằng những công việc đó là do Snap: paste.ubfox.com/25219172 Điều đó nói rằng, ps cax | grep dockerdcho 31034 ? Ssl 0:05 dockerd.
Vincent

6

Tôi giả sử, tên người dùng của bạn đã ở trong nhóm docker. Để kiểm tra điều này, ban hành lệnh dưới đây.

id -nG

Nếu không, bạn cần thêm người dùng của mình vào nhóm docker bằng lệnh bên dưới.

sudo groupadd docker
sudo usermod -aG docker $USER

Khi bạn thực thi lệnh sudo systemctl start docker, nó sẽ tạo ra một quá trình docker. Quá trình docker chứa dockerdchủ đề daemon. Lệnh cũng tạo docker.sockổ cắm Unix mặc định . Các docker.sockổ cắm liên tục được nghe bởi dockerdchủ đề daemon. Điều này làm cho bạn có thể thực hiện IPC cấp kernel với docker.pidquy trình. Để có thể sử dụng ổ cắm docker này, bạn cần có sự cho phép thích hợp từ cấp độ xử lý ( docker.pid) và cấp độ tệp ( docker.sock). Vì vậy, thực hiện dưới hai lệnh sẽ giải quyết vấn đề của bạn. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid


Chỉ điều này hoạt động cho Ubuntu 18.04. Cảm ơn rất nhiều Uddhav Gautam
Sabbir

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

không yêu cầu khởi động lại và an toàn hơn


1

Bạn nên thêm người dùng vào nhóm Docker ( xem tài liệu chính thức ).

Bạn có thể thêm sudovào trước lệnh hoặc bạn có thể thêm người dùng trong dockernhóm bằng cách sử dụng lệnh này:

sudo usermod -aG docker <USER>

Đăng xuất và đăng nhập lại để thành viên nhóm của bạn được đánh giá lại.


Vì nội dung tại liên kết đó có thể biến mất, vui lòng thêm các chi tiết có liên quan ở đây.
Chai T. Rex

Không cần, câu trả lời khác đã được đề cập khi thêm người dùng vào nhóm - điều đó không có ích. (Ngoài ra, không có lý do tại sao điều đó sẽ giúp cho cài đặt Snap nhưng không phải cho cài đặt thông thường.)
Vincent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.