Làm thế nào tôi có thể sử dụng docker mà không có ích?

Trên Docker tài liệu của trang, tất cả ví dụ lệnh được hiển thị mà sudo như thế này:

docker ps

Trên ổ, các nhị phân được gọi là docker.io. Nó cũng không làm việc mà không có ích:

sudo docker.io ps

Làm thế nào tôi có thể cấu hình Docker vì vậy mà tôi không cần tiền tố mỗi Docker lệnh với bạn?

Tin tốt: docker mới (phiên bản 19.03 (hiện thử nghiệm)) sẽ có thể chạy rễ phủ nhận những vấn đề đó có thể xảy ra bằng cách sử dụng một người sử dụng gốc. Không phiền với quyền truy cập cao, rễ và bất cứ điều gì có thể mở máy khi anh không muốn.

Video về điều này [Flavius toma 2019] Cứng Docker linh thú với Rễ chế độ

Một vài hãy cẩn thận với các rễ Docker chế độ

Các kỹ sư Docker nói rễ chế độ không thể được coi là một sự thay thế cho bộ đầy đủ của Docker tính năng động cơ. Một số giới hạn cho những rễ trạng thái bao gồm:

  • tiện ích bổ sung tài nguyên điều hành an ninh hồ sơ, trạm kiểm soát lại, che phủ mạng etc. không làm việc trên rễ chế độ.
  • Phơi bày cảng từ thùng đang yêu cầu hướng dẫn sử dụng socat trợ giúp quá trình.
  • Chỉ làm thế nào để dựa phân phối hỗ trợ phủ các tập tin trong rễ chế độ.
  • Rễ mode hiện nay chỉ cung cấp cho đêm xây dựng mà có thể không được ổn định như bạn đang sử dụng.

Như của docker 19.3 này là lỗi thời (và nguy hiểm hơn cần được):

Những docker hướng dẫn sử dụng có điều này muốn nói về nó:

Cho không-truy cập gốc

Docker trình luôn luôn chạy như dùng gốc, và kể từ Docker phiên bản 0.5.2, docker trình liên kết với một ổ cắm Unix thay vì của một trình cảng. Bởi định rằng Unix ổ cắm là thuộc sở hữu của các người sử dụng nguồn gốc, và như vậy, mặc định, bạn có thể có nó với bạn.

Bắt đầu từ trong phiên bản 0.5.3, nếu bạn (hoặc Docker cài đặt) tạo ra một Unix nhóm gọi là docker và thêm người dùng đến nó, sau đó docker trình sẽ làm cho các quyền sở hữu của Unix ổ cắm đọc/ghi bởi docker nhóm khi chương trình bắt đầu. Docker trình luôn luôn phải chạy như là gốc dùng, nhưng nếu bạn chạy docker khách hàng như một người sử dụng trong docker nhóm sau đó bạn không cần thêm bạn đến tất cả các khách hàng lệnh. Như của 0.9.0, bạn có thể xác định rằng một nhóm khác hơn docker nên sở hữu Unix ổ cắm với các -G lựa chọn.

Cảnh báo: docker nhóm (hoặc nhóm quy định với -G) là rễ-đương xem Docker Trình Tấn công Bề mặt chi tiết và này trên của bạn! Tại sao chúng ta không để cho không-gốc người chạy Docker trong hàng trăm, Fedora, hoặc RHEL (nhờ michael-n).

Trong những phát hành thử nghiệm rễ chế độ trên điện thoại các kỹ sư đề cập đến rễ chế độ cho phép chạy dockerd không có đặc quyền như một người sử dụng, sử dụng user_namespaces(7), mount_namespaces(7), network_namespaces(7).

Người cần phải chạy dockerd-rootless.sh thay vì dockerd.

$ dockerd-rootless.sh --experimental

Như Rễ chế độ là thử nghiệm, người cần phải luôn luôn chạy dockerd-rootless.sh với thử nghiệm.


Quan trọng để đọc: đăng-bước cài đặt cho máy (nó cũng liên kết đến Docker Trình Tấn công Bề mặt chi tiết).

Quản lý Docker như một dùng gốc

Docker trình liên kết với một ổ cắm Unix thay vì của một trình cảng. Bởi định rằng Unix ổ cắm là thuộc sở hữu của các người sử dụng nguồn gốc và các người chỉ có thể truy cập vào nó sử dụng ích. Docker trình luôn luôn chạy như là gốc dùng.

Nếu bạn không muốn sử dụng ích khi sử dụng các docker lệnh, tạo ra một Unix nhóm gọi là docker và thêm người dùng đến nó. Khi docker trình bắt đầu, nó làm cho quyền sở hữu của Unix ổ cắm đọc/ghi bởi docker nhóm.


  • Thêm docker nhóm nếu nó không tồn tại:

     sudo groupadd docker
  • Thêm kết nối người dùng từ năm$DÙNG từ năm để docker nhóm. Thay đổi các người dùng tên để phù hợp với bạn ưa thích dùng nếu bạn không muốn sử dụng dùng hiện tại:

     sudo gpasswd -a $USER docker
  • Hoặc là làm một newgrp docker hoặc thoát ra/trong để kích hoạt các thay đổi nhóm.

  • Bạn có thể sử dụng

     docker run hello-world

    để kiểm tra xem nếu bạn có thể chạy docker mà không có ích.

Để chạy docker lệnh mà sudo anh cần thêm người dùng của bạn (người đã gốc quyền) để docker nhóm. Cho cái này chạy theo lệnh:

 sudo usermod -aG docker $USER

Bây giờ, có người thoát sau đó đăng nhập một lần nữa. Đây là giải pháp tốt giải thích ở đây thích hợp với quá trình lắp đặt.

Cơ chế mà thêm một người dùng để nhóm docker cấp phép để chạy docker là để có được truy cập vào các ổ của docker xuống /var/run/docker.sock. Nếu các hệ thống chứa /var/run đã được gắn kết với Cụ kích hoạt này cũng có thể đạt được thông qua Điện.

sudo setfacl -m user:$USER:rw /var/run/docker.sock

Tôi chỉ có bao gồm này cho đầy đủ.

Nói chung, tôi đề nghị để tránh Cụ bất cứ khi nào một lựa chọn tốt nhất dựa vào các nhóm sẵn: Đó là tốt hơn nếu các đặc quyền trong một hệ thống có thể hiểu được nhìn vào các thành viên nhóm, chỉ có. Cần phải quét các file hệ thống cho ACL mục để hiểu hệ thống quyền là một gánh nặng thêm cho kiểm tra an ninh.

Cảnh báo 1 Này đã cùng root tương đương như thêm $USER để những docker nhóm. Bạn vẫn có thể bắt đầu một thùng chứa trong một cách mà chưa root truy cập vào hệ thống máy chủ.

Cảnh báo 2: Cụ đáng kể khó khăn hơn cho kiểm tra an ninh hơn nhóm-dựa an ninh. Có lẽ tránh Cụ nếu có thể, khi bạn có thể sử dụng nhóm thay vào đó, ít nhất là trong kiểm toán-có liên quan môi trường.

Sau khi tạo docker và thêm người dùng của tôi để nó với

sudo groupadd dockersudo usermod -aG docker $USER

... Tôi vẫn đã để cho những /var/run/docker.sock và ổ cắm /var/run/docker mục quyền thích hợp để làm cho nó hoạt động:

sudo chown root:docker /var/run/docker.socksudo chown -R root:docker /var/run/docker

Đăng xuất và đăng nhập một lần nữa (với người đó) sau đó bạn sẽ có thể chạy docker lệnh mà sudo:

docker run hello-world

Docker đựng cần phải chạy bởi một người sử dụng gốc. Bạn có thể thêm cho mình docker nhóm (ví dụ như bởi chạy sudo usermod -aG docker $USER), nhưng điều này làm cho nó dễ dàng cho bất cứ ai có thể truy cập vào những $USER tài khoản để đạt được gốc quyền truy cập vào các máy (ví dụ bằng cách gắn một khối lượng gốc trong một đặc quyền container).

Một hơn, có ý thức an ninh cách để chạy Docker đựng như một dùng gốc sẽ được sử dụng Podman: https://podman.io/. Từ trang web của mình:

Podman là một daemonless container động cơ cho phát triển, quản lý, và chạy OCI Thùng chứa trên của bạn trong các Hệ thống. Container có thể được chạy như là gốc hay trong rễ chế độ. Chỉ đơn giản là đặt: alias docker=podman.

Một sự thay thế là Dị, mà là nhiều hơn thường được triển khai ở RỘNG môi trường: https://sylabs.io/.

Làm thế nào về một bí danh:? Bằng cách đó, bạn vẫn sử dụng nam, với bảo vệ mật khẩu. bí danh docker="nam docker "

Đừng quên để cho phép những người ủng hộ :wink:

Trên ổ 14.04 đó là cũng ‘docker’ nhị phân.

Đề nghị lắp đặt máy phân tích docker định ubuntu trong thay vào đó, hướng dẫn ở đây ( Redirecting… ), giới thiệu cách sử dụng các docker kho. Loại bỏ tất cả các hiện docker thứ, và kiểm tra bạn đang nhận được một từ bên phải nguồn: khuynh-tạm mật docker-động cơ (khuynh url nên từ dockerproject.org)

Những gì rác này là cho đòi hỏi gốc để làm những việc đơn giản như docker thông tin. Giống như docker thông tin cần nguyên truy cập để tất cả các tập tin của tôi và các thiết bị và cổng để chạy.

@anatolytechtonik tôi cũng sử dụng ‘docker’ thay vì ‘docker.io’ trong windows 14.04

Ừ, cho đến khi Docker thực hiện lấy hoặc cái gì đó tương tự, tôi muốn đề nghị sử dụng bí danh, nếu không thì bạn cũng có thể chỉ chạy tất cả mọi thứ như là gốc.

ngôi đèn flash 666 /var/chạy/docker.sock