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