如何優雅地食用docker教程—一文解決docker部署

什麼值得買 發佈 2024-05-09T04:48:15.751160+00:00

俗話說「授人以魚,不如授之以漁」,真正學會部署docker之後就可以不需要照搬教程的docker部署命令,個性化地部署適合自己的docker容器。

本內容來源於@什麼值得買APP,觀點僅代表作者本人 |作者:冥冰薇


一、引言

本系列首篇不會有具體的docker容器部署,本文旨在教會大家部署docker的幾種方法,了解常用的docker命令,有各類nas系統都可以用的方法,也有對某種nas系統針對性教程。俗話說"授人以魚,不如授之以漁",真正學會部署docker之後就可以不需要照搬教程的docker部署命令,個性化地部署適合自己的docker容器。遇到比較有趣的docker容器也不需要全網翻找教程,讀懂docker hub或者GitHub上作者的部署命令,你也可以的!

本系列之後的內容將會是一些實用的docker容器部署,一般會覆蓋本文提到的各類nas系統的部署教程。因為本期已經把docker容器部署將的足夠明白,因此之後的文章只會列出每個容器所需要的參數,文章的主要部分會側重於容器的實際應用。當然也歡迎值友在評論區補充自己用過的實用docker容器,我也會視情況添加到這個系列教程中。

二、關於docker

2.1 什麼是docker

簡單來說,docker是一種虛擬化技術,屬於作業系統層面的虛擬化。它由dotCloud公司開發,並於2013年3月開源。docker在開源後,引起了異常火爆的關注度,也吸引力大批的開發者和使用者,這其中就不乏我們這類普通用戶。而docker容器環境也成了現在nas系統出廠必備的選項之一,部分路由器也開始引入docker環境來製造差異化,從而吸引用戶購買。

2.2 為什麼是docker

不同於傳統虛擬化技術,docker不需要虛擬出一套完整的硬體,也不需要在其上再安裝作業系統,這意味著部署docker極大地節約了系統資源。最直觀的表現方式就是,我們可以看到,同樣是虛擬化技術,如果你在群暉DS920+上面部署虛擬機,大概你最多能部署兩三個,但是docker你可以部署好多。

其次,docker啟動鏡像的速度要遠遠快於虛擬機啟動,因為docker是直接基於宿主系統內核運行的,因此無需等待開啟作業系統的時間,即可進入docker容器。

docker運行環境示意

最後,虛擬化技術給予了docker標準化的運行環境,因此docker可以在各個支持docker的系統裡面輕鬆遷移;與此相反的是,你很難把ESXI上部署的虛擬機直接遷移到PVE上。

三、通用型部署——ssh命令行部署兼docker命令解析

先來看一段portainer-ce中文版部署的命令

docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce

docker run代表新建並啟動一個容器;

-d參數代表使docker容器在後台運行,並會對容器生成一個唯一id,基本為固定參數,部署的時候加上就行;

--restart=always對應容器自動重新啟動,作用是使你在開啟nas後,docker程序自動運行;

--name="portainer"代表將該容器命名為「portainer」,這一步就可以自定義了;

-p 9000:9000代表把本地所有地址的9000埠映射到容器9000埠,冒號前的9000可以修改成任意本地不衝突的埠號,冒號之後的埠號一般為容器固定的埠號,不能修改。

拓展:1.映射所有地址的9000埠意味著你從nas任意一個IP位址+9000埠號都可以訪問到該地址;

2.如果要映射指定地址(以localhost為例),參數為-p 127.0.0.1:9000:9000

3.如果需要指定udp埠,參數為-p 127.0.0.1:9000:9000/udp

-v 代表掛載主機的一個文件夾或者文件到docker容器裡面;

如果還要額外加入特定參數,需要使用-e命令,比如為reader添加管理員密碼,可以使用命令

-e "READER_APP_SECUREKEY=管理密碼"

6053537/portainer-ce代表指定鏡像名,通常其後還可以加參數。如果加:latest代表拉取最新版本,:x.x代表拉取特定版本的鏡像。

總結來說,docker容器部署分為幾部分,開頭docker run -d為新建並啟動容器,然後為容器取一個名字,再使用-p命令使得可以從外部訪問容器,-v命令為容器添加存儲,-e命令可以為容器添加額外參數,然後最重要的一點就是最後必須指定新建的這個容器對應那個特定的鏡像。

四、實操

3.1 通用型部署——Portainer部署

註:本篇為簡易部署教程,不含Portainer初始化教程,之後會出初始化教程和進階教程。

第一步,點擊創建容器(仍然以Portainer為例);

創建容器頁面

第二步:映射存儲,對應-v命令;

映射存儲

第三步:添加環境變量,對應-e命令;

添加環境變量

第四步:添加重啟策略,選擇總是重啟,對應--restart=always

設置重啟策略

這樣部署portainer需要的所有容器命令都已經設置完成;

第五步:點擊部署即可。

部署容器

3.2 群暉圖形界面部署(DSM7.1)


第一步:先在群暉套件中心安裝docker套件,安裝過程中會自動創建docker共享文件夾;

安裝docker套件

第二步:點擊註冊表,在搜索框輸入想要安裝的docker容器的關鍵詞(以reader部署為例),並右鍵點擊下載此映像;

搜索註冊表

第三步:選擇下載映像的版本號,無特殊需求一般選擇latest;

確認版本號

第四步:打開映像,選中要安裝的docker鏡像,點擊啟動;

群暉啟動映像

第五步:默認使用bridge(橋接)網絡;

默認使用橋接網絡

第六步:常規設置中啟用自動重新啟動對應命令--restart=always;

啟用自動重新啟動

第七步:高級設置,環境選項對應-e命令;

群暉新增環境變量

第九步:埠設置對應-p命令;

群暉映射埠號

第十步:存儲空間設置對應-v命令;

群暉映射文件夾

第十一步:點擊完成即完成創建容器的過程;

註:群暉計劃任務部署docker方式詳見「每天一個群暉小tip」系列第十二篇。

3.3威聯通圖形界面部署


第一步:先在App Store安裝container;

威聯通安裝container

第二步,點擊開始,系統會自動創建container共享文件夾;

點擊開始

第三步,點擊創建並拉取鏡像(威聯通圖形界面不支持映射單個文件,因此以reader部署為例);

點擊安裝

第四步:選擇鏡像版本號;

選擇鏡像版本號

第五步,容器基礎設置;

容器基礎設置

第六步,高級設置;

添加環境變量

添加埠映射

添加存儲映射

第七步,點擊創建即可。

四、總結

全網各機型docker部署教程已經很多了,但大部分是特定的容器部署教程,博主會告訴你命令是什麼,照抄就行。但很多情況下,容器部署是需要根據自己需求設置一些特殊環境變量、文件映射等等,本文的目的就是講清楚docker部署命令和圖形化界面一一對應的關係。學會了這些,你完全可以拋開所有教程,直接訪問作者的docker hub網頁或者GitHub主頁,作者一般都會詳細描述容器所需要的各類參數,這時候你就可以利用這些信息獨立部署容器,並且可以靈活選用命令行部署或者圖形化界面部署。

這就是本期的全部內容了,如果這篇文章對您有幫助的話,歡迎您在評論區多多討論,也歡迎關注、點讚、打賞一鍵三連,您的支持對我非常重要。

我是冥冰薇,我們下期再見,關注我不迷路哦。

點個關注再走吧

作者聲明本文無利益相關,歡迎值友理性交流,和諧討論~



關鍵字: