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

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

docker容器技術(shù):

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

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

