Docker是一個開源的平台,可以在容器中構建、運行和部署應用程序,它採用了輕量級的方式,將應用程序和依賴項打包到一個可移植的容器中。在Docker中,可以使用多種方式進入到容器中,例如使用attach命令、使用exec命令、使用nsenter命令等。本文將詳細介紹Docker進入容器的命令。
一、attach命令
使用docker attach命令可以在主機與一個正在運行的Docker容器之間建立一個會話連接。這個命令相當於打開了一個容器窗口,可以在容器中執行操作並查看容器的運行狀態。
使用命令前需要注意:
1. 目標容器必須正在運行
$ docker run -d --name nginx nginx
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8df6e46b571 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 80/tcp nginx
2. 同時只能有一個會話連接到容器
3. 當從容器中退出時,容器也將停止
執行attach命令:
$ docker attach nginx
使用ctrl+p和ctrl+q來退出容器連接,此時容器仍然在運行狀態。
二、exec命令
exec命令可以在已經運行的Docker容器中執行新的命令。
使用命令前需要注意:
1. 目標容器必須正在運行
2. 如果容器在後台運行,則在執行exec命令時需要添加參數-d表示執行命令時不要停止容器:
$ docker exec -d nginx touch /tmp/abc.txt
3. 如果容器不在後台運行,則執行命令後會自動停止容器。
$ docker run -it --name nginx nginx /bin/bash
$ docker exec nginx touch /tmp/abc.txt
三、nsenter命令
Docker使用Linux的namespace技術,在容器內部創建一個獨立的命名空間,包括進程樹、網絡、文件系統等資源隔離。nsenter命令可以進入到容器的命名空間內執行操作。
使用nsenter前需要安裝util-linux包:
sudo apt-get install -y util-linux
使用命令前需要注意:
1. 目標容器必須正在運行
2. 需要知道目標容器的PID號
$ docker inspect -f '{{.State.Pid}}' nginx
145
執行nsenter命令:
$ sudo nsenter -t 145 -m -u -i -n -p /bin/bash
其中-t選項為PID號,-m、-u、-i、-n、-p分別代表進入命名空間的類型,包括mount命名空間、UTS命名空間、IPC命名空間、network命名空間、PID命名空間。
四、進入Docker運行容器的Shell
除了使用attach和exec命令進入容器內部,還可以使用docker exec -it命令進入Docker容器的Shell。
使用命令前需要注意:
1. 目標容器必須正在運行
2. 在啟動Docker容器時,需要暴露終端口,例如使用docker run -it命令啟動容器。
$ docker run -it --name nginx nginx /bin/bash
執行進入容器Shell的命令:
$ docker exec -it nginx /bin/bash
以上就是Docker進入容器的命令詳解,通過上述命令可以便捷地操作Docker容器,進一步提高容器的使用效率。
原創文章,作者:EICCC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370377.html