使用Portainer部署Docker容器的項目實踐
一、背景
最近在使用rancher2.5.5部署Redis主從復制的時候,發(fā)現(xiàn)rancher會產(chǎn)生很多iptables的規(guī)則,這些規(guī)則導致我們在部署了rancher的機器上無法使用Redis的主從復制功能,因為我對rancher和k8s的了解也僅限于了解網(wǎng)絡(luò)架構(gòu)和使用,對底層并不深入,短期內(nèi)無法解決這個網(wǎng)絡(luò)沖突的問題;
因此我將rancher管理docker的模式換成使用protainer的方式,這個portainer相對來說更加輕量級,在搭建過程中也使用了幾個小時學習,現(xiàn)在講整個過程盡量復原給大家一些參考。
二、操作步驟
- 安裝Portiner
- 管理節(jié)點
- 部署容器
三、安裝Portiner
安裝Portiner的方式有很多種,但我一向喜歡使用最簡單的方法來完成所需要做的事情,因此這里我將使用docker的方式來搭建它。
3.1 docker部署
docker部署的方式非常簡單,只需要執(zhí)行簡單的運行容器命令即可,命令如下所示。
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
目錄下,命令執(zhí)行完成之后,返回結(jié)果信息如下圖所示
在上圖中可以看到已經(jīng)成功運行了一個docker容器,接下來我需要驗證服務(wù)是否正常運行,使用瀏覽器訪問URLhttp://127.0.0.1:9000/
地址,結(jié)果如下所示
在上圖中可以看到Portainer系統(tǒng)已經(jīng)能夠訪問, 說明成功系統(tǒng)安裝成功了。
3.2 節(jié)點初始化
現(xiàn)在我需要設(shè)置管理員的賬號密碼,這里我簡單填寫密碼和確認密碼之后,點擊Create user
按鈕即可創(chuàng)建管理員賬戶。
管理員賬戶設(shè)置完成之后,需要進行初始化,如下圖所示
在上圖中有三個選項,我選擇使用Portainer管理本地docker程序,點擊Connect
按鈕,即可完成初始化操作。
3.3 功能初探
完成初始化操作之后,就可以進入Portainer的工作界面,如下圖所示
在上圖找那個可以看到Portainer系統(tǒng)中已經(jīng)有一個local
的本地節(jié)點,我們可以點擊它進入節(jié)點的管理,如下圖所示
在上圖中可以看到Portainer系統(tǒng)列出了local
節(jié)點的 Stack、容器信息、鏡像信息、磁盤信息、網(wǎng)絡(luò)信息等等,這里我隨意點擊Containers
區(qū)塊,就可以看到容器列表,如下圖所示
在上圖中可以看到容器列表中存在兩個容器,以及容器的運行狀態(tài),也可以對這些容器進行控制。
四、管理節(jié)點
現(xiàn)在已經(jīng)對本地docker可以進行控制,但是我并不滿足于此,我需要對其他機器也進行控制。
4.1 開始添加節(jié)點
在Portainer系統(tǒng)中,有一個endpoints
的菜單,在這個菜單當中可以添加多個節(jié)點,如下圖所示
在上圖中可以看到,已經(jīng)有一個local
的節(jié)點,在列表上方有一個Add endpoint
按鈕,點擊按鈕后就可以來到添加節(jié)點的詳情頁,如下圖所示
在上圖中可以看到有5個選項,這里我選擇最簡單的一種方式,使用Docker API
進行控制。
4.2 開放API控制
這種方法需要在節(jié)點的docker啟動程序中添加參數(shù),因此我需要先登錄到節(jié)點服務(wù)器中去,ssh登登錄服務(wù)器的命令如下所示
ssh root@xxx.xxx.xxx.xxx
命令執(zhí)行完畢之后,返回如下圖所示
在上圖中可以看到已經(jīng)進入節(jié)點所在的服務(wù)器,接著需要編輯docker啟動的配置文件,命令如下所示
vim /usr/lib/systemd/system/docker.service
命令執(zhí)行之后,就可以在vim編輯界面修改配置,如下圖所示
將開啟遠程訪問代碼加入到docker的啟動命令行中,代碼如下所示
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
將代碼復制到 /usr/bin/dockerd
程序后面,如下圖所示
保存配置文件之后,需要重啟docker服務(wù),重啟docker的命令如下所示
systemctl daemon-reload && systemctl restart docker
重啟docker之后,一切正常的話就完成了
4.3 驗證端口狀態(tài)
查看docker的配置信息,命令如下所示
docker info
命令執(zhí)行之后,返回的信息如下圖所示
在上圖中可以看到docker給了一個warning的警告提示,告知我開啟遠程訪問會存在安全風險,這里暫時不理會它,不過出現(xiàn)這個提示說明確實是開啟了遠程訪問的功能
另外可以查看通過開放端口,來驗證開啟是否成功,命令如下所示
netstat -ntl
命令執(zhí)行完畢之后,會返回當前主機的端口開放情況,如下圖所示
在上圖中可以看到2375
端口已經(jīng)被開啟成功, 說明節(jié)點本身開啟docker是OK了;
但是Portainer通過ip訪問此節(jié)點的時候,要考慮網(wǎng)絡(luò)中的防火墻是否會屏蔽此端口,這里可以使用nmap
工具來探測節(jié)點的端口是否可以被訪問,現(xiàn)在我回到Portainer系統(tǒng)的命令終端,并使用nmap工具進行探測,命令如下所示
nmap -p 2375 xxx.xxx.xxx.xxx
命令執(zhí)行之后,會返回2375是否處于開啟的情況,執(zhí)行結(jié)果如下圖所示
在上圖中可以看到節(jié)點的2375
端口是開啟的,并且可以進行連接。
4.4 完成添加節(jié)點
接下來回到瀏覽器窗口,如下圖所示
在上圖所示的網(wǎng)頁中,將節(jié)點的IP地址和端口通過URL形式填寫進去,然后點擊Add endpodint
按鈕,即可將節(jié)點增加進去,添加成功會有相應(yīng)的提示,如下圖所示
在上圖中可以看到Portainer系統(tǒng)提示添加節(jié)點已經(jīng)成功,并且節(jié)點列表可以看到此節(jié)點了。
五、部署容器
添加節(jié)點完成之后,我準備在遠程節(jié)點中部署我的容器;
5.1 部署單個容器
回到Portainer主頁,在主頁可以看到剛才添加的節(jié)點信息,如下圖所示
在上圖中選擇剛才添加的節(jié)點,然后進入容器菜單選項,可以看到此節(jié)點的容器列表,,如下圖所示
在上圖所示頁面的列表上方有一個Add container
按鈕,點擊此按鈕后就會調(diào)整到添加容器詳情頁
在上圖所示的頁面中,需要將docker鏡像地址填寫進去,這里我隨意選舉了一個nginx鏡像,并且將主機的8888端口映射到了容器的80端口,提交這些信息之后,Portainer系統(tǒng)會告知你容器運行是否成功,如下圖所示
在上圖中可以看到容器已經(jīng)運行成功,并且跳轉(zhuǎn)到了容器列表中,接下來我們可以訪問此節(jié)點對應(yīng)的8888端口,來驗證服務(wù)是否可用.
打開瀏覽器,然后在地址欄中填入URLhttp://xxx.xxx.xxx.xxx:8888/
,訪問之后返回的結(jié)果如下圖所示
在上圖中可以看到nginx
服務(wù)已經(jīng)成功運行了;
5.2 部署 docker-compose
除了在容器列表頁部署容器之外,Portainer系統(tǒng)還支持使用docker-compose的方式進行部署,在Portainer系統(tǒng)中叫做stacks
,在菜單欄中選擇此項,可以進入docker-compose服務(wù)的列表,如下圖所示
在列表的上方有一個Add stack
按鈕,點擊此按鈕,就可以添加docker-compose
服務(wù),如下圖所示
在上圖所示的頁面中,會要求我填寫docker-compose的信息,這里我準備了一個Redis服務(wù)的docker-compose
的配置,配置代碼如下所示
version: '3.5' services: redis: image: "redis:latest" container_name: redis_test command: redis-server ports: - "16379:16379"
降配置填到頁面的后,進行提交Portainer就會在對應(yīng)節(jié)點部署剛才的docker-compose
服務(wù),如下圖所示
部署成功之后,可以在stacks列表中看到剛才部署的服務(wù),你還可以點擊列表中的服務(wù)名稱,進入詳情頁進行查看和修改,如下圖所示
在上圖中可以看到此服務(wù)具體運行了什么容器,也可以終止或刪除該容器。
本文對Portainer也是一個初探,更加細節(jié)的還需要各位孜孜不倦的進行探索。
到此這篇關(guān)于使用Portainer部署Docker容器的項目實踐的文章就介紹到這了,更多相關(guān)Portainer部署Docker容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
到此這篇關(guān)于使用Portainer部署Docker容器的項目實踐的文章就介紹到這了,更多相關(guān)Portainer部署Docker容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法
這篇文章主要介紹了Docker安裝運行apache2服務(wù)器做圖片服務(wù)器的方法,需要的朋友可以參考下2017-06-06docker-compose統(tǒng)一管理多個容器使用詳解
這篇文章主要為大家介紹了docker-compose統(tǒng)一管理多個容器使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Docker?Kill/Pause/Unpause命令使用與區(qū)別小結(jié)
本文詳細介紹了Docker中的三個重要命令,kill、pause和unpause,這些命令在管理和操作運行中的容器時非常有用,具有一定的參考價值,感興趣的可以了解一下2024-03-03