初めましての方、ご無沙汰している方、おはこんばんにちは。
Nな人です。
Twitter(現X)が何故か凍結され、早半年が過ぎました。
今はもうBlueSkyに生きていますので、よかったらフォローお願いします!
https://bsky.app/profile/nnahito.com
前置き(読み飛ばし推奨)
最近、自分のブログ「 https://nnahito.com/ 」を長らく放置していたので、
これを機に色々変えたいなーと思って模索している中、
「そうだ、コンテナ化しよう!」となり、勉強を始めました。
どうせやるなら、可能な限り無料でやりたい!
そんな夢を叶えていきましょうか。
それでは、やっていきましょう。
対象者
一応、アカウント登録などの手順はすっ飛ばすので、
この記事の対象者をまとめておきます。
- GitLabのアカウントを持っている
- 「GitLab?いやいやエンジニアならGitHubだろwww」とかいう訳のわからないこだわりのない人
- dockerの操作をある程度わかっている
- git関連の操作をある程度わかっている
- 不安な方は、 https://qiita.com/nnahito/items/565f8755e70c51532459 あたりを見ましょう
- Nな人の記事が好き
GitLabのContainer Registry
適当なリポジトリを作ったあと、画像の位置にあります。
プロジェクトをを作る
早速適当なdocker-composeのプロジェクトを用意しましょう。
サンプルコードをGitHubに用意してあるので、それを使っていただいても大丈夫です。
(GitHubかよwwwというツッコミは受け付けておりません。)
サンプル環境
https://github.com/nnahito/gitlab-container-samplecode
イメージの登録に向けて、レジストリにログイン
おそらく、本来だったらdocker公式が用意したレジストリに登録するのでしょうが、
今回はGitLabのプライベートなイメージレジストリに保存するので、
GitLabにログインする必要があります。
なので、以下のコマンドを実行し、GitLabにログインしておきましょう。
$ docker login registry.gitlab.com
※ 聞かれるID/PASSは、GitLabにログインするものです
イメージのタグ付け
イメージにタグを付けましょう。
以下のようなコマンドを実行します
$ docker tag コンテナ名:コンテナのバージョン GitLabのコンテナレジストリのパス:コンテナのバージョン
サンプル
$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test:0.01
イメージをPush
タグを付けたらGitLab上にPushします。
以下のようなコマンドを実行します。
$ docker push GitLabのコンテナレジストリのパス:コンテナのバージョン
「GitLabのコンテナレジストリのパス」は、
Container Registoryのページに行ったときに書いてありますのですぐわかると思います。
サンプル
$ docker push registry.gitlab.com/nnahito/container-test:0.01
おめでとうございます。
これでPushができました。
階層別け
docker-composeを使う場合、複数のコンテナが存在することになります。
しかし、上記のやり方だと最後にビルドされたイメージしかpushされません。
1コンテナ1サービス(1プロセス)の推奨の元、その様になって……いるのかな?
多分。しらんけど。
複数のコンテナを保存したい場合は、階層を別けましょう。
階層別け
おなじみの/
で階層を分けることができます。
私のサンプルコードを利用している前提でのサンプルコマンドになりますのでご注意ください。
まずはコンテナをビルドします。
$ docker compose build docker-compose.ymlで指定しているサービス名
そしてTag登録をします。
$ docker tag コンテナ名:コンテナのバージョン GitLabのコンテナレジストリのパス/階層名:コンテナのバージョン
サンプル
# コンテナイメージのビルド
$ docker compose build app1
# Registory用にTagを発行
$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test/app1:0.02
# コンテナイメージのビルド
$ docker compose build app2
# Registory用にTagを発行
$ docker tag container-test-app:latest registry.gitlab.com/nnahito/container-test/app2:0.02
これで準備完了です。
Pushしましょう。
$ docker push GitLabのコンテナレジストリのパス/階層名:コンテナのバージョン
サンプル
# app1のコンテナイメージをPush
$ docker push registry.gitlab.com/nnahito/container-test/app1:0.02
# app2のコンテナイメージをPush
$ docker push registry.gitlab.com/nnahito/container-test/app2:0.02
これで、GitLab上に複数階層で、複数のイメージを置くことができます。
作ったイメージを使う
先程作ったイメージを使ってみましょう。
と言っても、普通にpullしてくると使えます。
pull
$ docker pull リポジトリのパス:バージョン
サンプル
# app1のコンテナイメージをPull
$ docker pull registry.gitlab.com/nnahito/container-test/app1:0.02
# app2のコンテナイメージをPull
$ docker push registry.gitlab.com/nnahito/container-test/app2:0.02
コンテナの起動
$ docker run -it リポジトリのパス:バージョン
サンプル
# app1のコンテナを起動
$ docker run -it registry.gitlab.com/nnahito/container-test/app1:0.02
# app2のコンテナを起動
$ docker run -it registry.gitlab.com/nnahito/container-test/app2:0.02
以上です。
終わりに
こんな感じでコンテナを無料でprivateに管理できるので、いい感じですね。
ちなみにGitHubにも同じような機能があるようなのですが、
こっちはそんなに調べていないのでまた別の機会に、ということで。
少しでも参考になった、助かったと思っていただければ、LGTMやストックをお願いします。
それではまた次回!