如果你購(gòu)買(mǎi)過(guò) VPS 云主機(jī),,那么或多或少,你都可能聽(tīng)說(shuō)過(guò) Docker,。如果你從未聽(tīng)說(shuō)過(guò) Docker,,那么本文可能能夠?yàn)槟汩_(kāi)啟新世界。 利用 Docker,,你能夠非常輕松地部署各類(lèi)服務(wù),,無(wú)論是個(gè)人云盤(pán)(Nextcloud:打造屬于自己的網(wǎng)盤(pán)服務(wù) Docker 版 (附帶視頻)、個(gè)人的 RSS 服務(wù)(利用 Docker 搭建 Tiny Tiny RSS 服務(wù)),、HomeKit 橋接(利用 Docker 搭建 HomeKit 智能家居),,亦或者搭建一個(gè)個(gè)人博客(使用 Docker 部署 Ghost 教程),甚至是做一個(gè)自己的維基百科,、自己的社交軟件,,都能夠輕松地實(shí)現(xiàn)。 是的,,Docker 就好像是 服務(wù)器端的「應(yīng)用商店」,,你能夠通過(guò) Docker,輕松的部署各種屬于個(gè)人,、團(tuán)隊(duì)的服務(wù),。而現(xiàn)如今,無(wú)論是利用各個(gè)平臺(tái)的云主機(jī),,還是樹(shù)莓派,、群暉、威聯(lián)通等這類(lèi)物理的服務(wù)器主機(jī),,甚至是自己廢舊的老電腦,,都能夠很容易的使用上 Docker。 在正式開(kāi)啟前,,本文默認(rèn)讀者了解基本的命令行操作,,以及了解基本的 Linux 相關(guān)知識(shí),如果您還不了解這些,,可以通過(guò) B 站 這個(gè) UP 主的 視頻 有所了解,。 那么開(kāi)啟 Docker 之旅吧! Docker 可以理解為寄存在主機(jī)上的特殊的虛擬機(jī),。它利用特殊的虛擬化技術(shù),,比一般的虛擬化技術(shù)能夠更加高效合理的利用資源,。一臺(tái)主機(jī)上可以創(chuàng)建眾多的容器,這些容器通過(guò)特定的方式與主機(jī)共享硬件資源,,并且訪問(wèn)特定的文件,,使用特定的端口。通過(guò) Docker ,,一臺(tái)主機(jī)能夠運(yùn)行多種不同的服務(wù),。 第一步:安裝或者啟用 Docker 一般來(lái)說(shuō),Docker 會(huì)運(yùn)行在 Linux 服務(wù)器上,,無(wú)論是哪種發(fā)行版本,你都可以非常容易的在搜索引擎中找到其安裝方法,。這里我以 Ubuntu 為例: $ sudo apt update # 先更行一下軟件包緩存$ sudo apt install docker-ce # ce 代表社區(qū)版 接著啟動(dòng) Docker 服務(wù): $ sudo systemctl enable docker$ sudo systemctl start docker 這樣,,你就可以嘗試一下運(yùn)行 docker 命令了: $ sudo docker run hello-world 默認(rèn)情況下,docker 命令需要使用 root 用戶(hù)或者在 docker 組下的用戶(hù)才能使用(docker 命令會(huì)使用 Unix socket 與 Docker 引擎通訊),。也就是說(shuō),,如果不設(shè)置,默認(rèn)情況下,,所有的 docker 命令都需要加 sudo,。一般情況下,你可以創(chuàng)建一個(gè)名為 docker 的用戶(hù)組,,再將當(dāng)前用戶(hù)加入到 docker 組中,,使得操作更為安全。 $ sudo groupadd docker #創(chuàng)建 Docker 組,。$ sudo usermod -aG docker $USER #添加當(dāng)前用戶(hù)到 docker 用戶(hù)組中,,也可將 $USER 替換為你想加入到 docker 組中的用戶(hù)。 第二步:拉取你的第一個(gè) Image 其實(shí)你可以這么理解 Docker,,你可以在一個(gè)名為 Docker Hub 的網(wǎng)站中,,查找 Docker 鏡像(image)。 這個(gè)過(guò)程就好像是在 App Store 中搜索自己需要下載的應(yīng)用一樣,。查找完想要下載的鏡像后,,在終端中輸入: $ docker pull [鏡像名稱(chēng)] 可以拉取鏡像的到本地。是的,,你就下載了這個(gè)應(yīng)用,,只不過(guò)是在服務(wù)端,。當(dāng)然,一般來(lái)說(shuō)這個(gè)過(guò)程會(huì)比較緩慢,,你可以 替換國(guó)內(nèi)源 加速這一過(guò)程,。 第三步:?jiǎn)?dòng)你的服務(wù) 與一般應(yīng)用下載打開(kāi)不同,Docker 的鏡像可以重復(fù)的被打開(kāi)成不同的容器,。你可以簡(jiǎn)單的理解為這是「應(yīng)用雙開(kāi)」,,或者說(shuō)是「應(yīng)用多開(kāi)」。我們使用 docker run 命令來(lái)啟動(dòng)容器,。 這個(gè)啟動(dòng)的過(guò)程可以是一次性的啟動(dòng),,即直接使用 docker run + 一些列參數(shù)的方式啟動(dòng)服務(wù),也可以通過(guò) docker compose 來(lái)編排你的項(xiàng)目,。由于 compose 會(huì)相對(duì)專(zhuān)業(yè),,本文就不做過(guò)多的介紹了,這里只以 docker run 為例作為講解,,以下是常見(jiàn)的參數(shù):
這里簡(jiǎn)單講解一下端口的含義:以用戶(hù)輸入在瀏覽器中輸入 www.sspai.com 為例,,首先瀏覽器會(huì)通過(guò) DNS 服務(wù)器把這個(gè) Url 翻譯為 IP 地址,再通過(guò) IP 地址,,找到少數(shù)派的服務(wù)器,,最后通過(guò)端口號(hào)確定服務(wù),例如如果你輸入的是:https:\\www.sspai.com,,那么對(duì)應(yīng)的端口就是 443,。端口號(hào)就相當(dāng)于服務(wù)器的柜臺(tái),同個(gè)服務(wù)區(qū)會(huì)有多個(gè)柜臺(tái)提供服務(wù),。諸如 http 服務(wù),,默認(rèn)是 80 端口, https (上面的例子)默認(rèn)是 443 端口,,類(lèi)似的 FTP 服務(wù)是 21 等等,。 并且一個(gè)端口只能支持一個(gè)服務(wù),,就是說(shuō)一個(gè)柜臺(tái)只支持辦理一項(xiàng)服務(wù)。 回到 -p 這個(gè)參數(shù),,-p 8080:80 就是指將 docker 中開(kāi)啟的端口,,映射到主機(jī)的 8080 端口中。也就是說(shuō)通過(guò)主機(jī)的 IP 地址的 8080 端口,,可以訪問(wèn)到 docker 容器的 80 端口服務(wù),。 服務(wù)器的 8080 柜臺(tái)接收到的服務(wù),會(huì)發(fā)送到容器的 80 柜臺(tái)中,。是的,,容器也相當(dāng)于是一個(gè)服務(wù)器,在 Docker 內(nèi)部,,他們之間也是有 IP 地址的說(shuō)法的,,所以容器也是需要開(kāi)「柜臺(tái)」來(lái)管理服務(wù)的。 理解這一步非常重要,,和一般的使用應(yīng)用不同,,服務(wù)器上的應(yīng)用就是一直在運(yùn)行,然后讓你去訪問(wèn)的,,所以 -p 參數(shù)設(shè)置不對(duì),可就找不到柜臺(tái)辦理正確的服務(wù)器了,。例如運(yùn)行: $ docker run -d --name=nextcloud_demo -p 8080:80 nextcloud 那么你可以通過(guò) http://localhost:8080 訪問(wèn)到你的 nextcloud 服務(wù),。這里的 loaclhost 指的是在 Docker 服務(wù)器上訪問(wèn)。如果你想通過(guò)自己的電腦,,訪問(wèn) Docker 服務(wù)器上的服務(wù),,把 loaclhost 替換為服務(wù)器的 IP 地址即可。
$ docker run -d\-v nextcloud:/var/www/html\nextcloud 就是將本地本地文件夾 nextcloud 映射到容器中的 /var/www/html 目錄。 這 4 個(gè)參數(shù)就是 docker 最基礎(chǔ)也是最常用的參數(shù)了,。了解了這四個(gè)參數(shù),,再參照 Docker Hub 下每一個(gè)鏡像的使用說(shuō)明,你就可以盡情的擁抱和享受開(kāi)源社區(qū)的各種服務(wù)了,。 推薦一些好用的 Docker 鏡像 除了開(kāi)篇提到的 NextCloud,、Tiny Tiny RSS、Ghost 等服務(wù)外,,還有一些鏡像值得嘗試:
部署一時(shí)爽,運(yùn)維「火葬廠」 Docker 讓服務(wù)的安裝變得異常容易,,但是選擇一項(xiàng)服務(wù)后,,后面的運(yùn)維才是真正折騰人的地方。 首先是管理容器中,,最常使用到: $ docker ps #查看運(yùn)行中的容器,。$ docker ps -a #查看所有容器,包括停止的,。$ docker images #查看安裝的鏡像 然后是停止,、啟動(dòng)已有的容器: $ docker stop <容器名稱(chēng) / ID> # 正常停止容器$ docker start <容器名稱(chēng) / ID> # 啟動(dòng)已有容器$ docker kill <容器名稱(chēng) / ID> # 強(qiáng)制停止容器 一般容器運(yùn)行后,會(huì)有一個(gè) ID,,用以區(qū)分容器,,這個(gè) ID 一般都是亂序的,所以之前的 --name 參數(shù),,能夠使你更加方便對(duì)容器進(jìn)行管理,。 除此之外,還有就是進(jìn)入 Docker 容器中,,修改一些配置文件: $ sudo docker exec -it <容器名稱(chēng) / ID> /bin/bash 就是說(shuō)你可以通過(guò)這個(gè)命令,,進(jìn)入到 容器的 bash 中,對(duì)容器內(nèi)進(jìn)行一些修改,。 尾巴 最后 Docker 還有許多其他的命令和方法可供學(xué)習(xí),。本文只是作為入門(mén),希望為各位讀者提供幫助,,更加輕松,,便捷的使用上這項(xiàng)服務(wù)。 作為當(dāng)今最受歡迎的容器化解決方案,,docker 在業(yè)界發(fā)光發(fā)亮的同時(shí),,也為一般用戶(hù),「一鍵」啟用某些服務(wù)提供了契機(jī),。利用開(kāi)源社區(qū),,你可以比以往任何時(shí)候都更為容易的實(shí)現(xiàn)許多互聯(lián)網(wǎng)服務(wù)的「自給自足」。 |
|
來(lái)自: 泰山勇士 > 《手機(jī)與電腦應(yīng)用》