Docker-composeでPotainerを起動する

2022年9月30日

Dockerの管理にはPortainerを使うのが便利で楽である。dockerコマンドを使えば良いと思うかもしれないが、やはりGUIで確認できたり操作できるのは便利。ということで、Portainerをインストールする。

前提条件

PortainerのウェブページはSSLで保護するが、どうせ開発者しか使わないので、Let’s Encrypt等の証明書ではなく、自己署名証明書を使うことにする。

Let’s Encryptの証明書を管理してくれるhttps-portalやTraefikを、Portainer自体で管理するので、二重にその処理を行うことはしない。

フォルダと自己署名証明書の用意

適当なフォルダを用意して、そこに自己署名証明書を作成する。

mkdir some-folder
cd some-folder
mkdir certs
cd certs

以下はLinuxで自己署名証明書を発行する方法記述そのままの方法。

openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
この後なんやかやと聞かれるが、すべてENTERでよい
openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt

days 3650からわかるように、この証明書の有効期間は3650日になる。

docker-compose.ymlを記述して起動する

Portainerは9000番がhttp、9443番がhttpsになっているが、httpは不要。

version: '3'
services:
  portainer:
    image: portainer/portainer-ce:2.15.1
    container_name: portainer
    ports:
      - 9443:9443
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data:/data
      - ./certs:/certs
    command:
      --ssl
      --sslcert /certs/server.crt
      --sslkey /certs/server.key

この時点でフォルダーは以下の状態になる。dataフォルダはPortainerが勝手に作るので、作成の必要はない。

some-folder
  docker-compose.yml
  certs
    server.crt
    server.csr
    server.key

これを起動する。

docker-compose up -d

Portainerにアクセスする。

123.123.123.123、もしくはporitainer.example.comだとすると、

  • https://123.123.123.123:9443
  • https://portainer.example.com:9443

としてアクセスする。当然ブラウザが警告してくるが、構わずアクセスを続行する。

初期画面では、ログインアカウントを作成するだけだ。これ以外に./dataディレクトリに何が格納されるのかは不明。ちなみに、この記事を書くために、いったん./dataディレクトリを削除したが、再度アカウントを作成する以外は何の不都合も感じなかった。

ログインすると以下の画面が出てくる

コンテナを調べてみると、このPortainer自体もリストされる。