網頁界面的docker控制器 - Portainer-ce & agent

前言

手上還有可以使用的VPS,我就想說乾脆都掛上Docker+portainer-ce agent這樣就可以全部一起遠端控制

基本做法

Portainer-ce

這是一個web-GUI,用來管理docker的,雖然說可以直接用cli管理就好了,但是有Web-GUI也是很方便的所以就裝了

他有單機用也可以管理docker-swarm跟 k8s,我沒那麼多node(那堆VPS for v2ray…)所以簡單的單機就可以了

參考資料Portainer Deployment@Docker Hub

1
2
3
4
#建立Volume
docker volume create portainer_data
#部屬portainer-ce
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

這裡可以注意

  • -d 是在背景跑

  • -p 8000:8000 -p 9000:9000

    這個-p定義可以是 -p 主機ip : 主機port : container port

  • --name= 定義你的container要叫什麼名字

  • --restart= 定義重新啟動的規則,有

    • no不重新啟動
    • on-failure[:最多次數]只有沒有fail才重新啟動,後面的最多次數是最多重試次數
    • always總是重啟
    • unless-stopped 除非停止不然都會重啟
  • -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

    這是兩個指令

    • -v /var/run/docker.sock:/var/run/docker.sock

      這個是利用-v把系統的/var/run/docker.sock對應到container裡的/var/run/docker.sock,這樣裡面的service就可以抓到外面的docker正在跑的狀態

    • -v portainer_data:/data portainer/portainer-ce

    ​ 這裡是利用建立好的volume直接使用,若要自己定義位置,也可以就是把前面的部分定義成絕對位置的目錄也可以,然後就是寫入權限要滿足不然寫不進去

Portainer-agent

1
2
3
4
5
6
7
8
9
10
11
12
#portainer-agent.yml
---------------------------------------------------------------------------------------------------------------------------------
services:
portainer:
image: portainer/agent:latest
container_name: portainer_agent
ports:
- 9001:9001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
restart: always

然後就是docker-compose up -d就可以了