在 linux 中如果要執行比較危險的動作就會需要 root 權限,而基本上有兩個方式可以達成,一個是切換為 root 或是具有 root 權限的帳號,另一個就是使用 sudo ,以 root 權限暫時執行指令。
想要直接切換到 root 帳號,但是也不知道密碼,輸入了好幾次都錯誤
使用 root 帳號進入容器:
之後就可以在裡面做只有 root 才能做的事情了!
不過其實這裡的 root 並沒有所有的權限,雖然一般會在容器內做的事情並不會讓你發現沒有全部的權限,不過如果需要真需要的時候可以加上 --privileged 參數即可。
參考資料: docker exec
容器內居然沒有 sudo 指令?
在 docker 容器內執行 sudo 指令時,有很大的機率出現下面的錯誤:
sudo
bash: sudo: command not found
想要直接切換到 root 帳號,但是也不知道密碼,輸入了好幾次都錯誤
su -
Password:
su: Authentication failure
為什麼沒有 sudo 指令?
而我們在建置 docker 容器的時候,會需要有一個最底層最基礎的作業系統,通常就是使用 linux ,然後在上面再安裝其他的軟體或執行環境。也因為只是需要一個最基礎的作業系統,為了減少空間,所以很多不是必需的指令就不會被安裝,例如 sudo 就沒有被安裝。那該怎麼使用 root 權限?
感覺起來這個問題無法解決,因為沒有 sudo 指令,也不知道 root 密碼(應該說 root 還沒被設定密碼),但其實有個很簡單的解決方式,就是使用 root 帳號進入容器即可! 平時在進入 docker 容器並要執行指令時我們是這樣進去的:
docker exec -it ubuntu bash
註: ubuntu 為容器名稱
使用 root 帳號進入容器:
docker exec -it -u root ubuntu bash
之後就可以在裡面做只有 root 才能做的事情了!
不過其實這裡的 root 並沒有所有的權限,雖然一般會在容器內做的事情並不會讓你發現沒有全部的權限,不過如果需要真需要的時候可以加上 --privileged 參數即可。
參考資料: docker exec
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com