💻Docker と運用

Docker で Web アプリを使い始めるということ

  • 新しくなにかを導入するときにコマンドがー
  • アップデートがー
  • 遊んだ後の掃除がー

といった諸問題が発生する。めんどうくせえ。自前ホストと OS の時は要らないけど、 QNAP だとイメージを docker rm しろみたいな記事を見たり、やりたいことと直結していない。むしろやる必要がないか、やってはいけないし。

この、やりたいことと用意されている文書とが直結していない問題はどこかでまとめておきたい問題ではあるので、あとで書く。

で、ちょうど vaultwarden と iOS 用 bitwarden の更新があり、 bitwarden が .NET から swift に移行したそうで使えなくなりw。結果、サーバー側入れ替えでクライアント側も動いた。一応は保管庫をエクスポートしてから更新をかけた。だいじ。

という感じの工程で、現時点の調査情報をメモする。

Portainer の導入

まさに欲しかった Docker 管理ツール。ポート+メンテナー=ポーテナー、とでも発音するべきかな。

オール英語だから慎重に翻訳しながら使うのが手間だが仕方ない。日本語になにもかも翻訳されていた時代が懐かしい。これも「探せないが確実にある情報」として、やりたいことと文書のミッシングリンクだよなあ。

# 最初はしゃあないから CLI でたちあげます
sudo docker run \
  --detach \
  --publish 9000:9000 \
  --publish 8000:8000 \
  --name portainer \
  --restart always \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume portainer_data:/data \
  portainer/portainer-ce

# うちのラズパイはヘッドレスなので、メイン機からブラウザアクセスする用に穴をあけます
# http://ラズパイのローカルアドレス:9000/ にアクセスしたら使い始められる
sudo ufw allow 9000/tcp

コンテナのアップデート

  • サイドバーの Home を選ぶとメインエリアにローカルな docker デーモン?を表示するのでこれも選ぶ。サイドバーから直接コンテナにもいけますけど階層構造はこういう感じですってことね。

  • そうするとダッシュボードが表示され、スタック、コンテナ、イメージ、ボリューム、ネットワークが現れるので、そこからコンテナを選ぶ。

  • コンテナ名(リンクになっている)を選ぶとアクション選択肢があるので、その中から Recreate を選ぶ。

    stateDiagram-v2
    direction TB
    
    state "Container" as B {
      fxB:Page & Name Functions
      fxB:Start
      fxB:Stop
      fxB:Kill
      fxB:Restart
      fxB:Pause
      fxB:Resume
      fxB:Remove
      fxBd:Page Functions
      fxBd:Add
      lkB:Page Link
      lkB:Name
      lkB:Quick Actions
      lkB:Image
      lkB:Published Port
    }
    
    state "Name" as C {
      fxC:Page Functions
      fxC:Recreate
      fxC:Duplicate/Edit
    }
    
    B --> C
    
  • これで対象のコンテナに使われているイメージがプルされ、再起動も行われる。まあ、ものによっては永続化が切れることもあるだろうから、そこらへんはケースバイケースで対応してもらいたい。