GitLab Container Registry を GitLab 9.0 で有効にして、
Docker から利用してみます。
1. 前提条件
- GitLab を Omnibus package installation でインストールしているとします。(こちらを参照してください
http://qiita.com/masakura/items/0a0f00dfdddc8ce27f29)
2. 設定
以下を設定する。
/etc/gitlab/gitlab.rb
registry_external_url 'https://registry.example.co.jp'
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/example.crt"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/example.key"
SSLはいろいろ面倒なのでLet's Encryptなどで取得すると良いでしょう。
設定を反映
$ sudo gitlab-ctl reconfigure
3. Dockerから使う
GitLabのプロジェクトからRegistryが出てきます。
3-1. Dockerからログイン
インストラクションの通りですが、Dockerホストからレジストリにログインします。
bash
$ sudo docker login registry.example.co.jp
Username (XXXXX): <GitLabのuser_id>
Password:<GitLatのuser_password>
Login Succeeded
以下のようなエラーが出た場合は、gnupg2 passというパッケージが足りないそうです。
Error saving credentials: error storing credentials - err: exit status 1, out: `Error spawning command line “dbus-launch --autolaunch=2fb346aaad55463a89ab59d4438349ab --binary-syntax --close-stderr”: Child process exited with code 1`
以下のコマンドでインストールしましょう
sudo apt install gnupg2 pass
DockerHubへのdocker loginが出来なかった場合の対処 - Qiita
https://qiita.com/developer-kikikaikai/items/03131dd1a9ac2b99e340
3-2. Docker HubからのイメージをGitLab Container Repositry にコピーしてみます。
良さげなイメージを検索
$ sudo docker search nginx
Pullします。
$ sudo docker pull nginx
コンテナーイメージを確認
$ sudo docker images
イメージにGitLab Container Registryのタグ名を付ける
$ sudo docker tag nginx registry.example.co.jp/hogehoge/hogeproject
registry.example.co.jpにPushする。
$ sudo docker push registry.example.co.jp/hogehoge/hogeproject
4. Docker Run
Pushしたイメージを起動してみる
$ sudo docker run registry.example.co.jp/hogehoge/hogeproject