2021-05-12 14:32:11
在 Linux 上安裝和使用 Docker
容器現在風靡於 IT 界 —— 這很好理解。容器是輕量級的,包含應用執行所需所有東西(程式碼、庫、執行時環境、系統設定,以及依賴關係)的獨立的包。每個容器都部署於它自己的 CPU、記憶體、塊 I/O,以及網路資源上,所有這些都不依賴於某個核心和作業系統。這也是容器與虛擬機器之間最大的不同;相比之下,虛擬機器是一個執行於宿主機作業系統上的完整的作業系統平台,而容器不是。
容器允許你以一種前所未有的方式擴充套件交付能力(不管內部還是外部的)。例如,你可以快速部署多個 NGINX 範例(甚至可以應用於多個不同的階段 —— 比如開發和生產階段)。跟虛擬機器不同,容器不會消耗太多系統資源。
Docker 使得建立、部署,和管理容器變得特別簡單。更好的是,安裝和使用 Docker 在 Linux 平台上特別的方便。
我將會向你演示在 Linux 上安裝 Docker 是多麼方便,同時帶你入門 Docker。我的演示平台是 Ubuntu 16.04 Server,但流程在大多數其它 Linux 平台都差不多。
我這裡假設你已經啟動了 Ubuntu Server 16.04。
安裝
由於 Ubuntu Server 16.04 缺少圖形介面,我會完全通過命令列來安裝和使用 Docker。在你安裝前,你需要更新 apt
然後進行必要的升級。一定要注意,若系統核心升級了,你會需要重新啟動系統。因此最好挑個伺服器能重新啟動的時間進行。
執行下面命令更新 apt
:
sudo apt update
完成後,使用命令升級系統:
sudo apt upgrade
若核心升級了,你需要用下面命令重新啟動伺服器:
sudoreboot
若核心沒有升級,你就可以安裝 Docker 了(無需重新啟動)。安裝 Docker 的命令為:
sudo apt install docker.io
若你使用的是其它 Linux 發行版,當嘗試用相應的包管理器來安裝時卻發現沒有 docker.io
包,則你應該安裝 docker
包。例如,在 Fedora 上安裝應該用命令:
sudo dnf install docker
若你使用的是 CentOS 7,那麼最好使用安裝指令碼來安裝 docker。首先使用命令 sudo yum check-update
更新系統。升級完後,輸入下面命令來下載並執行所需的指令碼:
curl -fsSL https://get.docker.com/ | sh
預設情況下,只有管理員許可權能夠執行 docker 命令。考慮到安全問題,你不會想用 root 使用者或使用 sudo
來執行 Docker 的。要解決這個問題,你需要將自己的使用者加入到 docker 組中。命令如下:
sudousermod-a -G docker $USER
完成操作後,登出系統然後再重新登入,應該就搞定了。不過若你的平台是 Fedora,則新增使用者到 docker 組時會發現這個組是不存在的。那該怎麼辦呢?你需要首先建立這個組。命令如下:
sudogroupadd docker &&sudo gpasswd -a ${USER} docker &&sudosystemctl restart docker
newgrp docker
登出後再登入。就可以開始用 Docker 了。
啟動,暫停以及啟用 Docker
安裝好 Docker 後,你可以讓系統在啟動時自動啟動 Docker 守護行程。使用下面兩個命令來實現這一點:
sudosystemctl start docker
sudosystemctl enable docker
若需要暫停或重新啟動 Docker 守護行程,則命令為:
sudosystemctl stop docker
sudosystemctl restart docker
現在可以用 Docker 來部署容器了。
拉取映象
對 Docker 來說,映象是構建容器的基石。你可以拉下一個映象(比如 NGINX)然後根據這個映象部署任意多個容器出來。使用映象前,你首先需要把映象拉取到系統中。映象從註冊倉庫中拉取,預設情況下安裝好的 Docker 包含了一個預設的註冊倉庫 Docker Hub —— 這個註冊倉庫包含了大量別人所貢獻的映象(既包括官方的映象,也包括使用者自己貢獻的映象)。
假設你想要拉取一個 Nginx Web 伺服器相關的映象。在開始拉取前,先檢查一下系統中已經有了哪些映象。輸入 docker images
命令你會發現現在還沒有映象存在(圖 1)。
圖 1:還沒有映象。
讓我們來拉取一個映象。使用下面命令可以從 Docker Hub 中下載 Nginx 映象:
docker pull nginx
上面命令會從 Docker Hub 下載最新的(官方的) Nginx 映象。現在再執行 docker images
命令就能看到有列出映象了(圖 2)。
圖 2:NGINX 映象已經被拉取下來了。
注意到我這裡說的是“官方” Nginx 映象了嗎?在 Docker Hub 上有很多的非官方 Nginx 映象。這些非官方映象都是基於各種不同的目的而建立出來的。你可以使用下面過命令來搜尋 Docker Hub 中的所有 Nginx 映象:
docker search nginx
你會發現(圖 3 中),有很多基於不同目的所建立的 Nginx 映象(反向代理、PHP-FPM(LCTT 譯註:FastCGI 進程管理器FastCGI Process Manager是一個 PHPFastCGI 管理器,旨在將 FastCGI 進程管理整合進 PHP 包中)功能、LetsEncrypt(LCTT 譯註:由 ISRG 提供的免費 SSL 專案),Bitnami,在樹莓派上使用的 Nginx 和 Drupal,等等很多很多)。
圖 3:Docker Hub 上找到的各種 NGINX 映象。
假設,你想要下載內建有反向代理功能的 Nginx 映象,有個非官方的映象 jwilder/nginx-proxy。因此輸入下面命令來拉取這個映象:
docker pull jwilder/nginx-proxy
再輸入 docker images
命令來檢視新拉下來的這個映象(圖 4)。
圖 4:已經有了兩種不同的 NGINX 映象了。
處於謹慎考慮,我建議只使用官方映象,畢竟你無法確定非官方映象是否包含了惡意程式碼。
有了映象後就可以用它來部署容器了。下次我們再聊聊如何通過這些 Nginx 映象來發布容器。
Docker 是一個超級強力的系統可以讓你的工作更簡單,讓你的公司更具有伸縮性,也更靈活。想知道 Docker 還能做什麼,執行 man docker
然後閱讀它的幫助文件吧。
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-02/150949.htm
相關文章