DockerデーモンにTLS接続出来るのが前提の記事となっています。
更新履歴
- 2021/5/1
- 公式配布のWindows向けバイナリが最新版になっていたので、そちらを推奨手順に変更しました。
##検証環境
- Windows 10 Pro version 1909
- Ubuntu 19.04
- macOS Catalina
##共通の手順
クライアントのインストール手順はOS毎に違いますが、接続先の設定は認証用のファイルを~/.dockerに置いて環境変数を設定するだけです。
公式手順に従っていた場合はca.pem,cert.pem,key.pemの3つのファイルが出来ているはずなので、この3つのファイルを各クライアントにコピーし、~/.dockerに移動しておきます。
デフォルトの接続先をUNIXソケットからTCPソケットに変えるには下記の2つの環境変数を設定します。
DOCKER_HOST=tcp://hoge.exampl.com:2376
DOCKER_TLS_VERIFY=1
上記のhoge.exampl.com:2376
は接続先のFQDNとポートに置き換えてください。
##Docker Clientのインストール (Ubuntu)
公式手順の最後のsudo apt-get install docker-ce docker-ce-cli containerd.io
のところでdocker-ceとcontainerd.ioを省くだけです。
##Docker Clientのインストール (macOS)
Homebrewがdockerを配布しているので、これを利用するのが簡単です。多分クライアントだけだと思います。
brew install docker
##Docker Clientのインストール (Windows)
Windowsでは決定版的パッケージマネージャーが存在せず、少なくともMSYS2のpacman等ではdockerの配布はされていません。
取れる手段は3つです。
- WSLにインストールして、Windows側にwsl上のdockerを呼び出すラッパーを用意する。
-
公式配布の古いバイナリをダウンロードし、パスを通す。
2021年5月現在、公式配布のバイナリのバージョンが最新のものになっているので、こちらを利用するのが確実です。以降のビルド関連の記述は旧来のバイナリが欲しい等の特殊事情でない限り無視してください。 - 自分で公式ソースをビルドし、パスを通す。
1番はお手軽ではあるものの、VSCodeのRemote - Containersが使う||
の解釈に失敗して上手く動きませんでした。
2番もお手軽ではあるものの、VSCodeのRemote - Containersが未実装のオプションを利用する為上手く動きませんでした。
よってここでは3番で行きます。
###Docker Clientをビルドする
gitコマンドが使える、dockerがインストールされている環境で作業します。
dockerはクロスビルドに対応している為、Windowsでなくて構いません。
適当なディレクトリを作り、そこにdocker-ceのリポジトリをcloneします。
$ mkdir ~/docker-ce
$ cd ~/docker-ce
$ git clone https://github.com/docker/docker-ce.git .
これで取得するソースは開発版になるので、安定版が良い場合はバージョンをタグで指定してcheckoutします。
$ git checkout refs/tags/v19.03.5
次にDocker Clientのディレクトリに移動し、ビルドを行います。
$ cd components/cli/
$ make -f docker.Makefile binary-windows
makeにdockerコマンドを利用している為、dockerコマンドにsudoが必要な環境ではmakeの前にsudoをつけてください。
ビルドが完了するとbuildフォルダの中にdocker-windows-amd64というファイルが出来ているので、これをWindowsの適当なディレクトリにscp等でコピーします。
コピーしたファイルをdocker.exeにリネームし、環境変数のPATHにdocker.exeのあるディレクトリへの絶対パスを追記すればインストール完了です。
##参考文献