Day 2: Docker 基本概念與安裝指南
Day 3: Dockerfile 語法解析與實踐
Day 4: 如何使用 Docker Compose 管理多容器應用程式
Docker 於 2013 年由 Solomon Hykes 和他的團隊在 Dotcloud(後來更名為 Docker Inc.)推出。它基於早期的容器技術,如 LXC(Linux Containers),並簡化了這些技術的使用,使容器化變得更加普及和便捷。Docker 迅速獲得了開發者和企業的青睞,因其能夠提供一致的運行環境,減少了“在我機器上正常工作”的問題。
Docker 容器是基於 Linux 容器技術構建的,其核心概念包括映像檔(Image)、容器(Container)、和 Docker 引擎(Docker Engine)。
映像檔 (Image):Docker 映像檔是一個唯讀模板,其中包含應用程式所需的一切,從代碼到運行環境(如特定版本的操作系統、依賴庫等)。映像檔是靜態的,而容器則是這些映像檔的運行時實例。
容器 (Container):容器是映像檔的運行時實例,它與主機共享操作系統內核,但運行在自己的隔離環境中。這意味著每個容器可以擁有自己的網絡接口、文件系統、和進程空間。容器可以快速啟動和停止,並且資源開銷非常低,因為它們不需要整個操作系統。
Docker 引擎 (Docker Engine):這是 Docker 的核心組件,負責管理容器的創建、運行和監控。Docker 引擎可以在本地伺服器或雲端環境中運行,並通過 Docker 的 API 與外部進行交互。
Docker 還依賴於 Linux 核心的 cgroups 和 namespaces 技術。cgroups 允許 Docker 限制容器的資源使用(如 CPU、內存),而 namespaces 則提供了進程、網絡、和文件系統的隔離。這些技術共同確保了 Docker 容器的高效性與安全性。
這裡採用官方安裝腳本
最新腳本已包含docker-compose指令,不需要再額外安裝!
#下載腳本
curl -fsSL https://get.docker.com -o get-docker.sh
#執行腳本
sudo sh get-docker.sh
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo usermod -aG docker $USER
newgrp docker
#開啟編輯器
sudo nano /etc/docker/daemon.json
貼入以下內容
{
#如果有自架的映像檔倉庫則需加入白名單
"insecure-registries":["192.168.10.1:80","192.168.10.2:80"],
#配置系統日誌格式及最大保存
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "2"}
}
關於映像檔倉庫(image server)在下一篇會說明
預設是Docker hub,註冊即可用
若有自架例如:harbor,則需要將harbor的host ip/domain加入白名單
sudo systemctl restart docker
sudo systemctl status docker
sudo docker run --rm hello-world
docker ps
參考資源:
Docker官網