2015-04-27 118 views
13

我是新來的碼頭工人。當我使用命令運行像ubuntu鏡像這樣的Docker鏡像時,如何以非root用戶身份運行docker映像?

sudo docker run -i -t ubuntu:14.04 

默認情況下,它以root身份進入容器,像這樣。 enter image description here

我搜索這個方面,但我完全對這個話題首發我找不到任何的如何啓動一個碼頭工人的圖像作爲非root用戶。

如果有人用一個如何以非root用戶身份運行docker鏡像的例子進行說明,那將會很棒。

回答

16

docker run命令的-u parameter允許您指定不同的用戶。在你的情況,並假設你有一個在你的碼頭工人形象命名foo用戶,你可以運行:

sudo docker run -i -t -u foo ubuntu:14.04 /bin/bash 

注:-u參數是Dockerfile的USER指令的等價物。

+1

是否將用戶添加到_docker_組? –

+0

我們是否需要此用戶(英國)在我們正在運行的碼頭集裝箱內?否則圖像將如何識別該用戶?正如Adrian所問,你是指碼頭組? – Stranger

+0

另外它會拋出錯誤,'FATA [0000]來自守護進程的錯誤響應:無法啓動容器acbd05873a7a22fdd538c931f9e6ee54184ff5f3ac6c281d732bbde1823cb731:[8]系統錯誤:無法找到用戶uk' – Stranger

-2

不建議允許在不使用sudo的情況下運行docker,因爲Docker沒有內置審計或日誌記錄,而sudo卻是。 如果您想讓docker訪問非root用戶,Red Hat建議設置sudo。 向/ etc/sudoers添加如下條目。

dwalsh  ALL=(ALL)  NOPASSWD: /usr/bin/docker 

現在,設立在〜/ .bashrc一個別名運行泊塢窗命令:

alias docker="sudo /usr/bin/docker" 

現在,當用戶執行該命令泊塢窗以非根將被允許,並得到適當的日誌記錄。

docker run -ti --privileged -v /:/host fedora chroot /host 

看日誌或/ var/log/messages。

journalctl -b | grep docker.*privileged 
Aug 04 09:02:56 dhcp-10-19-62-196.boston.devel.redhat.com sudo[23422]: dwalsh : TTY=pts/3 ; PWD=/home/dwalsh/docker/src/github.com/docker/docker ; USER=root ; COMMAND=/usr/bin/docker run -ti --privileged -v /:/host fedora chroot /host 
+4

用戶詢問有關以容器外的非root用戶身份運行的內容,而您正在討論以容器外的非root用戶身份運行。非常不同的問題。 –

0

這是無可否認的哈克,但對你有好處開始只是爲了快速測試的東西那些小巧的容器:

#!/bin/bash 

set -eu 

NAME=$1 
IMG=$2 

#UID=$(id -u) 
USER=$(id -un) 
GID=$(id -g) 
GROUP=$(id -gn) 

# --privileged needed for dmidecode 
docker run --privileged -d -v /tmp:/tmp -v "/home/$USER:/home/$USER" -h "$NAME" --name "$NAME" "$IMG" init 

docker exec "$NAME" /bin/bash -c "groupadd -g $GID $GROUP && useradd -M -s /bin/bash -g $GID -u $UID $USER" 

腳本的完整版我在這裏使用:

https://github.com/ericcurtin/staging/blob/master/d-run

相關問題