目錄
- 一、背景
- 二、操作步驟
- 三、安裝Portiner
- 3.1 docker部署
- 3.2 節點初始化
- 3.3 功能初探
- 四、管理節點
- 4.1 開始添加節點
- 4.2 開放API控制
- 4.3 驗證端口狀態
- 4.4 完成添加節點
- 五、部署容器
- 5.1 部署單個容器
- 5.2 部署 docker-compose
一、背景
最近在使用rancher2.5.5部署Redis主從復制的時候,發現rancher會產生很多iptables的規則,這些規則導致我們在部署了rancher的機器上無法使用Redis的主從復制功能,因為我對rancher和k8s的了解也僅限于了解網絡架構和使用,對底層并不深入,短期內無法解決這個網絡沖突的問題;
因此我將rancher管理docker的模式換成使用protainer的方式,這個portainer相對來說更加輕量級,在搭建過程中也使用了幾個小時學習,現在講整個過程盡量復原給大家一些參考。
二、操作步驟
三、安裝Portiner
安裝Portiner的方式有很多種,但我一向喜歡使用最簡單的方法來完成所需要做的事情,因此這里我將使用docker的方式來搭建它。
3.1 docker部署
docker部署的方式非常簡單,只需要執行簡單的運行容器命令即可,命令如下所示。
docker run -d \
-p 9000:9000 \
-p 8000:8000 \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/docker/portainer-ce/data:/data \
--name portainer-ce portainer/portainer-ce
命令中映射了物理機的8000端口和9000端口到容器中的8000端口以及9000端口,同時將宿主機的docker通信文件/var/run/docker.sock
也映射到了容器中,另外為了持久化部署,還將目錄 /opt/docker/portainer-ce/data
映射到了容器的/data
目錄下,命令執行完成之后,返回結果信息如下圖所示

在上圖中可以看到已經成功運行了一個docker容器,接下來我需要驗證服務是否正常運行,使用瀏覽器訪問URLhttp://127.0.0.1:9000/
地址,結果如下所示

在上圖中可以看到Portainer系統已經能夠訪問, 說明成功系統安裝成功了。
3.2 節點初始化
現在我需要設置管理員的賬號密碼,這里我簡單填寫密碼和確認密碼之后,點擊Create user
按鈕即可創建管理員賬戶。
管理員賬戶設置完成之后,需要進行初始化,如下圖所示

在上圖中有三個選項,我選擇使用Portainer管理本地docker程序,點擊Connect
按鈕,即可完成初始化操作。
3.3 功能初探
完成初始化操作之后,就可以進入Portainer的工作界面,如下圖所示

在上圖找那個可以看到Portainer系統中已經有一個local
的本地節點,我們可以點擊它進入節點的管理,如下圖所示

在上圖中可以看到Portainer系統列出了local
節點的 Stack、容器信息、鏡像信息、磁盤信息、網絡信息等等,這里我隨意點擊Containers
區塊,就可以看到容器列表,如下圖所示

在上圖中可以看到容器列表中存在兩個容器,以及容器的運行狀態,也可以對這些容器進行控制。
四、管理節點
現在已經對本地docker可以進行控制,但是我并不滿足于此,我需要對其他機器也進行控制。
4.1 開始添加節點
在Portainer系統中,有一個endpoints
的菜單,在這個菜單當中可以添加多個節點,如下圖所示

在上圖中可以看到,已經有一個local
的節點,在列表上方有一個Add endpoint
按鈕,點擊按鈕后就可以來到添加節點的詳情頁,如下圖所示

在上圖中可以看到有5個選項,這里我選擇最簡單的一種方式,使用Docker API
進行控制。
4.2 開放API控制
這種方法需要在節點的docker啟動程序中添加參數,因此我需要先登錄到節點服務器中去,ssh登登錄服務器的命令如下所示
命令執行完畢之后,返回如下圖所示

在上圖中可以看到已經進入節點所在的服務器,接著需要編輯docker啟動的配置文件,命令如下所示
vim /usr/lib/systemd/system/docker.service
命令執行之后,就可以在vim編輯界面修改配置,如下圖所示

將開啟遠程訪問代碼加入到docker的啟動命令行中,代碼如下所示
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
將代碼復制到 /usr/bin/dockerd
程序后面,如下圖所示

保存配置文件之后,需要重啟docker服務,重啟docker的命令如下所示
systemctl daemon-reload && systemctl restart docker
重啟docker之后,一切正常的話就完成了
4.3 驗證端口狀態
查看docker的配置信息,命令如下所示
命令執行之后,返回的信息如下圖所示

在上圖中可以看到docker給了一個warning的警告提示,告知我開啟遠程訪問會存在安全風險,這里暫時不理會它,不過出現這個提示說明確實是開啟了遠程訪問的功能
另外可以查看通過開放端口,來驗證開啟是否成功,命令如下所示
命令執行完畢之后,會返回當前主機的端口開放情況,如下圖所示

在上圖中可以看到2375
端口已經被開啟成功, 說明節點本身開啟docker是OK了;
但是Portainer通過ip訪問此節點的時候,要考慮網絡中的防火墻是否會屏蔽此端口,這里可以使用nmap
工具來探測節點的端口是否可以被訪問,現在我回到Portainer系統的命令終端,并使用nmap工具進行探測,命令如下所示
nmap -p 2375 xxx.xxx.xxx.xxx
命令執行之后,會返回2375是否處于開啟的情況,執行結果如下圖所示

在上圖中可以看到節點的2375
端口是開啟的,并且可以進行連接。
4.4 完成添加節點
接下來回到瀏覽器窗口,如下圖所示

在上圖所示的網頁中,將節點的IP地址和端口通過URL形式填寫進去,然后點擊Add endpodint
按鈕,即可將節點增加進去,添加成功會有相應的提示,如下圖所示

在上圖中可以看到Portainer系統提示添加節點已經成功,并且節點列表可以看到此節點了。
五、部署容器
添加節點完成之后,我準備在遠程節點中部署我的容器;
5.1 部署單個容器
回到Portainer主頁,在主頁可以看到剛才添加的節點信息,如下圖所示

在上圖中選擇剛才添加的節點,然后進入容器菜單選項,可以看到此節點的容器列表,,如下圖所示

在上圖所示頁面的列表上方有一個Add container
按鈕,點擊此按鈕后就會調整到添加容器詳情頁

在上圖所示的頁面中,需要將docker鏡像地址填寫進去,這里我隨意選舉了一個nginx鏡像,并且將主機的8888端口映射到了容器的80端口,提交這些信息之后,Portainer系統會告知你容器運行是否成功,如下圖所示

在上圖中可以看到容器已經運行成功,并且跳轉到了容器列表中,接下來我們可以訪問此節點對應的8888端口,來驗證服務是否可用.
打開瀏覽器,然后在地址欄中填入URLhttp://xxx.xxx.xxx.xxx:8888/
,訪問之后返回的結果如下圖所示

在上圖中可以看到nginx
服務已經成功運行了;
5.2 部署 docker-compose
除了在容器列表頁部署容器之外,Portainer系統還支持使用docker-compose的方式進行部署,在Portainer系統中叫做stacks
,在菜單欄中選擇此項,可以進入docker-compose服務的列表,如下圖所示

在列表的上方有一個Add stack
按鈕,點擊此按鈕,就可以添加docker-compose
服務,如下圖所示

在上圖所示的頁面中,會要求我填寫docker-compose的信息,這里我準備了一個Redis服務的docker-compose
的配置,配置代碼如下所示
version: '3.5'
services:
redis:
image: "redis:latest"
container_name: redis_test
command: redis-server
ports:
- "16379:16379"
降配置填到頁面的后,進行提交Portainer就會在對應節點部署剛才的docker-compose
服務,如下圖所示

部署成功之后,可以在stacks列表中看到剛才部署的服務,你還可以點擊列表中的服務名稱,進入詳情頁進行查看和修改,如下圖所示

在上圖中可以看到此服務具體運行了什么容器,也可以終止或刪除該容器。
本文對Portainer也是一個初探,更加細節的還需要各位孜孜不倦的進行探索。
到此這篇關于使用Portainer部署Docker容器的項目實踐的文章就介紹到這了,更多相關Portainer部署Docker容器內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
到此這篇關于使用Portainer部署Docker容器的項目實踐的文章就介紹到這了,更多相關Portainer部署Docker容器內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!