CoreOS Enterprise RegistryはQuay.ioのインストール版。料金体系も若干違う。
Quay.ioの方がメンテコスト掛からなくて楽&サーバコストも含めて考えたときに安いんだけど、如何せん国内サーバからのDocker pullが遅すぎてストレスフルなデプロイになること請け合いなので、自前のサーバにCoreOS Enterprise Registryをインストールすることにした。
ドキュメントに書いてないことがあったりしたせいで、主にSSLの認証周りでハマって1日くらい無駄にしたので、備忘録も兼ねて共有。
事前準備
- CoreOSがインストールされたサーバを用意する
-
CoreOS Enterprise Registryを事前に契約して認証情報(.dockercfg)を用意する
-
/home/core/.dockercfg
と/root/.dockercfg
においておく
-
- SSL証明書の用意
インストール
MySQLのインストール
基本的にはドキュメントに書いてある通り。以下の手順では実行スクリプトを/tmp/から移動させている。
docker pull mysql:5.7
curl --location https://raw.githubusercontent.com/coreos/docs/master/enterprise-registry/mysql-container/provision_mysql.sh -o ~/provision_mysql.sh -#
vim ~/provision_mysql.sh
provision_mysql.shの以下の箇所を任意に書き換え
MYSQL_USER="coreosuser"
MYSQL_DATABASE="enterpriseregistrydb"
MYSQL_CONTAINER_NAME="mysql"
MySQLを立ち上げる
chmod -c +x ~/provision_mysql.sh
sh ~/provision_mysql.sh
起動10秒後にパスワードが表示されるので控えておく。
ちなみに、MySQLコンテナを立ち上げ直すたびにデータが消えてしまっては困るので、 Data-only container pattern
などを使ってデータを永続化しておくことを推奨。ここでは手順は紹介しないが、ここらへんが参考になります。
Data Volume と Data Volume Container
Docker でデータのポータビリティをあげ永続化しよう
Redisのインストール
sudo docker pull quay.io/quay/redis
sudo docker run -d -p 6379:6379 quay.io/quay/redis
CoreOS Enterprise Registryのインストール
ここも基本的にはドキュメント通り。
まずは設定やストレージを共有するためのディレクトリを作成。
mkdir ~/storage
mkdir ~/config
次にCoreOS Enterprise Registryを立ち上げる。上で作ったconfigとstorageのディレクトリを-vとして指定する。
sudo docker pull quay.io/coreos/registry
sudo docker run --restart=always -p 443:443 -p 80:80 --privileged=true -v /home/core/config:/conf/stack -v /home/core/storage:/datastorage -d quay.io/coreos/registry
これでひとまず立ち上がるので http://yourhost/setup
にアクセスして、データベースやAdminユーザの作成などを一通り行う。
その後、 http://yourhost/superuser
で Enable SSL
にチェックを入れて、認証鍵を登録。 https://yourhost/
で接続出来る状態にする。
認証情報の設定
CoreOSのサーバ側にcert, keyをそれぞれ転送し、 /etc/ssl/
配下にそれぞれ移動する
sudo cp server-cert.pem /etc/ssl/certs/docker-registry
sudo cp server-key.pem /etc/ssl/private/docker-registry
sudo update-ca-certificates
build-workerのインストール
CoreOS Enterprise Repositoryは側の機能だけなので、Dockerfileのbuildなどはこのbuild-workerプロセスが受け持つ。
docker run --restart on-failure -e SERVER=wss://yourhost -v /var/run/docker.sock:/var/run/docker.sock -v /etc/ssl/certs:/etc/ssl/certs quay.io/coreos/registry-build-worker:latest