– 語法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
– OPTIONS 參數說明:
- -i: 讓容器的標准輸入(STDIN)始終保持打開,即使沒有輸入任何指令(沒有附加)
- -t: 分配一個終端,這樣我們就可以使用命令來操作
- -d: 分離模式,讓命令在后台(指的是宿主后台)運行。
- –user:指定用戶運行,當我們需要 root 用戶權限時可以指定。
【注】一般使用 -it 就足夠了。
– COMMAND 參數:
command 指的是 shell 的類型,常見的有 bash、sh、zsh,但是 Linux 系統大多數默認的是 bash 類型,新版 Mac OS 系統的話,默認的不再是 bash ,而是 zsh。
– 查看正在運行的容器
docker ps
執行結果如下:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 91af26862191 nginx "/docker-entrypoint.…" 7 hours ago Up 2 hours 0.0.0.0:80->80/tcp webserver
– 使用 exec 進入容器
docker exec -it webserver bash
# 或
docker exec -it 91af26862191 bash
就可以進入到容器內部的命令行界面。
如果需要root權限的話,可以指定 root 用戶進入容器:
docker exec -it --user root webserver bash
# 或
docker exec -it --user root 91af26862191 bash
【注】webserver 與 91af26862191 都是容器的唯一標識,所以用哪個都可以。
一般容器里面的 Linux 是精簡版的,沒有 less 、cat 、vim/vi 等命令,如果需要的話可以自己安裝,默認自帶 APT 命令。
【注】如果是學習使用可以選擇在容器內部安裝其他命令,如果是正式環境的話推薦把各個容器的配置文件映射到宿主機器上(也就是裝 Docker 的機器)方便維護。
