容器讓你以前所未有的方式擴展交付能力(不管內部還是外部的)。例如,你可以快速部署多個 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
若核心升級了,你需要用下面指令重啟伺服器:
sudo reboot
如果核心沒有升級,你就可以安裝 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 守護程式。使用下面兩個命令來實現這一點:
sudo systemctl start docker sudo systemctl enable docker
若需要暫停或重新啟動 Docker 守護進程,則指令為:
sudo systemctl stop docker sudo systemctl 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 然后阅读它的帮助文档吧。
以上是大神教你在 Linux 上安裝並使用 Docker的詳細內容。更多資訊請關注PHP中文網其他相關文章!