Docker視覺化web介面管理-Portainer部署記錄
Docker圖形頁面管理工具基本常用的有三種: Docker UI,Shipyard,Portainer,之前分別介紹了Docker UI和Shipyard部署,下面簡單介紹下Portainer部署.Portainer是Docker的圖形化管理工具,提供狀態顯示面板、應用模板快速部署、容器映象網路資料卷的基本操作(包括上傳下載映象,建立容器等操作)、事件日誌顯示、容器控制檯操作、Swarm叢集和服務等集中管理和操作、登入使用者管理和控制等功能, 功能十分全面,基本能滿足中小型單位對容器管理的全部需求。
0) 機器環境
[[email protected]~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [[email protected] ~]# ifconfig|grep 172.16.60 inet 172.16.60.213 netmask 255.255.255.0 broadcast 172.16.60.255 [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld [[email protected]~]# firewall-cmd --state not running
1) 查詢當前有哪些Portainer映象
[[email protected] ~]# docker search portainer NAME DESCRIPTION STARS OFFICIAL AUTOMATED portainer/portainer A simple to use management user interface fo… 831 hypriot/rpi-portainer A web interface for the Docker engine. Dead … 36 portainer/templates App Templates for Portainer http://portainer… 14 portainer/agent An agent used to manage all the resources in… 10 portainer/golang-builder Utility to build Golang binaries. 2 [OK] bmoorman/portainer Portainer [github.com/portainer/portainer] o… 1 [OK] arpanpal010/portainer 1 usgsastro/portainer custom portainer install into centos7 1 [OK] softonic/portainer-endpoint Allows auto register all the swarm nodes in … 1 [OK] dockerframework/portainer Portainer (Simple Management UI for Docker) … 1 [OK] rancher/portainer-agent 0 voltha/voltha-portainer Portainer support for VOLTHA 0 nenadilic84/portainer 0 rodjers/portainer Swarm portainer 0 portainer/base Multi-stage build image to create the Portai… 0 [OK] hassioaddons/portainer 0 portainer/angular-builder Builder image for Portainer frontend. 0 [OK] stefanscherer/portainer Portainer for Windows Insider 0 jiangxinshang/portainer 可在loongson的mips64el平臺執行的portainer 0 ssbkang/portainer 0 ollijanatuinen/portainer debug/development versions of portainer 0 helloysd/portainer 0 j0nnylester/portainer portainer running on a Raspberry Pi 0 11384eb/portainer 0 flochtililoch/armv7l-portainer 0
2) 下載Portainer映象
[[email protected] ~]# docker pull portainer/portainer Using default tag: latest latest: Pulling from portainer/portainer d1e017099d17: Pull complete d4e5419541f5: Pull complete Digest: sha256:07c0e19e28e18414dd02c313c36b293758acf197d5af45077e3dd69c630e25cc Status: Downloaded newer image for portainer/portainer:latest [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 62f816a209e6 6 days ago 109MB portainer/portainer latest 00ead811e8ae 8 weeks ago 58.7MB
3) 執行Portainer,Portainer執行方式有以下兩種方式:
單機版執行
如果僅有一個docker宿主機,則可使用單機版執行,執行以下命令就可以啟動了:
[[email protected] ~]# docker run -ti -d --name kevin-portainer -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer 5818eaf37bf493a679ebbaa05ba28c6a860501ea78e608981e1934300843ab4b [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5818eaf37bf4 portainer/portainer "/portainer" 19 seconds ago Up 2 seconds 0.0.0.0:9000->9000/tcp kevin-portainer
以上語句用宿主機9000埠關聯容器中的9000埠,並給容器起名為portainer-test。啟動成功後,使用該機器IP:PORT即可訪問Portainer。訪問http://172.16.60.213:9000, 首次登陸需要註冊使用者,給admin使用者設定密碼:
單機版這裡選擇local, 點選Connect進行連線即可
如上,點選左邊欄的"Endpoint"-"local",可以將單機版的節點名稱修改下,比如將預設的"local"改為"docker-node1-172.16.60.213"
點選"Update endpoint",就可以看到修改後新的節點名稱"docker-node1-172.16.60.213"了,然後點選"Home",點選右邊的docker-node1-172.16.60.213節點,就可看到該節點的Docker管理資訊.
接著就可以在這個web節點裡進行Docker容器的建立,更名,關閉,啟動,刪除以及映象,網路,volume等操作管理了
叢集執行
在有多臺Docker的情況下,進行叢集管理就十分重要了,Portainer也支援叢集管理,Portainer可以和Swarm一起來進行叢集管理操作。通過以下命令啟動:
一. 先來搭建Swarm叢集環境 1) 基本環境 用兩臺機器來搭建(都是centos7.5系統) 172.16.60.213 docker-node1 172.16.60.214 docker-node2 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 修改兩臺機器的主機名並做hosts (這裡以docker-node1為例) [[email protected] ~]# hostnamectl set-hostname docker-node1 [[email protected] ~]# echo "docker-node1" > /etc/hostname [[email protected] ~]# vim /etc/hosts 172.16.60.213 docker-node1 172.16.60.214 docker-node2 關閉兩臺機器的防火牆和selinux (這裡以docker-node1為例) [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld [[email protected] ~]# firewall-cmd --state not running [[email protected] ~]# cat /etc/sysconfig/selinux SELINUX=disabled [[email protected] ~]# setenforce 0 [[email protected] ~]# getenforce Disabled 兩臺機器都要安裝docker環境 (這裡以docker-node1為例) [[email protected] ~]# yum install -y docker [[email protected] ~]# systemctl start docker [[email protected] ~]# systemctl disable docker 修改docker監聽埠 (這裡以docker-node1為例) Swarm是通過監聽2375埠進行通訊的,所以在使用Swarm進行叢集管理之前,需要設定一下2375埠的監聽。所有主機節點docker開啟2375監聽, docker版本不同,配置方式不一樣 [[email protected] ~]# cp /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak [[email protected] ~]# vim /lib/systemd/system/docker.service //將ExecStart一行修改為下面內容: ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock [[email protected] ~]# diff /lib/systemd/system/docker.service /lib/systemd/system/docker.service.bak 13c13 < ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --- > ExecStart=/usr/bin/dockerd -H unix:// 重啟docker服務 [[email protected] ~]# systemctl daemon-reload [[email protected] ~]# systemctl restart docker 2) Swarm安裝和叢集建立 2.1) Swarm映象下載 docker-node1機器上下載 [[email protected] ~]# docker pull swarm [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE swarm latest ff454b4a0e84 5 months ago 12.7MB docker-node2機器上下載 [[email protected] ~]# docker pull swarm [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/swarm latest ff454b4a0e84 5 months ago 12.7 MB 2.2) 初始化Swarm 在docker-node1機器上進行初始化操作 [[email protected] ~]# docker swarm init --advertise-addr 172.16.60.213 Swarm initialized: current node (vayif0c04lged913w9z3pxtd5) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-5qjhhernfguqc4zwhtwgdzfwy7xl1ksjr04ve2wg0pk376wqvx-717allcxbo5mu02weq0s4ge36 172.16.60.213:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. 上面命令執行後,該機器自動加入到swarm叢集。這個會建立一個叢集token,獲取全球唯一的 token,作為叢集唯一標識。 後續將其他節點加入叢集都會用到這個token值。 其中,--advertise-addr引數表示其它swarm中的worker節點使用此ip地址與manager聯絡。命令的輸出包含了其它節點如何加入叢集的命令。 2.3) 新增叢集節點 在docker-node2機器上執行以下新增叢集節點的操作命令 [[email protected] ~]# docker swarm join --token SWMTKN-1-5qjhhernfguqc4zwhtwgdzfwy7xl1ksjr04ve2wg0pk376wqvx-717allcxbo5mu02weq0s4ge36 172.16.60.213:2377 This node joined a swarm as a worker. 如後續要加入其他更多的節點,新增操作也是執行這個命令. 2.3) 檢視叢集節點 在docker-node1機器上執行檢視,因為此時它是swarm叢集的leader節點 [[email protected] ~]# docker node list ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION vayif0c04lged913w9z3pxtd5 * docker-node1 Ready Active Leader 18.09.0 trmbfdjdxncnukfenuzuokfun docker-node2 Ready Active 1.13.1 最後檢視下兩個機器上的2375埠都已經開啟了 [[email protected] ~]# lsof -i:2375 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dockerd 13785 root 5u IPv6 4518841 0t0 TCP *:2375 (LISTEN) [[email protected] ~]# lsof -i:2375 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dockerd-c 2966 root 5u IPv6 3602947 0t0 TCP *:2375 (LISTEN) =============================================================== 二. 部署Portainer docker-node1節點操作 刪除上面單機版部署的容器 [[email protected] ~]# for i in $(docker ps -a -q);do docker stop $i && docker rm $i;done e3af45ff8141 e3af45ff8141 5818eaf37bf4 5818eaf37bf4 [[email protected] ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE portainer/portainer latest 00ead811e8ae 8 weeks ago 58.7MB [[email protected] ~]# docker run -ti -d --name my-portainer -p 9000:9000 --restart=always portainer/portainer 6755cd140049d7cb3ab77f40ddf0fb79f20384cffd17cb87da68d04033be30b5 [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6755cd140049 portainer/portainer "/portainer" 57 seconds ago Up 41 seconds 0.0.0.0:9000->9000/tcp my-portainer
訪問http://172.16.60.213:9000, 同樣首次登陸需要註冊使用者,給admin使用者設定密碼:
叢集模式, 這樣一定要選擇Remote, 輸入docker-node1的ip,然後點選Connect。
同樣點選左邊欄的"Endpoints" - "+add endpoint", 新增叢集節點
新增之後,點選左邊欄的"Home", 右邊就可以看到節點資訊了,可以進行切換操作.
如上,發現docker-node1(172.16.60.213)節點狀態是"down",排查原因: