[Docker] 用 docker exec 在執行中的 container 裡叫出 shell

[Docker] 用 docker exec 在執行中的 container 裡叫出 shell

今天想用 docker 跑一個 moinmoin wiki 的 container,可是一直遇到權限的問題,

想去 debug,但是 container 一起來就是跑 web app,

要怎麼連進去一個已經在跑的 container 呢?

 

直覺想到的 docker attach 是不行的,因為拿不到 console…

找了一下,原來可以用 docker exec 在一個已經在跑的 container 裡面,

再執行一個程式,這樣就可以再跑出一個 shell 了~

 

參考資料:

How to get bash or ssh into a running container in background mode?

 

舉例來說,我先用下面的指令,把 moinmoin 的 container 執行起來:

docker run --rm -it -p 20080:80 -v /moin:/usr/local/share/moin:Z --name=wiki eternnoir/moinmoin

 

這個 container 一執行起來就會執行 uwsgi 來跑 web app,

但這時可以用 docker exec 來連到 container 裡面,多開一個 shell 來 debug,

就可以來檢查像是 moin 這個目錄下的東西有沒有問題了:

testuser@localhost ~ $ docker exec -it wiki /bin/bash
root@87af42b06fc0:/usr/local/share# ll
total 20
drwxrwxr-x. 2 root staff 4096 Jun 26  2014 ca-certificates
drwxrwsr-x. 2 root staff 4096 Feb 25  2015 fonts
drwxr-xr-x. 2 root root  4096 Apr 16  2014 man
drwxr-xr-x. 6 1000  1000   58 Dec 14 02:37 moin
drwxrwsr-x. 7 root staff 4096 Feb 25  2015 sgml
drwxrwsr-x. 6 root staff 4096 Feb 25  2015 xml

 

(本頁面已被瀏覽過 809 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料