太原市做網(wǎng)站公司微信營(yíng)銷(xiāo)軟件手機(jī)版
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,由Go語(yǔ)言開(kāi)發(fā),基于Linux內(nèi)核技術(shù)。Docker通過(guò)將應(yīng)用及其依賴(lài)打包到可移植的容器中,實(shí)現(xiàn)了應(yīng)用的快速部署和高效管理。Docker容器具有輕量級(jí)、快速啟動(dòng)、可移植性強(qiáng)等特點(diǎn),能夠顯著提升資源利用率和開(kāi)發(fā)效率。它廣泛應(yīng)用于開(kāi)發(fā)、測(cè)試、生產(chǎn)等環(huán)境,是微服務(wù)架構(gòu)和DevOps文化中的關(guān)鍵工具。Docker還提供了豐富的社區(qū)支持和生態(tài)系統(tǒng),助力企業(yè)快速構(gòu)建和部署應(yīng)用。
docker有兩個(gè)版本,一個(gè)是無(wú)界面的docker engine,另一個(gè)是有界面的docker desktop。
查看官網(wǎng):https://docs.docker.com/engine/install/centos/
查看鏈接可能需要科學(xué)上網(wǎng)
當(dāng)前Linux版本:
lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description: Alibaba Cloud Linux release 3 (Soaring Falcon)
Release: 3
Codename: SoaringFalcon
由于docker官方網(wǎng)絡(luò)原因,簡(jiǎn)簡(jiǎn)單單的安裝也頗費(fèi)周折,最后總算是安裝成功了,詳細(xì)記錄如下:
1、卸載老版本
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2、配置docker倉(cāng)庫(kù)
sudo yum install -y yum-utils
# 配置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
注意:上面這個(gè)官方鏈接可能訪問(wèn)不了(不翻墻),或者太慢,換成阿里云的鏡像即可
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下面是命令的詳細(xì)解釋:
yum-config-manager
:這是yum
工具包中的一個(gè)實(shí)用程序,用于管理 yum 倉(cāng)庫(kù)的配置文件。它允許你添加、刪除、啟用或禁用倉(cāng)庫(kù),而無(wú)需直接編輯倉(cāng)庫(kù)的配置文件。--add-repo
:這個(gè)選項(xiàng)告訴yum-config-manager
你要執(zhí)行的操作是添加一個(gè)新的 yum 倉(cāng)庫(kù)。https://download.docker.com/linux/centos/docker-ce.repo
:這是 Docker CE 官方為 CentOS 系統(tǒng)提供的 yum 倉(cāng)庫(kù)的 URL。這個(gè)倉(cāng)庫(kù)包含了 Docker CE 的所有包和依賴(lài)項(xiàng),使得安裝和更新 Docker CE 變得簡(jiǎn)單。
3、安裝最新版docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
官方的鏡像訪問(wèn)不了
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker CE Stable - x86_64 0.0 B/s | 0 B 02:00
Errors during downloading metadata for repository 'docker-ce-stable':- Curl error (28): Timeout was reached for https://download.docker.com/linux/centos/8/x86_64/stable/repodata/repomd.xml [Connection timed out after 30000 milliseconds]
官方鏡像訪問(wèn)不了,換成阿里云的就可以了
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@iZm5e33cshwe0x9z1t5yleZ ai]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker CE Stable - x86_64 69 kB/s | 66 kB 00:00
Dependencies resolved.
.................................
.........................Verifying : docker-ce-cli-1:26.1.3-1.el8.x86_64 10/12 Verifying : docker-ce-rootless-extras-26.1.3-1.el8.x86_64 11/12 Verifying : docker-compose-plugin-2.27.0-1.el8.x86_64 12/12 Installed:containerd.io-1.6.32-3.1.el8.x86_64 docker-buildx-plugin-0.14.0-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64 docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-ce-rootless-extras-26.1.3-1.el8.x86_64 docker-compose-plugin-2.27.0-1.el8.x86_64 fuse-overlayfs-1.13-1.0.1.al8.x86_64 fuse3-3.3.0-17.al8.x86_64 fuse3-libs-3.3.0-17.al8.x86_64 libcgroup-0.41-19.2.al8.x86_64 libslirp-4.4.0-2.al8.x86_64 slirp4netns-1.2.3-1.al8.x86_64 Complete!
安裝過(guò)程會(huì)出現(xiàn)兩次需要確認(rèn)的步驟Is this ok [y/N]: y
輸入y就可以了
4、啟動(dòng)docker
啟動(dòng)
systemctl start docker
重啟
systemctl restart docker
開(kāi)機(jī)啟動(dòng)
systemctl enable docker
查看狀態(tài):已經(jīng)啟動(dòng)
systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset>Active: active (running) since Sat 2024-08-03 00:52:32 CST; 18min agoDocs: https://docs.docker.comMain PID: 3810220 (dockerd)Tasks: 11Memory: 37.5MCGroup: /system.slice/docker.service└─3810220 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/conta>
查看狀態(tài):沒(méi)有啟動(dòng)
systemctl status docker
?.docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: inactive (dead)Docs: https://docs.docker.com
5、查看版本
docker version
docker version
Client: Docker Engine - CommunityVersion: 26.1.3API version: 1.45Go version: go1.21.10Git commit: b72abbbBuilt: Thu May 16 08:34:39 2024OS/Arch: linux/amd64Context: defaultdocker --version
Docker version 26.1.3, build b72abbb
6、運(yùn)行hello world測(cè)試
出現(xiàn)如下日志說(shuō)明測(cè)試通過(guò)
sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.
由于特殊原因,出現(xiàn)連接超時(shí),如下提示。需要配置國(guó)內(nèi)鏡像
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Retrying in 1 second
docker: error pulling image configuration: download failed after attempts=6: dial tcp 199.16.156.11:443: i/o timeout.
See 'docker run --help'.
7、配置鏡像
由于官方鏡像被墻,所以需要配置其他可訪問(wèn)鏡像
sudo vim /etc/docker/daemon.json
在daemon.json 中寫(xiě)入如下配置,沒(méi)有就新建
{"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com/","https://ccr.ccs.tencentyun.com/","https://docker.m.daocloud.io/"]
}
保存配置后重啟docker。systemctl restart docker
如果重啟報(bào)錯(cuò),使用命令查看錯(cuò)誤原因:journalctl -xe | grep docker
8、使用docker安裝一個(gè)應(yīng)用
安裝MQTT協(xié)議的broker EMQX
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest
docker run
: 這是Docker的一個(gè)基本命令,用于從鏡像啟動(dòng)新的容器。-d
: 這個(gè)選項(xiàng)告訴Docker以“分離模式”(detached mode)運(yùn)行容器,即容器在后臺(tái)運(yùn)行。--name emqx
: 這個(gè)選項(xiàng)允許你為容器指定一個(gè)名稱(chēng),這里是emqx
。給容器命名使得后續(xù)管理(如停止、刪除、查看日志等)更加方便。-p 1883:1883
: 這個(gè)選項(xiàng)將容器的1883端口映射到宿主機(jī)的1883端口。MQTT協(xié)議的默認(rèn)端口是1883,這個(gè)映射使得外部客戶(hù)端可以通過(guò)宿主機(jī)的1883端口與EMQX通信。-p 8083:8083
: 這個(gè)選項(xiàng)將容器的8083端口映射到宿主機(jī)的8083端口。EMQX使用8083端口提供HTTP API和Dashboard服務(wù),允許你通過(guò)Web界面管理EMQX。-p 8084:8084
: 這個(gè)選項(xiàng)將容器的8084端口提供給WebSocket服務(wù)。-p 8883:8883
: MQTT over SSL/TLS的默認(rèn)端口是8883。這個(gè)映射使得外部客戶(hù)端可以通過(guò)SSL/TLS加密的方式與EMQX通信。-p 18083:18083
: 類(lèi)似于8083端口,但18083通常用于HTTP API的加密版本(HTTPS)。emqx/emqx:latest
: 這指定了要使用的Docker鏡像的名稱(chēng)和標(biāo)簽。emqx/emqx
是鏡像的倉(cāng)庫(kù)名和所有者名,`la
還有另外一種 基于Cloudflare Workers 的 Docker 鏡像代理工具的方式:https://github.com/cmliu/CF-Workers-docker.io/tree/main