使用Portainer部署Docker容器的項目實踐
一、背景
最近在使用rancher2.5.5部署Redis主從復制的時候,發現rancher會產生很多iptables的規則,這些規則導致我們在部署瞭rancher的機器上無法使用Redis的主從復制功能,因為我對rancher和k8s的瞭解也僅限於瞭解網絡架構和使用,對底層並不深入,短期內無法解決這個網絡沖突的問題;
因此我將rancher管理docker的模式換成使用protainer的方式,這個portainer相對來說更加輕量級,在搭建過程中也使用瞭幾個小時學習,現在講整個過程盡量復原給大傢一些參考。
二、操作步驟
- 安裝Portiner
- 管理節點
- 部署容器
三、安裝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 info
命令執行之後,返回的信息如下圖所示
在上圖中可以看到docker給瞭一個warning的警告提示,告知我開啟遠程訪問會存在安全風險,這裡暫時不理會它,不過出現這個提示說明確實是開啟瞭遠程訪問的功能
另外可以查看通過開放端口,來驗證開啟是否成功,命令如下所示
netstat -ntl
命令執行完畢之後,會返回當前主機的端口開放情況,如下圖所示
在上圖中可以看到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容器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
到此這篇關於使用Portainer部署Docker容器的項目實踐的文章就介紹到這瞭,更多相關Portainer部署Docker容器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found