Docker для Windows. Установка.

Docker Windows Server 2019 1809

Что такое Docker для Windows и как с этим жить?

Очень упрощенно говоря, Docker это способ запуска приложения в такой песочнице, в какой приложение думает, что кроме него на компьютере ничего не установлено. Появился Docker в мире Linux, стал популярным и через некоторое время в мире Windows тоже захотели себе такую игрушку. Областью применения является веб и консольные приложения.

Этот пост для тех, кто далек от мира Linux, кому интересен Docker для Windows, и, тех кто по какой-то причине до сих пор не вник в эту тему.

Под управлением Windows Server появился Docker лишь в Windows Server 2016. Появился он в крайне сыром виде. Почти ничего не умел и годился разве что "для посмотреть на чудо заморское". Позже выходили Windows Server version 1709, затем 1803. Все это время Docker рос. Рос-рос и вот, наконец, вышли Windows Server 2019 и Windows Server version 1809. Docker вырос. Конечно, он еще не умеет многого из того, что хотелось бы, но, того, что уже есть, достаточно для готового решения.

Подготовка к установке

Docker можно установить как на клиентскую ОС, так и на серверную ОС. Далее я буду иметь ввиду Windows 10 1809 и Windows Server 1809. Для работы Docker необходимо предварительно установить компонент системы Containers. Для Windows 10 в данном случае требуется установить Hyper-V. Для Windows Server это не является обязательным, но желательным шагом.

Установка

Поскольку Docker продолжает развиваться и в нем постоянно что-то дорабатывается, я предпочитаю использовать ночные сборки как на Windows 10, так и на Windows Server. Тем не менее рекомендовать такой подход для всех я не могу.

add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy
    {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem)
        {
            return true;
        }
    }
"@
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

Write-Host "Download packages..."
Invoke-WebRequest -Uri https://master.dockerproject.com/windows/x86_64/docker.zip -OutFile "$env:TEMP\docker.zip"
Write-Host "Update Docker Engine..."
Expand-Archive -Path "$env:TEMP\docker.zip" -DestinationPath "C:\Program Files\." -Force
[System.Environment]::SetEnvironmentVariable("PATH", "$env:PATH;C:\Program Files\Docker", "Machine")
Set-Location "C:\Program Files\Docker"
.\dockerd.exe --experimental --register-service

Write-Host "Restarting..."
Restart-Computer

Проверка работоспособности

Для того, чтобы проверить что сервис установлен и работает, выполним команду в терминале:

docker version

получим что-то похожее

Client:
 Version:           master-dockerproject-2018-11-26
 API version:       1.40
 Go version:        go1.11.1
 Git commit:        2d692aed
 Built:             Mon Nov 26 23:50:37 2018
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          master-dockerproject-2018-11-26
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.11.2
  Git commit:       ed37f60
  Built:            Mon Nov 26 23:59:05 2018
  OS/Arch:          windows/amd64
  Experimental:     true

Первые итоги

Итак, у нас есть Windows Server 2019 с установленным Docker. Можно начинать играться.