官术网_书友最值得收藏!

Exec into a running container

In debugging and testing scenarios, it is often required to execute another process inside a running container in an ad hoc manner. This is especially useful for creating a shell instance (for Windows, with cmd.exe or powershell.exe, and for Linux, with bash or sh) in the container and interactively debugging the container. Such an operation is called performing exec into a running container.

Visual Studio Code enables this through Docker Explorer. In the Docker Explorer tab, find the container you would like to exec into, right-click it, and choose Attach Shell:

By default, for Windows containers, this command will exec using the  powershell.exe command. If you are running images based on Windows Nano Server, you will not be able to use powershell.exe and you'll have to use cmd.exe instead. To customize which command is used during Attach Shell, open Settings ( Ctrl + ,), search for docker, and customize the  docker.attachShellCommand.windowsContainer setting.

In the Powershell command line, the equivalent docker exec command is as follows:

docker exec -it <containerId> powershell.exe

The preceding command creates a new powershell.exe process inside the running container in interactive mode with the attached terminal (the -it parameter). As you can see, a new interactive instance of the Powershell terminal opens:

You can only exec into containers that have the main process running. If the container is exited, terminated, or placed in a paused state, it will not be possible to use the  exec command.

Let's try inspecting the contents of index.html inside the container's working directory:

cat .\index.html

The following screenshot shows the output of the preceding command:

This reveals the expected contents of the index.html file that we created and added to the image earlier.

We can also inspect the IIS worker process (w3wp.exe) for the application pool hosting index.html. This is a common scenario during debugging when not all the logs are available directly via container output logs:

cat ..\logs\LogFiles\W3SVC1\u_ex<current date>.log

The following screenshot shows the output of the preceding command:

Using docker exec is one of the most powerful commands that you have in your container toolbox. If you learn how to use it, you'll be able to debug your applications almost as if they were hosted in a non-containerized environment.

主站蜘蛛池模板: 望城县| 都安| 龙山县| 郁南县| 宽甸| 满洲里市| 万盛区| 东兴市| 田林县| 厦门市| 兰溪市| 滦平县| 当雄县| 怀宁县| 武山县| 广元市| 南通市| 师宗县| 阳朔县| 正安县| 曲周县| 长春市| 泌阳县| 闽侯县| 万山特区| 辉南县| 汤阴县| 长沙县| 嘉兴市| 舞阳县| 交口县| 大新县| 长海县| 炎陵县| 清河县| 桑植县| 婺源县| 灵台县| 稷山县| 宜黄县| 武威市|