Docker 是一個開源的應用容器引擎昌讲,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中国夜,然后發(fā)布到任何流行的 Linux 機器上,也可以實現虛擬化剧蚣。
Docker架構
Docker 使用客戶端-服務器 (C/S) 架構模式支竹,使用遠程API來管理和創(chuàng)建Docker容器旋廷。Docker 容器通過 Docker 鏡
像來創(chuàng)建鸠按。容器與鏡像的關系類似于面向對象編程中的對象與類。Docker采用 C/S架構 Docker daemon 作為服務端接受來自客戶的請求饶碘,并處理這些請求(創(chuàng)建目尖、運行、分發(fā)容器)扎运。 客戶端和服務端既可以運行在一個機器上瑟曲,也可通過 socket 或者RESTful API 來進行通信。
Docker daemon 一般在宿主主機后臺運行豪治,等待接收來自客戶端的消息洞拨。 Docker 客戶端則為用戶提供一系列可執(zhí)行命令,用戶用這些命令實現跟 Docker daemon 交互负拟;
Docker的優(yōu)點
- 1 上手快
用戶只需要幾分鐘烦衣,就可以把自己的程序“Docker 化”。Docker 依賴于“寫時復制” (copy-on-write)模型掩浙,使修改應用程序也非常迅速花吟,可以說達到“隨心所致,代碼即改” 的境界厨姚。
隨后衅澈,就可以創(chuàng)建容器來運行應用程序了。大多數 Docker 容器只需要不到 1 秒中即可 啟動谬墙。由于去除了管理程序的開銷今布,Docker 容器擁有很高的性能,同時同一臺宿主機中也 可以運行更多的容器拭抬,使用戶盡可能的充分利用系統(tǒng)資源险耀。
- 2 職責的邏輯分類
使用 Docker,開發(fā)人員只需要關心容器中運行的應用程序玖喘,而運維人員只需要關心如 何管理容器甩牺。Docker 設計的目的就是要加強開發(fā)人員寫代碼的開發(fā)環(huán)境與應用程序要部署 的生產環(huán)境一致性。從而降低那種“開發(fā)時一切正常累奈,肯定是運維的問題(測試環(huán)境都是正 常的贬派,上線后出了問題就歸結為肯定是運維的問題)”
- 3 快速高效的開發(fā)生命周期
Docker 的目標之一就是縮短代碼從開發(fā)急但、測試到部署、上線運行的周期搞乏,讓你的應用 程序具備可移植性波桩,易于構建,并易于協作请敦。(通俗一點說镐躲,Docker 就像一個盒子,里面 可以裝很多物件侍筛,如果需要這些物件的可以直接將該大盒子拿走萤皂,而不需要從該盒子中一件 件的取。)
- 4 鼓勵使用面向服務的架構
Docker 還鼓勵面向服務的體系結構和微服務架構匣椰。Docker 推薦單個容器只運行一個應 用程序或進程裆熙,這樣就形成了一個分布式的應用程序模型,在這種模型下禽笑,應用程序或者服 務都可以表示為一系列內部互聯的容器入录,從而使分布式部署應用程序,擴展或調試應用程序 都變得非常簡單佳镜,同時也提高了程序的內省性僚稿。(當然,可以在一個容器中運行多個應用程 序)
介紹完了docker蟀伸,接下來開始安裝docker容器
Docker安裝過程(ubuntu18.04環(huán)境)
- 由于apt官方庫里的docker版本可能比較舊蚀同,所以先卸載可能存在的舊版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io```
- 更新ubuntu的apt源索引
sudo apt-get update
- 配置安裝包允許apt通過HTTPS使用倉庫
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
- 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 設置Docker穩(wěn)定版?zhèn)}庫
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 再次更新apt源索引
sudo apt-get update
- 安裝最新版Docker CE(社區(qū)版)
sudo apt-get install docker-ce
- 拉取hello-world鏡像測試docker容器
sudo docker run hello-world
出現如下信息即表示docker安裝成功并且運行正常
最后我們可以這樣設置用戶權限,避免每次輸入命令時都要加上sudo:
sudo usermod -a -G docker $USER
執(zhí)行完上面的命令之后需要注銷賬號重新登錄才能生效
Ps:執(zhí)行了上面的步驟之后我們就可以正常的使用docker了望蜡,當然唤崭,在執(zhí)行第8步測試docker的過程中可能會出現問題
如果在這里報錯(Unable to find image 'hello-world:latest' locally)無法執(zhí)行請參照這篇文章,我在這篇文章詳細介紹了如何解決這個問題:https://blog.csdn.net/wireless911/article/details/88989620