概要
前回は localhost に Gitlab を立ち上げるところまでやってみました
今回は Container Registry を試してみます
環境
- macOS 10.14.5
- docker 18.09.2
- Gitlab-ce 12.0.3
Gitlab Container Registry を有効にする
Gitlab 12.0.3 にはデフォルトで Registry の機能があります
ただデフォルトでは有効になっていないので有効にします
docker exec -it gitlab editor /etc/gitlab/gitlab.rb
これで nano が開くので以下の行をコメントアウト/追記します
もしくはマウントしているのでローカルのファイルを編集しても OK です
vim gitlab/config/gitlab.rb
registry_external_url 'https://gitlab.example.com:4567'
registry_nginx['ssl_certificate'] = "/var/opt/gitlab/registry/gitlab-registry.crt"
registry_nginx['ssl_certificate_key'] = "/var/opt/gitlab/gitlab-rails/etc/gitlab-registry.key"
他の紹介記事を見ると gitlab/data/gitlab-rails/etc/gitlab.yml
を編集している記事を見かけますが docker 上で動作させている場合 gitlab.yml は gitlab.rb を元に自動生成される設定ファイルなので編集しても上書きされてしまいます
編集できたらコンテナを再起動しましょう
docker restart gitlab
もし 4567 ポートを LISTEN していない場合はコンテナを再作成しましょう
docker stop gitlab
docker run -d -h gitlab.example.com -p 443:443 -p 80:80 -p 22:22 -p 4567:4567 --name gitlab -v $(pwd)/gitlab/config:/etc/gitlab -v $(pwd)/gitlab/logs:/var/log/gitlab -v $(pwd)/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
これでプロジェクトで Container Registry が使えます
mac と docker for mac の設定
動作確認する mac 上の docker の設定をしましょう
今回はドメインや証明書が偽物なのでそれを使えるための設定を入れます
まずは名前で解決できるように hosts ファイルを編集しましょう
sudo vim /etc/hosts
127.0.0.1 gitlab.example.com
そして docker for mac の Insecure Registry に追加し「Apply & Restart」しましょう
docker info
で確認して Insecure Registries に含まれていれば OK です
プロジェクトに Registry を確認する
これでプロジェクトに「Registry」が追加になっています
右メニューにあるので確認しましょう
また選択するとレジストリのエンドポイントなどが確認できます
docker login
docker コマンドで実際にログインできるか確認します
docker login gitlab.example.com:4567
ID/PW は Gitlab にログインする root/設定したパスワードでログインしましょう
docker push
あとはタグ付けして push するだけです
今回の場合 localhost に投げているだけなので push も早いです
docker tag redis gitlab.example.com:4567/root/test:v1
docker push gitlab.example.com:4567/root/test:v1
Gitlab の UI を見てもちゃんとイメージが push されているのが確認できました
ちなみに gitlab.example.com:4567/root/test2
みたいなタグを付与して push してみましたが拒否されました
なのでタグはすべて同一である必要があります
もし別アプリなどのイメージを push したい場合はバージョンの部分を使うしかないかなと思います
docker tag nginx gitlab.example.com:4567/root/test:nginx
docker push gitlab.example.com:4567/root/test:nginx
docker pull
ついでに pull も試してみました
一旦ローカルでタグ付けしたイメージを削除してから試しましょう
docker rmi gitlab.example.com:4567/root/test:v1
docker pull gitlab.example.com:4567/root/test:v1
はまったポイント
レジストリに独自のドメインを適当に入れていたのですがそれだと 503 エラー + error authorizing context: authorization token required
エラーで docker login
できません
今回の構成の場合 Gitlab とコンテナレジストリは同一ホスト、同一ドメイン配下にあるので同じドメイン上で動作するようにしないとダメでした
最後に
Gitlab の Container Registry を試してみました
インストールした方法や環境に応じて設定方法が異なるので注意が必要です
docker を使っている場合は gitlab.rb を編集すれば OK です
ただレジストリ用のドメインの設定に注意しましょう
次回は CI で Container Registry を使ってみようと思います
0 件のコメント:
コメントを投稿