Docker 容器shell


版權所有,未經許可,禁止轉載


章節


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,會運行此命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM