本文以 CentOS7.8 為例安裝 Docker 26.1.4 、Docker Compose、以及 Docker 鏡像倉庫。
安裝方式1:自動安裝(使用官方腳本)
使用官網一鍵安裝命令:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或
使用國內 daocloud 一鍵安裝命令:
curl -sSL https://get.daocloud.io/docker | sh
安裝方式2:手動安裝步驟如下
1.安裝Docker社區版
1.1 安裝準備
1.1.1 檢查系統環境
Docker 不支持32位的 CentOS 7 系統,要求系統內核版本為3.10 以上,可以通過命令?uname -r
?來查看當前系統的內核版本。
[root@Docker?~]#?uname?-r
3.10.0-1127.el7.x86_64
[root@Docker?~]#?
1.1.2卸載舊版本的Docker
如果系統中已經安裝了舊版本的Docker,建議卸載后再安裝新版本。可以使用命令yum remove
來卸載舊版本的Docker及其相關組件。
yum?remove?docker?\docker-client?\docker-client-latest?\docker-common?\docker-latest?\docker-latest-logrotate?\docker-logrotate?\docker-selinux?\docker-engine-selinux?\docker-engine?\docker-ce
1.1.3更新yum源
這里更新為阿里云 yum 源,更新之前先做備份:
[root@Docker?~]#?mv?/etc/yum.repos.d/CentOS-Base.repo?/etc/yum.repos.d/CentOS-Base.repo.backup
[root@Docker?~]#?
然后,下載新的 CentOS-Base.repo 到 /etc/yum.repos.d/:
wget?-O?/etc/yum.repos.d/CentOS-Base.repo?https://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker?~]#?wget?-O?/etc/yum.repos.d/CentOS-Base.repo?https://mirrors.aliyun.com/repo/Centos-7.repo
--2024-12-19?09:59:12--??https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主機?mirrors.aliyun.com?(mirrors.aliyun.com)...?124.236.28.176,?124.236.28.180,?124.238.244.131,?...
正在連接 mirrors.aliyun.com (mirrors.aliyun.com)|124.236.28.176|:443... 已連接。
已發出?HTTP?請求,正在等待回應...?200?OK
長度:2523 (2.5K)?[application/octet-stream]
正在保存至:?“/etc/yum.repos.d/CentOS-Base.repo”100%[=======================================================================================================================================================================>]?2,523???????--.-K/s?用時?0s??????2024-12-19?09:59:17?(115?MB/s)?-?已保存?“/etc/yum.repos.d/CentOS-Base.repo”?[2523/2523])[root@Docker?~]#?
最后,運行 yum makecache 生成緩存:
[root@Docker?~]#?yum?makecache
1.2安裝Docker
1.2.1安裝依賴包
Docker 的安裝需要一些依賴包,包括 yum-utils、device-mapper-persistent-data 和 lvm2 等。可以使用命令yum install -y yum-utils device-mapper-persistent-data lvm2
來安裝這些依賴包。
yum?install?-y?yum-utils?\device-mapper-persistent-data?\lvm2?--skip-broken
1.2.2 配置Docker的yum源
為了安裝 Docker,需要配置 Docker 的 yum 源。可以使用命令yum-config-manager --add-repo
來添加Docker
的官方源或國內鏡像源(如阿里云鏡像源)。添加后,使用命令yum makecache fast
來更新 yum 緩存。
[root@Docker?~]#?yum-config-manager?--add-repo?https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加載插件:fastestmirror, langpacks
adding?repo?from:?https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing?file?https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo?to?/etc/yum.repos.d/docker-ce.repo
repo?saved?to?/etc/yum.repos.d/docker-ce.repo
[root@Docker?~]#?
查看內容:
[root@Docker?~]#?cat?/etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker?CE?Stable?-?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-debuginfo]
name=Docker?CE?Stable?-?Debuginfo?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-source]
name=Docker?CE?Stable?-?Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test]
name=Docker?CE?Test?-?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-debuginfo]
name=Docker?CE?Test?-?Debuginfo?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-source]
name=Docker?CE?Test?-?Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly]
name=Docker?CE?Nightly?-?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly-debuginfo]
name=Docker?CE?Nightly?-?Debuginfo?$basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly-source]
name=Docker?CE?Nightly?-?Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[root@Docker?~]#?
然后更新 yum 緩存:
[root@Docker?~]#?yum?makecache?fast
1.2.3安裝Docker社區版
輸入?yum install -y docker-ce
?命令開始安裝:
[root@Docker?~]#?yum?install?-y?docker-ce
已加載插件:fastestmirror, langpacks
Loading?mirror?speeds?from?cached?hostfile*?base:?mirrors.aliyun.com*?extras:?mirrors.aliyun.com*?updates:?mirrors.aliyun.com
正在解決依賴關系
-->?正在檢查事務
--->?軟件包?docker-ce.x86_64.3.26.1.4-1.el7?將被?安裝
-->?正在處理依賴關系?container-selinux?>=?2:2.74,它被軟件包?3:docker-ce-26.1.4-1.el7.x86_64?需要
……
已安裝:docker-ce.x86_64?3:26.1.4-1.el7????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????作為依賴被安裝:container-selinux.noarch?2:2.119.2-1.911c772.el7_8?????????containerd.io.x86_64?0:1.6.33-3.1.el7???????????????docker-buildx-plugin.x86_64?0:0.14.1-1.el7?????????docker-ce-cli.x86_64?1:26.1.4-1.el7????????docker-ce-rootless-extras.x86_64?0:26.1.4-1.el7????????????docker-compose-plugin.x86_64?0:2.27.1-1.el7?????????fuse-overlayfs.x86_64?0:0.7.2-6.el7_8??????????????fuse3-libs.x86_64?0:3.6.1-4.el7????????????slirp4netns.x86_64?0:0.4.3-4.el7_8????????????????????????完畢!
[root@Docker?~]#?
安裝過程截圖如下:
1.3啟動Docker
先關閉并禁用防火墻隨機啟動:
[root@Docker?~]#?systemctl?stop?firewalld
[root@Docker?~]#?systemctl?disable?firewalld
Removed?symlink?/etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed?symlink?/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@Docker?~]#?
啟動之前,輸入docker images
:
[root@Docker?~]#?docker?images
Cannot?connect?to?the?Docker?daemon?at?unix:///var/run/docker.sock.?Is?the?docker?daemon?running?
[root@Docker?~]#?
說明 docker 沒有啟動,現在啟動并查看狀態:
[root@Docker?~]#?systemctl?start?docker
[root@Docker?~]#?systemctl?status?docker
●?docker.service?-?Docker?Application?Container?EngineLoaded:?loaded?(/usr/lib/systemd/system/docker.service;?disabled;?vendor?preset:?disabled)Active:?active?(running)?since?四?2024-12-19?10:29:47?CST;?7s?agoDocs:?https://docs.docker.comMain?PID:?26341?(dockerd)Tasks:?10Memory:?35.1MCGroup:?/system.slice/docker.service└─26341?/usr/bin/dockerd?-H?fd://?--containerd=/run/containerd/containerd.sock12月?19?10:29:45?Docker?systemd[1]:?Starting?Docker?Application?Container?Engine...
12月?19?10:29:45?Docker?dockerd[26341]:?time="2024-12-19T10:29:45.888362136+08:00"?level=info?msg="Starting?up"
12月?19?10:29:46?Docker?dockerd[26341]:?time="2024-12-19T10:29:46.224219879+08:00"?level=info?msg="Loading?containers:?start."
12月?19?10:29:46?Docker?dockerd[26341]:?time="2024-12-19T10:29:46.898469964+08:00"?level=info?msg="Loading?containers:?done."
12月?19?10:29:47?Docker?dockerd[26341]:?time="2024-12-19T10:29:47.005955247+08:00"?level=info?msg="Docker?daemon"?commit=de5c9cf?containerd-snapshotter=false?storage-driver=overlay2?version=26.1.4
12月?19?10:29:47?Docker?dockerd[26341]:?time="2024-12-19T10:29:47.006599035+08:00"?level=info?msg="Daemon?has?completed?initialization"
12月?19?10:29:47?Docker?dockerd[26341]:?time="2024-12-19T10:29:47.169172927+08:00"?level=info?msg="API?listen?on?/run/docker.sock"
12月?19?10:29:47?Docker?systemd[1]:?Started?Docker?Application?Container?Engine.
[root@Docker?~]#?
查看 docker 版本:
[root@Docker?~]#?docker?-v
Docker?version?26.1.4,?build?5650f9b
[root@Docker?~]#?
或者同時可以查看到服務端和客戶端信息:
[root@Docker?~]#?docker?version
Client:?Docker?Engine?-?CommunityVersion:???????????26.1.4API?version:???????1.45Go?version:????????go1.21.11Git?commit:????????5650f9bBuilt:?????????????Wed?Jun??5?11:32:04?2024OS/Arch:???????????linux/amd64Context:???????????defaultServer:?Docker?Engine?-?CommunityEngine:Version:??????????26.1.4API?version:??????1.45?(minimum?version?1.24)Go?version:???????go1.21.11Git?commit:???????de5c9cfBuilt:????????????Wed?Jun??5?11:31:02?2024OS/Arch:??????????linux/amd64Experimental:?????falsecontainerd:Version:??????????1.6.33GitCommit:????????d2d58213f83a351ca8f528a95fbd145f5654e957runc:Version:??????????1.1.12GitCommit:????????v1.1.12-0-g51d5e94docker-init:Version:??????????0.19.0GitCommit:????????de40ad0
[root@Docker?~]#?
1.4配置鏡像加速
由于 Docker 默認從官方鏡像源下載鏡像,速度可能較慢。可以配置國內鏡像源(如阿里云鏡像源)來加速鏡像的下載。
編輯?/etc/docker/daemon.json?文件內容,如下:
[root@Docker?~]#?vim?/etc/docker/daemon.json
[root@Docker?~]#?cat?/etc/docker/daemon.json?
{"registry-mirrors":?["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-hangzhou.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://docker.1panel.live","https://atomhub.openatom.cn/","https://hub.uuuadc.top","https://docker.anyhub.us.kg","https://dockerhub.jobcher.com","https://dockerhub.icu","https://docker.ckyl.me","https://docker.awsl9527.cn"]
}
重載 systemd 服務和重啟 docker :
[root@Docker?~]#?systemctl?daemon-reload
[root@Docker?~]#?systemctl?restart?docker
[root@Docker?~]#?
2.安裝Docker compose
Docker Compose 是一個用于定義和運行多容器應用程序的工具。它是實現流暢、高效開發和部署體驗的關鍵。
Compose 簡化了對整個應用程序堆棧的控制,使得在單個、易于理解的 YAML 配置文件中管理服務、網絡和卷變得輕而易舉。然后,只需一個命令,您就可以從配置文件中創建并啟動所有服務。
Compose 適用于所有環境,包括生產環境、暫存環境、開發環境、測試環境以及持續集成(CI)工作流。它還提供了管理應用程序整個生命周期的命令:
-
啟動、停止和重建服務
-
查看運行服務的狀態
-
實時查看運行服務的日志輸出
-
在服務上運行一次性命令
2.1下載docker-compose文件
通過curl命令下載,并指定保存到 /usr/local/bin/docker-compose 目錄下:
curl?-L?https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-linux-x86_64?-o?/usr/local/bin/docker-compose
如下:
[root@Docker?~]#?curl?-L?https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-linux-x86_64?-o?/usr/local/bin/docker-compose%?Total????%?Received?%?Xferd??Average?Speed???Time????Time?????Time??CurrentDload??Upload???Total???Spent????Left??Speed0?????0????0?????0????0?????0??????0??????0?--:--:--?--:--:--?--:--:--?????0
100?61.6M??100?61.6M????0?????0??2078k??????0??0:00:30??0:00:30?--:--:--?2153k
[root@Docker?~]#?
2.2增加文件執行權限
[root@Docker?~]#?chmod?+x?/usr/local/bin/docker-compose
[root@Docker?~]#?
查看版本:
[root@Docker?~]#?docker-compose?version
Docker?Compose?version?v2.32.1
[root@Docker?~]#?
3.Docker鏡像倉庫搭建
搭建鏡像倉庫可以基于Docker官方提供的DockerRegistry來實現。
https://docs.docker.com/registry/
3.1搭建簡化版的鏡像倉庫
Docker 官方提供了一個簡化版的 Docker Registry 鏡像,具備完整的倉庫管理功能,但缺乏圖形化界面。下面是一個簡單的搭建命令:
docker?run?-d?\--restart=always?\--name?registry?\-p?5000:5000?\-v?registry-data:/var/lib/registry?\registry
這個命令中的參數說明:
-d: 后臺運行容器。
--restart=always: 設置容器總是在 Docker 啟動時重新啟動。
--name registry: 為容器指定一個名字,這里是 registry。
-p 5000:5000: 將主機的 5000 端口映射到容器的 5000 端口。
-v registry-data:/var/lib/registry: 掛載數據卷 registry-data 到容器內的 /var/lib/registry 目錄,用于持久化存儲鏡像數據。
registry: 使用的鏡像名稱。
通過上述命令,就成功運行了一個 Docker Registry 服務。訪問:
http://192.168.250.22:5000/v2/_catalog
可以查看當前私有鏡像服務中包含的鏡像:
暫為空。
3.2搭建帶有圖形化界面的鏡像倉庫
通過 Docker Compose,可以很容易地搭建一個帶有圖形化界面的 Docker Registry 服務。
以下是一個簡單的?docker-compose.yml
?文件:
version:?'3.0'
services:registry:image:?registryvolumes:-?./registry-data:/var/lib/registryui:image:?joxit/docker-registry-ui:staticports:-?8080:80environment:-?REGISTRY_TITLE=我的私有倉庫-?REGISTRY_URL=http://registry:5000depends_on:-?registry
3.3 配置 Docker 信任地址
這里采用的是 http 協議,默認不被 Docker 信任,所以需要做一個配置:
編輯?/etc/docker/daemon.json
文件:
[root@Docker?~]#?vim?/etc/docker/daemon.json
[root@Docker?~]#?
然后添加:
"insecure-registries": ["http://192.168.250.22:8080"]
[root@Docker?~]#?cat?/etc/docker/daemon.json
{"registry-mirrors":?["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","https://mirror.ccs.tencentyun.com","https://registry.cn-hangzhou.aliyuncs.com","https://docker.mirrors.ustc.edu.cn","https://docker.1panel.live","https://atomhub.openatom.cn/","https://hub.uuuadc.top","https://docker.anyhub.us.kg","https://dockerhub.jobcher.com","https://dockerhub.icu","https://docker.ckyl.me","https://docker.awsl9527.cn"],"insecure-registries":?["http://192.168.250.22:8080"]
}
然后重載 Docker 守護進程配置并重啟 Docker:
[root@Docker?~]#?systemctl?daemon-reload
[root@Docker?~]#?systemctl?restart?docker
這樣,就成功搭建了一個簡化版的 Docker 鏡像倉庫,并且還可以使用 Docker Compose 部署一個帶有圖形化界面的 Docker Registry。
然后運行命令:docker-compose up -d
[root@Docker?~]#?docker-compose?up?-d
WARN[0000]?/root/docker-compose.yml:?the?attribute?`version`?is?obsolete,?it?will?be?ignored,?please?remove?it?to?avoid?potential?confusion?
[+]?Running?12/12??ui?Pulled???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????50.9s???540db60ca938?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????15.1s???197dc8475a23?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????16.7s???39ea657007e5?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????16.9s???37afbf7d4c3d?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????17.0s???0c01f42c3df7?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????17.3s???d590d87c9181?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????17.4s???3333c94ae44f?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????17.6s???33d7cca6fc9f?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????17.9s???076b2dd9bdd1?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????18.0s???b70198f04ee7?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????18.2s???1fb6c5acc953?Pull?complete????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????18.3s?
[+]?Running?3/3??Network?root_default???????Created???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????0.2s???Container?root-registry-1??Started???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????1.6s???Container?root-ui-1????????Started???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????2.0s?
[root@Docker?~]#?
然后輸入倉庫地址:
http://192.168.250.22:8080/
就可以看到私有鏡像查看的 UI 界面,如下: