この記事の目的
この記事では、
Dockerコンテナとして立っているGitlabのContainer Resistry機能を有効化して、Dockerからinsecureに接続するための方法をまとめること
を目的としています。
本題
★Gitlabの起動コマンド作成
とにもかくにも、まず、以下のコマンドを利用してGitlabのコンテナを起動します。基本的には、公式ドキュメントに書かれているものですが、少し修正を加えています。
sudo docker run --detach \ --hostname gitlab.example.com \ ←ここ --publish 443:443 --publish 80:80 --publish 30022:22 --publish 5000:5000 --publish 4567:4567\ ←ここ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
上記コマンド実行後、コンテナが起動したらブラウザ、もしくはCURLで接続を試みます。ログインページへアクセスすることができたら成功です。
★Container Registryの設定
Gitlabでは、初期状態のままではContainer Registoryを利用することができません。そのため、公式ドキュメントに従い、Container Registoryを有効化する必要があります。まず、/srv/gitlab/config/gitlab.rbのファイルを開きます。そこに、どこでもいいので、以下の設定を追加します。
registry_external_url 'https://registry.gitlab.example.com:4567'
これで設定は完了です。しかし、このままGitlabを再起動すると、SSL証明書がどこにもないといってエラーが発生し、Gitlab自体が起動できなくなります。そのため、次に、SSLのオレオレ証明書を作成していきます。
参考)
docs.gitlab.com
★SSLのKEYの生成
オレオレ証明書は以下のように作成します。
mkdir /srv/gitlab/config/ssl openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout /srv/gitlab/config/ssl/registry.gitlab.example.comdocker.key \ -x509 -days 365 -out /srv/gitlab/config/ssl/registry.gitlab.example.com.crt
途中聞かれるパラメータは以下のように設定しました。参考までに・・・
参考)
docs.docker.com
★hostsファイルの修正
ここまで、Gitlabのホスト名を「registry.gitlab.example.com」として設定してきました。しかし、DNSでこの名前を解決できるわけがありません。そのため、DNSへ問い合わせに行く前に、ローカルで名前解決しておく必要があります。ということで、/etc/hostsファイルに以下の設定を追加します。
127.0.0.1 registry.gitlab.example.com
★Gitlabの再起動と接続確認
Docker restart [container ID]を実行して、Gitlabのコンテナを再起動します。これで、Container Registryの機能を持ったGitlabが使えるようになります。
動作確認は、GitlabのContainer Registoryのページに書かれている手順に従ってやれば簡単に実行することができます。
ここで、一つDockerfileが必要となります。とりあえず実行したいというだけでしたら、以下のコマンドを使って作成することができます。
echo FROM python:2.7-slim > Dockerfile
このコマンドに続いて実行すると、簡単にDocker ImageをPushするところまで確認することができます。
まとめ
ローカルで実行しているGitlab on Dockerに対するpushならこの手順で大丈夫そう。
別の環境からhttpでpushさせるためには、もうひと手間いりそうですな( ゚Д゚)