Docker on Windows
上QQ阅读APP看书,第一时间看更新

Connecting to an interactive container

An interactive container is one that has an open connection to the Docker command line, so you work with the container as if you were connected to a remote machine. You can run an interactive container from the same Windows Server Core image by specifying the interactive options and a command to run when the container starts:

> docker container run --interactive --tty dockeronwindows/ch02-powershell-env:2e `
powershell

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\> Write-Output 'This is an interactive container'
This is an interactive container
PS C:\> exit

The --interactive option runs an interactive container, and the --tty flag attaches a terminal connection to the container. The powershell statement after the name of the container image is the command to run when the container starts. By specifying a command you replace the startup command that's been set up in the image. In this case, I start a PowerShell session and that runs instead of the configured command, so the environment printout script doesn't run.

An interactive container keeps running as long as the command inside is running. While you're connected to PowerShell, running docker container ls in another window on the host will show that the container is still running. When you type exit in the container, the PowerShell session ends, so there's no process running and the container exits too.

Interactive containers are useful when you're building your own container images, they let you can work through the steps interactively first and verify that everything will work as you expect. They're good exploratory tools too. You can pull someone else's image from a Docker registry and explore the contents before you run the application.

You'll see as you read through this book that Docker can host complex distributed systems in a virtual network, with each component running in its own container. If you want to examine parts of the system, you can run an interactive container inside the network and check on individual components, without having to make the parts publicly accessible.