Linux上如何安裝和使用Docker
- 來源:縱橫數(shù)據(jù)
- 作者:中橫科技
- 時(shí)間:2018/3/13 9:56:17
- 類別:新聞資訊
Docker 使得創(chuàng)建、部署,和管理容器變得特別簡單。更好的是,安裝和使用 Docker 在 Linux 平臺上特別的方便。
我將會(huì)向你演示在 Linux 上安裝 Docker 是多么方便,同時(shí)帶你入門 Docker。我的演示平臺是 Ubuntu 16.04 Server,但流程在大多數(shù)其它 Linux 平臺都差不多。
我這里假設(shè)你已經(jīng)啟動(dòng)了 Ubuntu Server 16.04。
安裝
由于 Ubuntu Server 16.04 缺少圖形界面,我會(huì)完全通過命令行來安裝和使用 Docker。在你安裝前,你需要更新 apt 然后進(jìn)行必要的升級。一定要注意,若系統(tǒng)內(nèi)核升級了,你會(huì)需要重啟系統(tǒng)。因此最好挑個(gè)服務(wù)器能重啟的時(shí)間進(jìn)行。
運(yùn)行下面命令更新 apt:
1 | sudo apt update |
完成后,使用命令升級系統(tǒng):
1 | sudo apt upgrade |
若內(nèi)核升級了,你需要用下面命令重啟服務(wù)器:
1 | sudo reboot |
若內(nèi)核沒有升級,你就可以安裝 Docker 了(無需重啟)。安裝 Docker 的命令為:
1 | sudo apt install docker.io |
若你使用的是其它 Linux 發(fā)行版,當(dāng)嘗試用相應(yīng)的包管理器來安裝時(shí)卻發(fā)現(xiàn)沒有 docker.io 包,則你應(yīng)該安裝 docker 包。例如,在 Fedora 上安裝應(yīng)該用命令:
1 | sudo dnf install docker |
若你使用的是 CentOS 7,那么最好使用安裝腳本來安裝 docker。首先使用命令 sudo yum check-update 更新系統(tǒng)。升級完后,輸入下面命令來下載并運(yùn)行所需的腳本:
1 | curl -fsSL <a rel= "nofollow" href= "https://get.docker.com/" target= "_blank" >https: //get .docker.com/< /a > | sh |
默認(rèn)情況下,只有管理員權(quán)限能夠運(yùn)行 docker 命令?紤]到安全問題,你不會(huì)想用 root 用戶或使用 sudo 來運(yùn)行 Docker 的。要解決這個(gè)問題,你需要將自己的用戶加入到 docker 組中。命令如下:
1 | sudo usermod -a -G docker $USER |
完成操作后,登出系統(tǒng)然后再重新登錄,應(yīng)該就搞定了。不過若你的平臺是 Fedora,則添加用戶到 docker 組時(shí)會(huì)發(fā)現(xiàn)這個(gè)組是不存在的。那該怎么辦呢?你需要首先創(chuàng)建這個(gè)組。命令如下:
1 2 | sudo groupadd docker && sudo gpasswd -a ${USER} docker && sudo systemctl restart docker newgrp docker |
登出后再登錄。就可以開始用 Docker 了。
啟動(dòng),暫停以及啟用 Docker
安裝好 Docker 后,你可以讓系統(tǒng)在啟動(dòng)時(shí)自動(dòng)啟動(dòng) Docker 守護(hù)進(jìn)程。使用下面兩個(gè)命令來實(shí)現(xiàn)這一點(diǎn):
1 2 | sudo systemctl start docker sudo systemctl enable docker |
若需要暫;蛑貑 Docker 守護(hù)進(jìn)程,則命令為:
1 2 | sudo systemctl stop docker sudo systemctl restart docker |
現(xiàn)在可以用 Docker 來部署容器了。
拉取鏡像
對 Docker 來說,鏡像是構(gòu)建容器的基石。你可以拉下一個(gè)鏡像(比如 NGINX)然后根據(jù)這個(gè)鏡像部署任意多個(gè)容器出來。使用鏡像前,你首先需要把鏡像拉取到系統(tǒng)中。鏡像從注冊倉庫中拉取,默認(rèn)情況下安裝好的 Docker 包含了一個(gè)默認(rèn)的注冊倉庫 Docker Hub —— 這個(gè)注冊倉庫包含了大量別人所貢獻(xiàn)的鏡像(既包括官方的鏡像,也包括用戶自己貢獻(xiàn)的鏡像)。
假設(shè)你想要拉取一個(gè) Nginx Web 服務(wù)器相關(guān)的鏡像。在開始拉取前,先檢查一下系統(tǒng)中已經(jīng)有了哪些鏡像。輸入 docker images 命令你會(huì)發(fā)現(xiàn)現(xiàn)在還沒有鏡像存在。
讓我們來拉取一個(gè)鏡像。使用下面命令可以從 Docker Hub 中下載 Nginx 鏡像:1 | docker pull nginx |
上面命令會(huì)從 Docker Hub 下載最新的(官方的) Nginx 鏡像,F(xiàn)在再運(yùn)行 docker images 命令就能看到有列出鏡像了。
注意到我這里說的是“官方” Nginx 鏡像了嗎?在 Docker Hub 上有很多的非官方 Nginx 鏡像。這些非官方鏡像都是基于各種不同的目的而創(chuàng)建出來的。你可以使用下面過命令來搜索 Docker Hub 中的所有 Nginx 鏡像:1 | docker search nginx |
你會(huì)發(fā)現(xiàn)(圖 3 中),有很多基于不同目的所創(chuàng)建的 Nginx 鏡像(反向代理、PHP-FPM(LCTT 譯注:FastCGI 進(jìn)程管理器FastCGI Process Manager是一個(gè) PHPFastCGI 管理器,旨在將 FastCGI 進(jìn)程管理整合進(jìn) PHP 包中)功能、LetsEncrypt(LCTT 譯注:由 ISRG 提供的免費(fèi) SSL 項(xiàng)目),Bitnami,在樹莓派上使用的 Nginx 和 Drupal,等等很多很多)。
假設(shè),你想要下載內(nèi)建有反向代理功能的 Nginx 鏡像,有個(gè)非官方的鏡像 jwilder/nginx-proxy。因此輸入下面命令來拉取這個(gè)鏡像:1 | docker pull jwilder /nginx-proxy |
再輸入 docker images 命令來查看新拉下來的這個(gè)鏡像。
處于謹(jǐn)慎考慮,我建議只使用官方鏡像,畢竟你無法確定非官方鏡像是否包含了惡意代碼。
有了鏡像后就可以用它來部署容器了。下次我們再聊聊如何通過這些 Nginx 鏡像來發(fā)布容器。
Docker 是一個(gè)超級強(qiáng)力的系統(tǒng)可以讓你的工作更簡單,讓你的公司更具有伸縮性,也更靈活。想知道 Docker 還能做什么,運(yùn)行 man docker 然后閱讀它的幫助文檔吧。