版權所有,未經許可,禁止轉載
章節
Docker鏡像是一個文件系統,有時需要進入容器內部的shell,例如:查看配置文件的內容。
正在運行的容器,可以通過docker exec
命令進入它的shell終端:
docker exec -it <container-id> /bin/bash
-i
標志告訴docker保持stdin打開(以便您可以輸入命令)。-t
標志分配一個偽tty。
舉例說明
1. 運行nginx鏡像
[root@qikegu docker]# docker run -d nginx
2.查看nginx容器ID
[root@qikegu docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87c324a31476 nginx "nginx -g 'daemon of…" 54 seconds ago Up 53 seconds 80/tcp trusting_vaughan
3. 進入容器,運行一個bash shell
[root@qikegu docker]# docker exec -it 87c324a31476 /bin/bash
root@87c324a31476:/#
可以看到我們進入了容器中的shell了。
4. 在容器的shell中執行命令
root@87c324a31476:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@87c324a31476:/# ps
bash: ps: command not found
容器中不存在的命令(上面的ps
)不能執行
5. 退出shell
直接使用exit
命令退出shell,容器自身也將停止運行。
使用ctrl + p + q
,可以退出shell,容器仍將繼續運行。
docker attach, docker exec, docker run 區別
docker attach
- 不是用於在容器中運行額外的東西,而是用於附加到正在運行的進程。如果容器中正在運行的是nginx,會attach到nginx進程,獲得nginx的標准輸出。docker exec
- 專門用於在已經啟動的容器中運行新東西,無論是shell還是其他進程docker run
- 用於運行新容器,可以指定容器中要運行的命令。如果不指定,運行鏡像默認命令,例如:運行nginx容器時,docker run nginx
沒有指定命令,會運行nginx應用,docker run -it nginx /bin/bash
,指定了/bin/bash
,會運行此命令。