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

  • Docker on Windows
  • Elton Stoneman
  • 500字
  • 2021-07-02 19:53:17

Docker as a Windows Service

You can use Docker for Windows on Windows 10 and Windows Server 2016, and it's great for development and test environments. For production environments where you have a headless server with no UI, you can install Docker using a PowerShell module.

On a new installation of Windows Server 2016 core, use the sconfig tool to install all the latest Windows updates, and then run these PowerShell commands:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider

This will configure the server with the necessary Windows features, install Docker, and set it up to run as a Windows service. Depending on how many Windows updates were installed, you may need to reboot the server:

Restart-Computer -Force

When the server is online, check whether Docker is running with docker version, and then try to run a container from the sample image for this chapter:

docker container run dockeronwindows/ch01-whale

I use this configuration for some of my environmentsrunning Windows Server 2016 Core in a lightweight VM, which has only Docker installed. You can use Docker on the server by connecting with Remote Desktop, or you can configure the Docker service to allow remote connections. This is a more advanced setup, but it does give you secure remote access.

It's best to set up the Docker service so that communication with the client is secured using TLS. Clients can connect only if they have the right TLS certificates to authenticate with the service. You can set this up by running these PowerShell commands inside the VM, supplying the VM's external IP address:

$ipAddress = '<vm-ip-address>'

mkdir -p C:\certs\client

docker container run --rm `
--env SERVER_NAME=$(hostname) `
--env IP_ADDRESSES=127.0.0.1,$vm-ip-address `
--volume 'C:\ProgramData\docker:C:\ProgramData\docker' `
--volume 'C:\certs\client:C:\Users\ContainerAdministrator\.docker' `
stefanscherer/dockertls-windows

Restart-Service docker
Don't worry too much about what this command is doing. Over the next few chapters, you'll get a good understanding of all these Docker options. I'm using a Docker image from Stefan Scherer, who is a Microsoft MVP and Docker Captain. The image has a script that secures the Docker service with TLS certificates. You can read more details on Stefan's blog at https://stefanscherer.github.io.

When this command completes, it will have configured the Docker service to allow only secure remote connections and will also have created the certificates that the client needs to use to connect. Copy these certificates from C:\certs\client on the VM onto the machine where you want to use the Docker client.

On the client machine, you can set environment variables to point the Docker client to use a remote Docker service. These commands will set up a remote connection to the VM (assuming you have used the same path for the certificate files on the client):

$ipAddress = '<vm-ip-address>'

$env:DOCKER_HOST='tcp://$($ipAddress):2376'
$env:DOCKER_TLS_VERIFY='1'
$env:DOCKER_CERT_PATH='C:\certs\client'

You can use this approach to securely connect to any remote Docker service. If you don't have access to Windows 10 or Windows Server 2016, you can create a VM on the cloud and connect to it using the same commands.

主站蜘蛛池模板: 沾益县| 乌兰浩特市| 大竹县| 板桥市| 奈曼旗| 峨山| 化隆| 滕州市| 正镶白旗| 香港 | 阿拉尔市| 宝应县| 阳高县| 宜宾市| 乐安县| 岗巴县| 廊坊市| 淅川县| 西盟| 新晃| 专栏| 密云县| 齐齐哈尔市| 婺源县| 海阳市| 汉寿县| 横山县| 芷江| 文山县| 福海县| 津南区| 乳源| 曲靖市| 南岸区| 民权县| 巴彦淖尔市| 南开区| 眉山市| 卓资县| 曲阜市| 武强县|