くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

GUIでDockerを管理できるPortainer CEに入門してみた

Portainerが便利というはなし聞いて、
ちょっと入門してみたときの備忘録(*´ω`*)

Portainerとは

Portainer is a fully featured Docker management tool.

GUIでDockerを管理できる便利なツール。
機能もいろいろあるっぽい。

Fetature

  • Build your images
  • Deploy your application
  • Secure your environments
  • Browse your registries
  • Manage your clusters
  • Troubleshoot your configuration

読んでみたのはこのあたり

Portainerのアーキテクチャ

The Portainer architecture

登場人物は3つ。

  • Portainer Server
    • 単一の中央管理サーバ
    • データの永続化が必要
  • Portainer Agent
    • 管理される側のAgent
    • ServerからAgentにアクセス
  • Edge Agent
    • 管理される側のAgent
    • Edge AgentからServerにアクセス

Portainer AgentかEdge Agentのどっちを使うといいかはこのあたりに。

ざっくりとしては、

  • 同一ネットワークなどアクセスできる場合は、Portainer Agent
  • 別ネットワークやインターネットに公開したくない場合は、Edge Agent

っぽい感じがする。

Portainerをためしてみる

Install Portainer CE with Docker Standalone

このあたりを参考に試してみる。

最新のdockerがインストールされている前提。

Portainer Serverなどは軽量Dockerコンテナとして提供されている。
コンテナの各バージョンや要件はこのあたり。

# 管理画面のアカウントや管理データを保持するvolumeを作成
$ docker volume create portainer_data

# Portainer Serverコンテナのインストール&起動
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

ポートの9443は管理画面のhttps用、8000はEdge AgentのTCPトンネルサーバ用。

Portainer自体が自己証明書を作成してくれるのでhttpsでアクセス可能。
httpがいいときは、-p 9000:9000に変更すればOK

初期設定

起動を確認したら、https://localhost:9443
にアクセスすると管理画面が表示される。

初回起動時にはアカウント作成画面になるので、
アカウントを作成すればOK

create admin user

アカウントの作成が完了すると、
ローカルのDockerの情報が見れるようになる。

Settings関連

Users

Portainer管理画面のログインアカウントの管理関係。
TeamやRolesなども設定できる。

Environments

Portainer Serverが接続しているDocker環境。
初期状態はローカルのDockerだけだけど、ここで追加したりできる。

Registries

Contener Registoryの管理。
デフォルトはDockerHubのみだけど、
AWS ECRやAzureなども追加できる。

Settings

Portainer Server自体の設定。
LDAP/OAuthを使った認証設定や
Edge Agent関係の設定などもこのあたり。

Tips

GCPのArtifact Registryを登録する

前の記事でArtifact RegistryにDockerイメージをpushしたので、
PortainerのRegistriesに登録したい。

Custom Registryを使えば登録できるっぽい。

参考にしたのはこのあたり。

すでにArtifact Registryがある前提。
アクセスするために認証が必要なので、アクセストークンを取得する。
権限をArtifact Registryに絞ったサービスアカウントを作成しておくのが良い。

# ログイン中のアカウントでアクセストークンを取得
$ gcloud auth print-access-token | pbcopy
> ya29.XXXXXXX

# サービスアカウントでアクセストークンを取得
$ gcloud auth print-access-token --impersonate-service-account <ACCOUNT> | pbcopy
> ya29.XXXXXXX

あとは、Registryを追加すればOK

  • Name: (すきな名前)
  • Registry URL: Artifact RegistryのURL
    • <REGION>-docker.pkg.dev/<PROJECT_ID>/<REPOSITORY_NAME>
    • 例) asia-northeast1-docker.pkg.dev/my-project/my-repository
  • Authentication: ON
    • Username: oauth2accesstoken
    • Password: (取得したアクセストークン。例: ya29.XXXXXXX)

ユーザ名のoauth2accesstokenGCPで指定されているっぽい。

あとは、Imagesで作成したRegistryを選んで、
Pull the imageを試して成功すればOK


以上!! これでGUIでDockerを管理できるように。。(*´ω`*)

参考にしたサイトさま