プライベートなコンテナイメージを使いたいと思ったことはありませんか。
Rancher2.0によるDocker Registryを利用してプライベートなコンテナ管理をしてみる。
環境としては、MacでDockerForMacを使い、KubernetesとRancher2.0を利用します。
各環境の設定
各環境の設定が出来ていない方は下記の記事を参考に構築してください。
- Dockerを利用するのでインストールをしていない方はこちら
- Docker For MacによるKubernetesの設定はこちら
- Rancher2.0のインストールはこちら
- Rancher2.0でKubernetesの登録はこちら
Rancher2.0のカタログからDocker Registryの起動
Rancher2.0のカタログからDocker RegistryのHelm版を選択の設定をします。
まずヘッダーメニューのカタログから起動を押して、カタログを起動します。
次にカタログからDocker Registryを選択します。
Docker Registryを選択すると下記の画面が表示されます。
詳細説明にアンサーに入れる項目があるのでそちらを確認して設定します。
アンサー項目
今回設定する項目は下記になります。
パラメータ | 説明 | 設定値 |
---|---|---|
persistence.enabled | DockerストレージにPVCを使うかどうか | true |
persistence.size | ストレージのサイズの確保 | 30Gi |
service.type | サービスタイプの選択します。この選択によってパラメータの項目が変わります。 | NodePort |
service.nodePort | この項目はservice.typeによって有効か向こうになります | 30500 |
パラメータなどはこちらを参考にしています。
アンサー項目を入れたので起動をしてみます。
確認
カタログ起動一覧を確認すると下記の様に起動しているのがわかります。
activeになっていると起動していますがエラーが出ているとパラメータが間違ってたりします。
プッシュによる確認
プッシュによる確認をしてみます。
$ docker push ローカルホストまたはIP:30500/コンテナ名:latest
The push refers to repository [ローカルホストまたはIP:30500/コンテナ名]
Get https://ローカルホストまたはIP:30500/v2/: http: server gave HTTP response to HTTPS client
http通信なのにhttps通信を行っているのでpush出来ないみたいです。
その為、Docker側の設定を行います。
MacのDocker For Macではホームディレクトリにある.docker/daemon.jsonに追加で設定を行います。
とりあえずviで設定します。
$vi ~/.docker/daemon.json
{
"debug" : true,
"insecure-registries" : [
"ローカルホストのIP:30500"
],
"experimental" : false
}
ローカルホストのIPの部分とポートの設定をしてdockerを再起動します。
UIからの設定方法
まずは右上にあるDockerアイコンをクリックしてPrefarencesをクリックします。
次にタブにあるdeamonをクリックするとInsecure registriesにローカルホストのIP:30500を追加します。
追加したらApply & Restartを押すと再起動します。
では再度プッシュしてみます。
$ docker push ローカルホストやIP:30500/コンテナイメージ:latest
The push refers to repository [ローカルホストやIP:30500/コンテナイメージ]
476d1e464d35: Pushed
f1b5933fe4b5: Pushed
latest: digest: sha256:955ba51589b72e9fd5a6ba25d2bdfc9bf368f8f327aeb913a6bd0e45e969d656 size: 740
プッシュ出来たので確認は終わります。
まとめ
Docker Registryを追加してみたけど、簡単にプライベートなコンテナ管理が出来る様になります。
オンプレミスで使う分には良いのかなって思ったが、お金がかからない様に導入しようとしたりすると逆にお金がかかるのではって思ってしまった。
なぜお金がかかるかって言うとGCPやAWSのインスタンスで行うと、逆にストレージを圧迫してしまい、お金がかかるのでは?と思いました。
そして設定でCloud StorageやS3等にと思ったけど、これやるくらいならGCPやAWSのコンテナ管理使った方がマシって結論になりました。