[Ubuntu] Cài đặt và lưu ý khi chạy docker không cần lệnh sudo

Ngày 2019 tháng 10 năm 3

Một lưu ý về cách có thể chạy docker mà không cần sudo khi sử dụng docker trên Ubuntu.

cơ hội

Sau khi cài đặt docker, như làsudoTôi gặp lỗi khi kiểm tra thao tác không có lệnh.

# Chạy từ docker terminal của Ubuntu run hello-world 

docker: Đã bị từ chối cấp quyền khi cố gắng kết nối với ổ cắm daemon Docker tại unix:///var/run/docker.sock: Đăng http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: quay số unix /var/run/docker.sock: kết nối: quyền bị từ chối. Xem 'docker run --help'.

Có vẻ như quyền truy cập vào docker daemon bị từ chối. Tôi đã gõ sudo docker run hello-world và nó đã hoạt động.

Lý do cho lỗi là như sau.

Docker giao tiếp với một daemon (dockerd) chạy với quyền root thông qua unix socket hoặc tcp/ip, tuy nhiên để truy cập dockerd bạn cần thuộc nhóm docker hoặc có quyền root.

Hiểu sự nguy hiểm của việc thêm người dùng vào các nhóm docker trong Docker

Bằng cách thêm lệnh sudo, có thể thực thi các lệnh không thể thực thi nếu không có quyền root (chẳng hạn như kết nối với daemon) với tư cách là người dùng chung.Nhưng thêm sudo mỗi lần là khó chịu.

Các biện pháp đối phó và phòng ngừa

Một cách để chạy mà không cần sudo là làm cho người dùng thuộc nhóm dokcer (bạn có thể tìm thấy nhiều ví dụ bằng cách googling), nhưng dường như có vấn đề về bảo mật.

Tham khảo: Rủi ro khi cấp quyền tương tự root trong nhóm docker (tài liệu chính thức)

Nếu bạn muốn sử dụng docker mà không có sudo, newgrp Người ta nói rằng tốt hơn là tạm thời thuộc về một nhóm có hoặc không gian tên người dùng.

sudo groupadd docker # trong đó $USER là tên người dùng của bạn sudo usermod -aG docker $USER newgrp docker run hello-world 

Xin chào từ Docker!
Thông báo này cho biết rằng cài đặt của bạn dường như đang hoạt động bình thường.

Để tạo thông báo này, Docker đã thực hiện các bước sau:

1. Máy khách Docker đã liên hệ với daemon Docker.
2. Docker daemon lấy image “hello-world” từ Docker Hub.
(amd64)
3. Trình nền Docker đã tạo một vùng chứa mới từ hình ảnh đó để chạy
có thể thực thi được để tạo ra kết quả mà bạn hiện đang đọc.
4. Trình nền Docker đã truyền đầu ra đó tới ứng dụng khách Docker, ứng dụng này đã gửi nó
đến thiết bị đầu cuối của bạn.

Để thử thứ gì đó tham vọng hơn, bạn có thể chạy bộ chứa Ubuntu với:
$ docker run -it ubuntu bash

Chia sẻ hình ảnh, tự động hóa quy trình làm việc và hơn thế nữa với ID Docker miễn phí: https://hub.docker.com/

Để biết thêm ví dụ và ý tưởng, hãy truy cập:
https://docs.docker.com/get-started/