インターネットに接続されていない Windows Server 2016 VM に Docker をインストールしようとしています。公式の Docker ドキュメントには、インターネットに接続されていない Windows Server 2016 VM にインストールするためのアドバイスが記載されていないので、どうすればこれを実現できるでしょうか?
どこかのブログで読んだのですが、docker.exe および dockerd.exe ファイルをダウンロードして C:\Windows\System32 に配置し、実行するだけでdockerd.exe --register-service
Docker をインストールできるとのことでした。これは「機能した」ように見えますが (docker info
出力があります)、ローカル レジストリからイメージを取得しようとすると失敗します (エラー出力なしでフリーズするだけです)。さらに、DockerNAT NIC のセットアップがないことに気が付きました。他にも、私が知らない手順が欠けているのではないかと思います。
答え1
Docker の Web サイトには、実際にプロセス全体が文書化されています。
- PowerShell コマンド プロンプトで、接続されているマシンにインストーラー アーカイブをダウンロードします。
invoke-webrequest -UseBasicparsing -Outfile docker-17.06.2-ee-7.zip https://download.docker.com/components/engine/windows-server/17.06/docker-17.06.2-ee-7.zip
- Docker をインストールするマシンに zip ファイルをコピーします。PowerShell コマンド プロンプトで、次のコマンドを使用してアーカイブを抽出し、Docker サービスを登録して開始します。
# Extract the archive.
Expand-Archive docker-17.06.2-ee-7.zip -DestinationPath $Env:ProgramFiles
# Clean up the zip file.
Remove-Item -Force docker-17.06.2-ee-7.zip
# Install Docker. This requires rebooting.
$null = Install-WindowsFeature containers
# Add Docker to the path for the current session.
$env:path += ";$env:ProgramFiles\docker"
# Optionally, modify PATH to persist across sessions.
$newPath = "$env:ProgramFiles\docker;" +
[Environment]::GetEnvironmentVariable("PATH",
[EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("PATH", $newPath,
[EnvironmentVariableTarget]::Machine)
# Register the Docker daemon as a service.
dockerd --register-service
# Start the Docker service.
Start-Service docker
- hello-world コンテナを実行して、Docker EE インストールをテストします。
docker container run hello-world:nanoserver
Windows Server 用 Docker Enterprise Edition をインストールする
使用している Windows Server のバージョンを指定できなかったため、次の情報が関連している可能性があります。
Docker Universal Control Plane は、イメージの非互換性の問題により、現在 Windows Server 1709 ではサポートされていません。UCP を使用するには、現時点では 1709 ではなく、現在の LTSB Windows リリースを使用してください。