nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

OpenShift上でprivate Docker registryを動かす

Dockerで遊んでるとテスト用にDocker registryが欲しくなります。Docker registryはdocker run -d -p 5000:5000 registry:latestとかで動かせるのですが、こういうのはOpenShiftに投げてしまうとラクです。

Docker registryのイメージはユーザを切り替えていますが、OpenShiftではDockerコンテナは割り当てられたUIDしか利用できないセキュリティ設定になっているので、ユーザの切り替えができるように事前にadmin権限でoc edit scc restrictedしてrunAsUser.TypeRunAsAnyへ変更します。デフォルトではMustRunAsRangeになっています。

https://docs.openshift.com/enterprise/3.0/admin_guide/manage_scc.html#enable-images-to-run-with-user-in-the-dockerfile

あとはざざっと作って、httpsのルートも作成します。

oc new-app registry:latest --name=v1
oc expose service v1 --name=v1-http
oc expose service v1 --name=v1-https
oc new-app registry:2.0 --name=v2
oc expose service v2 --name=v2-http
oc expose service v2 --name=v2-https
oc edit route v1-https
oc edit route v2-https

oc exposeはデフォルトでhttpのルートを作成するので、httpsのものは作成してから編集してedge TLSを有効化します。spec部にtlsの2行を加えるだけです。これでv1もv2もhttp/https共にアクセスできるようになります。

  spec:
    tls:
      termination: edge

おしまい。