- Docker on Windows
- Elton Stoneman
- 361字
- 2021-07-02 12:47:55
Doing one thing with a task container
The dockeronwindows/ch02-powershell-env:2e image is an example of a packaged application which is meant to run in a container and perform a single task. The image is based on Microsoft Windows Server Core and is set up to run a simple PowerShell script when it starts, printing details about the current environment. Let's see what happens when I run a container directly from the image:
> docker container run dockeronwindows/ch02-powershell-env:2e
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\ContainerAdministrator\AppData\Roaming
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME 8A7D5B9A4021
...
Without any options, the container runs a PowerShell script which is built into the image, and the script prints out some basic information about the operating system environment. I call this a task container because the container performs one task and then exits.
If you run docker container ls, which lists all the active containers, you won't see this container. But if you run docker container ls --all, which shows containers in all states, you'll see it in the Exited status:
> docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS
8a7d5b9a4021 dockeronwindows/ch02-powershell-env:2e "powershell.exe C:..." 30 seconds ago Exited
Task containers are very useful in automating repetitive tasks, like running scripts to set up an environment, backing up data, or collecting log files. Your container image packages the script to run, along with the exact version of all the requirements that the script needs, so anyone with Docker installed can run the script without having to install pre-requisites.
This is especially useful for PowerShell, where scripts can be dependent on several PowerShell modules. The modules may be publicly available, but your script can be dependent on specific versions. Instead of sharing a script that requires users to install the correct version of many different modules, you build an image that has the modules already installed. Then you only need Docker to run the script task.
Images are self-contained units, but you can also use them as a template. An image may be configured to do one thing, but you can run containers from an image in different ways to do different things.
- Linux運維之道(第3版)
- Linux操作系統基礎
- Linux內核完全注釋(20周年版·第2版)
- Instant Optimizing Embedded Systems using Busybox
- 注冊表應用完全DIY
- Learning Magento 2 Administration
- 統信UOS應用開發進階教程
- 計算機應用基礎(Windows 7+Office 2010)
- SQL Server on Azure Virtual Machines
- Windows10開發入門經典
- Embedded Systems Architecture
- 從零開始學Windows 7
- OpenStack Trove Essentials
- Modern Python Cookbook
- The Infinite Retina