星期六, 6月 16, 2018

Portainer with openSUSE Leap 15 小記

Portainer with openSUSE Leap 15 小記


OS:  openSUSE Leap 15


因為讀書會的關係, 接下來要練習 portainer


官方網站


下載 potainer image


# docker   image  pull  portainer/portainer


確認資訊


# docker  images
REPOSITORY            TAG IMAGE ID            CREATED SIZE
portainer/portainer   latest 50c62d83c09c        3 weeks ago 54.1MB


使用 docker run 來執行 portainer


# docker  run  -d  -p  9000:9000  -v  /var/run/docker.sock:/var/run/docker.sock  portainer/portainer


41c93d65b4dbb18b50089361e9f96f55b1615847fc564d98214994736c10060b

使用瀏覽器開啟  http://localhost:9000
設定 admin 的密碼
點選 Create user



選取連接的方式


因為是讀書會的關係, 先來嘗試 Local 的連接方式
但是這個部份要配合 -v /var/run/docker.sock:/var/run/docker.sock 才可以
點選 Connect



接下來就會出現漂亮的 dashboard




在 App Templates 有一些 template 可以供安裝



這邊嘗試使用 Nginx 來進行實驗
最簡單的方式就是輸入名稱
點選 Deploy the Container

這個時候就會在 Containers 這邊看到相關資訊
因為剛剛我們沒有特別指定 port, 所以就會隨機指定一個 port 到container 裡面的 port 80 / 443




點選 Container 的名字之後
可以使用圖示來進行 container 的基本操作
觀察 status, 使用終端機這類的操作



接下來嘗試另外一種建立 container 的方式


點選 Containers 裡面的 Add container



在設定的畫面中
這邊先嘗試只輸入名稱 以及 image name (這邊以 sakana/jupyterhub 為例子 )
點選 Deploy the container

因為沒有指定 port mapping 或是開啟 Publish all exposed ports
所以就不會 有 Published Ports




如果有開啟 Publish all exposed ports
就會隨機指定一個 port 給 Dockfile 內有指定 EXPOSE 的 port




---------------------------------


實驗完 Local 的方式, 接下來實驗 docker swarm 的連接


首先我是在 Azure 上面開了 3 台 openSUSE Leap 來建立 docker swarm


建立的方式很簡單


Manager node 使用 #docker  swarm  init  --advertise-addr  IP_ADDRESS 初始化
Worker node 使用 manager node 吐出來的 join 指令加入
  • 例如 # docker swarm  join     --token SWMTKN-1-5tq2mf503fj8oc1ehvuh0zybr8t2bxwzrlma1b0wokfj5kzc2m-eqixr308uwmhqso82bovb6hf5     10.0.0.4:2377


點選左邊的 Endpoints
點選 Add endpoint



在連接的畫面會看到
還剩下兩種方式
  • Docker
    • 這個要連接 Docker 主機的 api port
  • Portainer Agent
    • 這個我還沒有試過, 但是連接 port 9001



目前先嘗試 連接 docker
但是要先提到, 之前有發生 port 2375 暴露產生的漏洞, 所以 docker 官方是建議 使用 port 2376 + TLS


個人的想法是除了使用憑證以外, 還要使用 firewall 限制 ip 等等


但是因為是讀書會, 所以目前嘗試的方式是開啟 port 2375
作法參考網路上找到的方式


# vi   /usr/lib/systemd/system/docker.service
修改 ExecStart 的參數, 加入紅色的部份


ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/bin/docker-runc -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
#ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/bin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS


# systemctl   daemon-reload


重新啟動 docker
# systemctl  restart  docker


檢查 參數
# ps -ef  | grep docker


#netstat  -tupln
tcp        0 0 :::2375                 :::*                    LISTEN 21501/dockerd  


接下來就到 portainer 上面輸入 名字 +  IP:2375
就可以了


成功之後
左上角就會出現 CHANGE ENVIRONMENT
就可以用下拉式選單選遠端的 docker



因為是使用 docker swarm
所以會有些差異, 例如 Services , Stacks 還有 Swarm



接下來就可以使用圖形界面來管理 docker swarm 以及遠端的 docker 了
:)


讀書會又前進一步


~ enjoy it


------------------------------

2018/6/16 更新

遠端連接的部份 port 2376 的部份
使用 DigitalOcean 來進行實驗
利用 docker-machine 指令來建立 DigitalOcean 的VM, 本質上就會在 port 2376 listen
然後 docker-machine 也會幫忙建立憑證與 key

連接的方式
輸入名稱 以及 Endpoint URL 記得 port 是 2376
選取 TLS with Client verification only ( 或是 skip server verification )
TLS certificate 用 ~/.docker/machine/certs/cert.pem
TLS Key 用 ~/.docker/machine/certs/key.pem
點選 Add endpoint


Reference:


沒有留言: