2016-03-01 16 views
10

theo mặc định khi bạn chạyConnect để Docker container như người sử dụng không phải là gốc

docker run -it [myimage]

HOẶC

docker attach [mycontainer]

bạn kết nối với các thiết bị đầu cuối với người dùng root, nhưng tôi muốn kết nối với tư cách người dùng khác. Điều này có thể không?

+0

Có. 'docker run --user user_name' –

+0

và đính kèm? – Andy59469

+1

Không có tùy chọn để đính kèm. Bạn sẽ phải đăng nhập như là người chủ và sau đó 'su user_name' –

Trả lời

15

Đối docker run:

Đơn giản chỉ cần thêm tùy chọn --user <user> thay đổi để người dùng khác khi bạn bắt đầu container Docker.

docker run -it --user nobody busybox 

Đối docker attach hoặc docker exec:

Kể từ khi lệnh được sử dụng để đính kèm/thực vào quá trình hiện có, do đó nó sử dụng người dùng hiện có trực tiếp.

docker run -it busybox # CTRL-P/Q to quit 
docker attach <container id> # then you have root user 
/# id 
uid=0(root) gid=0(root) groups=10(wheel) 

docker run -it --user nobody busybox # CTRL-P/Q to quit 
docker attach <container id> 
/$ id 
uid=99(nobody) gid=99(nogroup) 

Nếu bạn thực sự muốn đính kèm vào người dùng mà bạn muốn có, sau đó

  1. bắt đầu với người dùng mà run --user <user> hoặc đề cập đến nó trong Dockerfile bạn sử dụng USER
  2. thay đổi người dùng sử dụng `su
3

Bạn có thể chỉ định USER trong Dockerfile. Tất cả các hành động tiếp theo sẽ được thực hiện bằng tài khoản đó. Bạn có thể chỉ định USER một dòng trước CMD hoặc ENTRYPOINT nếu bạn chỉ muốn sử dụng người dùng đó khi khởi chạy vùng chứa (chứ không phải khi tạo hình ảnh). Khi bạn bắt đầu một vùng chứa từ hình ảnh kết quả, bạn sẽ đính kèm như người dùng được chỉ định.

11

Bạn có thể chạy vỏ trong vùng chứa docker đang chạy bằng cách sử dụng lệnh như:

docker exec -it --user root <container id> /bin/bash

+0

* root * là người dùng mặc định. Tùy chọn '--user' có thể được bỏ qua khi các lệnh phải được chạy dưới dạng root mà tôi cho là. – Stphane

0

Cách duy nhất tôi có thể làm cho nó làm việc là bởi:

docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash su - magnus

Vì vậy, tôi phải cả hai xác định biến môi trường $ USER cũng một điểm/etc/passwd tập tin . Bằng cách này, tôi có thể biên dịch trong thư mục/siem và giữ quyền sở hữu các tập tin không có gốc.

Các vấn đề liên quan