請教各位達人一個關于docker的問題哈。我想在docker run的時候,用-d引數運行/bin/bash,然后讓這個bash一直跑著,我要用的時候就docker attach上去。但是我一跑docker run -d .... /bin/bash,這個容器就運行結束停下來了。這是什么原因呢?求解?
uj5u.com熱心網友回復:
docker run指定的命令如果不是那些一直掛起的命令(比如運行top,不斷echo),就是會自動退出的。-d命令是設定detach為true,根據官方的檔案,意思是讓這個命令在后臺運行,但并不是一直運行(我們在一個正常的Linux Terminal中運行/bin/bash,運行完了也就完了,不會一直掛著等待回應的,所以確實沒辦法用daemon方式來跑/bin/bash)。這個地方官方早期和現在的檔案也確實有些前后不一致,現在是detach,早期的檔案說指定-d以daemon方式來運行容器,可能存在一定的誤解。
另外,如果你需要跑容器里的bash,直接運行docker run -i -t CONTAINER_NAME /bin/bash 就可以了,如果覺得引數比docker attach多,可以設定一個別名(alias)來解決:
alias dockerbash='docker run -i -t CONTAINER_ID /bin/bash'
設定好別名后,直接運行dockerbash就可以進入容器的bash了
uj5u.com熱心網友回復:
啟動了一個容器之后,我們可能需要用ssh登陸進去進行一些操作。為達到此目的,有2點需要保證:容器必須處于運行狀態。
openssh-server處于啟動狀態。
注意:以下示例是在ubuntu/13.10中完成的
首先確保鏡像安裝有openssh-server服務
# 官方鏡像一般沒有安裝ssh服務端,so,需要安裝一個
apt-get install openssh-server
# 設定一個初始密碼
passwd 123
...
然后,提交鏡像:
docker commit CONTAINER_ID NAME/VERSION
最后,運行鏡像,并讓生成的容器一直在后臺運行:
# 第一個-d表示讓容器在后臺運行
# 末尾的-D表示啟動ssh的daemon模式,不然容器啟動后立刻就變為停止狀態了
docker run -d NAME/VERSION /etc/init.d/ssh start -D
現在,便可以ssh登陸容器了。
# 查詢容器IP
docker inspect CONTAINER_ID | grep IP
# 登入
ssh root@IP
# 輸入密碼 123完成登陸
# 為保證安全,請即刻用passwd修改密碼
uj5u.com熱心網友回復:
這種需求最好還是用ssl image直接運行 docker run -p 22:22 tutum/ubuntu 即可
參看: https://github.com/tutumcloud/tutum-ubuntu
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105611.html
標籤:Docker
