Kubernetes

Docker Registryによるプライベートなコンテナ管理

2019年6月10日

プライベートコンテナ

プライベートなコンテナイメージを使いたいと思ったことはありませんか。

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を選択します。

Docker Registryによるプライベートなコンテナ管理

Docker Registryを選択すると下記の画面が表示されます。

Docker Registryによるプライベートなコンテナ管理

詳細説明にアンサーに入れる項目があるのでそちらを確認して設定します。

アンサー項目

今回設定する項目は下記になります。

パラメータ説明設定値
persistence.enabledDockerストレージにPVCを使うかどうかtrue
persistence.sizeストレージのサイズの確保30Gi
service.typeサービスタイプの選択します。この選択によってパラメータの項目が変わります。NodePort
service.nodePortこの項目はservice.typeによって有効か向こうになります30500

パラメータなどはこちらを参考にしています。

Docker Registryによるプライベートなコンテナ管理

 アンサー項目を入れたので起動をしてみます。

確認

カタログ起動一覧を確認すると下記の様に起動しているのがわかります。

Docker Registryによるプライベートなコンテナ管理

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を追加します。

Docker Registryによるプライベートなコンテナ管理

追加したら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のコンテナ管理使った方がマシって結論になりました。

-Kubernetes
-, , , ,