Docker概述與安裝方法
一、 Docker概述
Docker簡介

Docker,翻譯過來就是碼頭工人
Docker是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可抑制的容器中,然后發(fā)布到任何流行的Linux機器上,也可以實現(xiàn)虛擬化。容器完全使用沙盒機制,相互之間不會存在任何接口。幾乎沒有性能開銷,可以很容易的在機器和數據中心運行。最重要的是,他們不依賴于任何語言、框架或者包裝系統(tǒng)。
Docker是dotCloud公司開源的一個基于LXC的高級容器引擎,源碼托管在Github上,基于go語言并且遵從Apache2.0協(xié)議開源。 GitHub地址:https://github.com/moby/moby
LXC主要通過Kernel的namespace實現(xiàn)每個用戶實例之間的項目隔離,通過cgroup實現(xiàn)對資源的配額和調度。
名詞解釋
沙盒:沙盒也叫沙箱(sandbox)。在計算機領域指一種虛擬技術,而且多用于計算機安全技術。安全軟件可以讓它在沙盒中運行,如果含有惡意行為,則禁止程序的進一步運行,而這不會對系統(tǒng)造成任何危害。
LXC:Linux Container的簡寫。Linux Container 容器是一種內核虛擬化技術,可以提供輕量級的虛擬化,以便隔離進程和資源,而且不需要提供指令解釋機制以及全虛擬化的其他復雜性。
cgroup:控制組,Control Groups,是一種內核功能,用于限制、統(tǒng)計和隔離一個進程組(process groups)所使用的物理資源,如CPU、內存、磁盤輸入輸出等。從2.6.24內核引入,它將進程管理從cpuset中剝離出來,并非全新創(chuàng)造的。cgroup提供了一個虛擬文件系統(tǒng),作為分組管理和各子系統(tǒng)設置的接口。因此,使用cgroup時,必須掛載cgroup文件系統(tǒng)。
cgroup的主要目的是實現(xiàn)資源限制和進程管理。通過將進程分組,可以對各個組內的進程進行資源限制,例如CPU、內存和磁盤輸入輸出等。這有助于確保系統(tǒng)資源得到合理分配,同時也可以避免單個進程過度消耗資源,導致系統(tǒng)性能下降。
docker官網: https://www.docker.com
docker中文庫: https://www.docker.org.cn/
Docker版本演化與技術特征更新
1、Docker發(fā)展歷程概述
Docker自2013年誕生以來,經歷了從簡單的容器工具到完整的容器生態(tài)系統(tǒng)的演變過程。其版本演化可以分為四個主要階段:
1. 初創(chuàng)期(2013-2014)
- 2013年3月:Docker 0.1.0發(fā)布,基于LXC技術
- 2014年6月:Docker 1.0發(fā)布,標志著生產就緒
2. 成長期(2015-2016)
- 引入Swarm集群管理
- 建立開放容器倡議(OCI)標準
3. 成熟期(2017-2019)
- 采用新的版本命名方案(YY.MM)
- 分化為CE(社區(qū)版)和EE(企業(yè)版)
4. 現(xiàn)代期(2020至今)
- 深度集成Kubernetes
- 專注于開發(fā)者體驗和安全增強
2、重大版本技術特征更新
Docker 1.0 (2014年6月)
- 核心技術:從LXC轉向libcontainer
- 鏡像格式:建立分層存儲體系
- 網絡模型:基礎橋接網絡支持
Docker 1.12 (2016年7月)
- Swarm模式:內置容器編排功能
- 服務發(fā)現(xiàn):內置DNS服務
- 安全增強:TLS加密通信
Docker 17.03 (2017年3月)
- 版本改革:采用YY.MM版本號
- 多架構支持:ARM平臺正式支持
- 插件系統(tǒng):卷和網絡插件標準化
Docker 18.09 (2018年11月)
- BuildKit:實驗性下一代構建引擎
- Rootless模式:非root用戶運行容器
- cgroups v2:初步支持新控制組系統(tǒng)
Docker 19.03 (2019年7月)
- GPU支持:NVIDIA GPU容器化
- 性能優(yōu)化:containerd集成改進
- Windows容器:完善WSL2支持
Docker 20.10 (2020年12月)
- BuildKit默認:取代經典構建引擎
- Compose V2:重寫為Go版本
- 檢查點/恢復:實驗性容器狀態(tài)保存
Docker 23.0 (2023年1月)
- 構建革新:完全移除經典構建引擎
- 鏡像管理:改進垃圾回收機制
- 安全掃描:內置漏洞掃描工具
3、關鍵技術演進路線
1. 容器運行時演進
- libcontainer → runc → containerd
- 符合OCI運行時規(guī)范
- gVisor、Kata Containers等安全容器支持
2. 構建系統(tǒng)革新
- 傳統(tǒng)構建 → BuildKit
- 多階段構建支持
- 構建緩存優(yōu)化和并行構建
3. 網絡模型發(fā)展
- 基礎橋接網絡 → overlay網絡
- Macvlan/IPvlan支持
- 服務網格集成能力
4. 存儲驅動優(yōu)化
- AUFS → overlay2
- 快照和存儲配額管理
- 卷插件生態(tài)系統(tǒng)
5. 安全增強路徑
- 用戶命名空間隔離
- Rootless容器模式
- 內容信任和鏡像簽名
4、當前技術趨勢
- 云原生集成:與Kubernetes深度整合
- 開發(fā)者體驗:簡化本地開發(fā)工作流
- 安全強化:默認安全配置和策略
- 性能優(yōu)化:資源利用率和啟動速度
- 多平臺支持:ARM、RISC-V等架構
Docker容器技術與虛擬機的區(qū)別
相同點:docker容器技術和虛擬機技術,都是虛擬化技術。
不同點:
虛擬機技術:

docker容器技術:

通過圖片,我們很明顯的看到docker有著比虛擬機更少的抽象層。 由于docker不需要Hypervisor實現(xiàn)硬件資源虛擬化,運行在docker容器上的程序直接使用的都是實際物理機的硬件資源。所以docker效率比虛擬機效率高。達到了秒級啟動的地步。
Docker相較于VM的優(yōu)點
- 比VM小、快,Docker容器的尺寸減小相比于整個虛擬機大大簡化了分布到云和分發(fā)時間的開銷。Docker啟動一個容器實例時間僅僅需要幾秒鐘。
- Docker是一個開放的平臺,構建、發(fā)布和運行分布式應用程序。
- 開發(fā)人員不需要關注具體是哪個Linux操作系統(tǒng)。
- Google、微軟(azure)、亞馬遜(AWS)、IBM等都支持docker。
- Docker支持Unix/Linux操作系統(tǒng),也支持Windows和Mac。
- 一次封裝,到處運行
Docker局限性
Docker用于應用程序時是最有用的,但并不包含數據。日志、數據庫等通常放在Docker容器外。一個容器的鏡像通常都很小,不用存儲大量數據,存儲可以通過外部掛載等方式使用,比如:NFS、ipsan、MFS、ceph等 ,或者docker -v 命令進行映射磁盤。 總之,docker只用于計算,存儲交給別人。
Docker通常用于如下場景
- web應用的自動化打包和發(fā)布;
- 自動化測試和持續(xù)集成、發(fā)布;
- 在服務型環(huán)境中部署和調整數據庫或其他的后臺應用;
- 從頭編譯或者擴展現(xiàn)有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環(huán)境。
二、 Docker 架構
Docker 包括三個基本概念
- 鏡像(Image):Docker 鏡像(Image),就相當于是一個 root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。
- 容器(Container):鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。
- 倉庫(Repository):倉庫可看成一個代碼控制中心,用來保存鏡像。
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創(chuàng)建Docker容器。
Docker 容器通過 Docker 鏡像來創(chuàng)建。

| 概念 | 說明 |
|---|---|
| Docker 鏡像(Images) | Docker 鏡像是用于創(chuàng)建 Docker 容器的模板,比如 CentOS 系統(tǒng)。 |
| Docker 容器(Container) | 容器是獨立運行的一個或一組應用,是鏡像運行時的實體。 |
| Docker 客戶端(Client) | Docker 客戶端通過命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 與 Docker 的守護進程通信。 |
| Docker 主機(Host) | 一個物理或者虛擬的機器用于執(zhí)行 Docker 守護進程和容器。 |
| Docker Registry | Docker 倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。 |
| Docker Machine | Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
三、 Docker安裝
1、使用官方安裝腳本自動安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2、手動安裝
#rocky8 安裝 yum remove runc -y yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce
3、啟動 Docker
[root@localhost ~]# systemctl start docker ##通過運行 hello-world 鏡像來驗證是否正確安裝了 Docker Engine-Community 。 [root@localhost ~]# docker run hello-world
4、卸載 Docker
##刪除安裝包 [root@localhost ~]# yum remove docker-ce ##刪除鏡像、容器、配置文件等內容 [root@localhost ~]# rm -rf /var/lib/docker
四、 Docker 鏡像加速
國內從 DockerHub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。Docker 官方和國內很多云服務商都提供了國內加速器服務,
##編輯配置文件
[root@localhost ~]#
cat <<EOF >>/etc/docker/daemon.json
{
? ?"registry-mirrors": [
? ? ? ?"https://0vmzj3q6.mirror.aliyuncs.com",
? ? ? ?"https://docker.m.daocloud.io",
? ? ? ?"https://mirror.baidubce.com",
? ? ? ?"https://dockerproxy.com",
? ? ? ?"https://mirror.iscas.ac.cn",
? ? ? ?"https://huecker.io",
? ? ? ?"https://dockerhub.timeweb.cloud",
? ? ? ?"https://noohub.ru",
? ? ? ?"https://vlgh0kqj.mirror.aliyuncs.com"
? ]
}
EOF
?
##重新啟動服務
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker五、/etc/docker/daemon.json 配置文件
核心配置字段
data-root- 指定 Docker 數據存儲路徑(替代舊的
graph選項) - 示例:
"/mnt/docker-data"
- 指定 Docker 數據存儲路徑(替代舊的
exec-opts- 運行時選項(如 cgroup 驅動)
- 示例:
["native.cgroupdriver=systemd"]
log-driver- 默認容器日志驅動(如
json-file,syslog,journald) - 示例:
"json-file"
- 默認容器日志驅動(如
log-opts- 日志驅動的配置選項
- 示例:
{"max-size": "10m", "max-file": "3"}
網絡配置
bip- 指定網橋 IP 地址(如
"192.168.1.1/24") default-address-pools- 自定義默認 IP 地址池
- 指定網橋 IP 地址(如
- 示例:
[{"base": "10.10.0.0/16", "size": 24}] dns- 自定義 DNS 服務器
- 示例:
["8.8.8.8", "1.1.1.1"]
mtu- 容器網絡 MTU 值
安全配置
tlsverify- 啟用 TLS 驗證(
true/false)
- 啟用 TLS 驗證(
tlscacert- CA 證書路徑(如
"/etc/docker/ca.pem")
- CA 證書路徑(如
userns-remap- 啟用用戶命名空間隔離
- 示例:
"default"
鏡像與存儲
storage-driver- 存儲驅動(如
overlay2,btrfs)
- 存儲驅動(如
registry-mirrors- 鏡像加速器地址
- 示例:
["https://mirror.aliyuncs.com"]
insecure-registries- 允許非 HTTPS 私有倉庫
- 示例:
["myregistry.local:5000"]
性能與資源
max-concurrent-downloads- 鏡像下載并發(fā)數(默認
3)
- 鏡像下載并發(fā)數(默認
live-restore- 守護進程崩潰時保持容器運行(
true/false)
- 守護進程崩潰時保持容器運行(
實驗性功能
features- 啟用實驗性功能
- 示例:
{"buildkit": true}
完整示例
{
?"data-root": "/var/lib/docker",
?"exec-opts": ["native.cgroupdriver=systemd"],
?"log-driver": "json-file",
?"log-opts": {
? ?"max-size": "10m",
? ?"max-file": "3"
},
?"registry-mirrors": ["https://registry.example.com"],
?"insecure-registries": ["myregistry.local:5000"],
?"live-restore": true,
?"features": {
? ?"buildkit": true
}
}注意事項
- 修改后需重啟 Docker 服務:
sudo systemctl restart docker - 字段名稱嚴格區(qū)分大小寫
- 可通過
docker info驗證配置是否生效
如果需要針對特定場景的配置建議,請?zhí)峁└嘈枨蠹毠?jié)。
到此這篇關于Docker概述與安裝方法的文章就介紹到這了,更多相關Docker概述與安裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Ubuntu20.04上安裝docker步驟及docker使用方法
Docker是一個可以簡化容器中應用程序進程管理過程的應用程序,容器允許你在資源隔離的進程中運行應用程序,這篇文章主要介紹了Ubuntu20.04上安裝docker步驟及docker使用的相關資料,需要的朋友可以參考下2026-04-04
Docker從零構建php-nginx-alpine鏡像的方法
這篇文章主要介紹了Docker從零構建php-nginx-alpine鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
使用Docker compose編排Laravel應用的方法
本篇文章主要介紹了使用Docker compose編排Laravel應用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07

