以普通用戶的角度看待的話,Docker 部署的程序 (容器) 就像更加高級的「綠色版」工具一樣,每款應用運行時都「擁有自己私有的虛擬化環境」,多個容器之間不會互相影響,也不會影響宿主機器,相互隔離,使用起來非常安全方便,優點非常多。
Docker 和虛擬機有什麼區別?
比起傳統的虛擬機 (比如 VMWare、Parallels Desktop 等),在運行應用程序前,還要模擬運行一整套底層的操作系統相比,Docker 則是通過「隔離」的技術來實現環境虛擬化的,實際上用同一個 Linux 內核去跑應用,節省掉模擬操作系統所耗費的巨大資源以及模擬的性能損耗,從而使得應用程序的運行速度和原生安裝幾乎一樣。
Docker 既解決複雜部署和運維的問題,又以輕量虛擬化實現了程序之間的隔離,性能上還沒有任何明顯的損失,等等的好處使得 Docker 成為了當今最主流和最熱門的技術!所以無論是在服務器、NAS 上要安裝什麼軟件,大多數時候都會推薦使用 Docker 進行部署。
Debian / Ubuntu / CentOS 簡單安裝 Docker 教程:
那麼下面,我們就一起來看看,怎麼樣在 Linux 上安裝 Docker 吧!教程以 Debian、Ubuntu 作為例子,其實 CentOS、Fedora 類也基本一樣。大家動動手就能輕鬆搞定 Docker,並用它來部署安裝各種各樣的項目了。
#切換到 Root 賬戶 su root # 建議先升級一下系統 (Ubuntu / Debian 系) apt-get update apt-get upgrade # 如果你是 CentOS、紅帽系列則使用: yum update yum upgrade # 安裝 Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Docker 更換配置國內鏡像:
使用 Docker 構建和部署應用程序時,幾乎都需要下載一些基礎鏡像和依賴庫。但由於國內網絡比較特殊,想要從官方的 Docker Hub 倉庫下載會極其緩慢,甚至會出現連接超時、無法下載等情況。為了解決網絡問題,我們需要配置使用國內的鏡像倉庫,來加快鏡像的下載速度。
創建或修改 /etc/docker/daemon.json 文件
vim /etc/docker/daemon.json
json 文件的內容如下:
{ "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }
在國內其實有多個 Docker 鏡像源可以選擇,比如有:阿里雲鏡像、網易鏡像、DaoCloud 鏡像、ustc、ustc 中科大的鏡像等,大家可以擇優選擇。
修改之後重啟 Docker 服務:
sudo systemctl daemon-reload sudo systemctl restart docker
Docker 常用操作命令:
安裝 Docker 之後,你就可以使用一些命令進行操作了。
下載並運行鏡像:
docker run -d -p 6379:6379 -v /host/dir:/my/test --name nginx nginx:latest # 示例的參數解釋 # -d 表示後台運行容器(守護式運行) # -p 宿主機端口:docker容器端口,將容器端口映射到宿主機上,通過宿主機訪問內部端口 # -v 將宿主機的目錄掛載到容器中去,例子中是將主機的 /host/dir 掛載到容器中的 /my/test # --name 要運行的容器起的名字(--name xxx 與 --name=xxx 是一個意思) # nginx:latest 指定下載的鏡像以及版本
查看所有容器 ID:
docker ps -aq
啟動、停止、殺死、重啟一個容器
docker start Name或者ID docker stop Name或者ID docker kill Name或者ID docker restart name或者ID
進入容器內部,執行任意的命令:
#docker exec :在運行的容器中執行命令 # -d :分離模式: 在後台運行 # -i :即使沒有附加也保持STDIN(標準輸入) 打開,以交互模式運行容器,通常與 -t 同時使用; # -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用; docker exec -it 容器ID /bin/bash
停止所有容器:
docker stop $(docker ps -a -q)
查看所有已下載的鏡像
docker images
刪除指定鏡像
docker rmi
從容器複製文件到宿主機:
docker cp nginx:/web/js/file.js /host/path # docker cp 容器名:容器文件的路徑 宿主機的路徑
從宿主機複製文件到容器:
docker cp /host/path/file.js nginx:/web/js # docker cp 宿主機的文件 容器名:容器里的路徑
Docker 的操作有很多,大家可以查看官方的文檔或找找網上的教程。一些如 群暉 NAS、QNAP 等都會提供類似 Container Station 等圖形界面方便操作。你也可以在 Linux 上部署 Portainer 等 WEB 界面來使用。當然了,如果喜歡,多學習一下 Docker 的命令行操作其實也是不錯的。