參考文章:Install Docker Engine on Ubuntu
https://docs.docker.com/desktop/install/ubuntu/
https://docs.docker.com/engine/install/ubuntu/#install-from-a-package
說明:這個安裝方式是下載.deb包安裝,最終效果幾乎與用apt install docker.io
完全相同。不僅安裝方便,卸載起來也十分方便,不會破環(huán)系統(tǒng)環(huán)境。
安裝步驟
下載安裝包
https://download.docker.com/linux/ubuntu/dists/
我是ubuntu20.04,選擇focal:
選擇pool(官網(wǎng)讓選這的):
解釋:
目錄說明:
-
edge/
:包含一些實驗性或開發(fā)中的軟件包,可能不穩(wěn)定或不適合生產(chǎn)環(huán)境使用。 -
nightly/
:包含每日構(gòu)建的軟件包,用于測試和開發(fā)目的。 -
pool/
:存放軟件包的目錄。 -
stable/
:包含穩(wěn)定版本的軟件包,適合生產(chǎn)環(huán)境使用。 -
test/
:包含一些測試相關(guān)的軟件包。
文件說明:
-
InRelease
:包含軟件包的元數(shù)據(jù)和數(shù)字簽名,用于驗證軟件包的完整性和真實性。 -
Release
:包含軟件包的元數(shù)據(jù),如軟件包列表、版本信息等。 -
Release.gpg
:包含對Release
文件的數(shù)字簽名,用于驗證Release
文件的真實性。
選擇stable:
選擇amd64(根據(jù)系統(tǒng)來,我的目前是amd64):
將下列文件全下載下來:
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb
關(guān)于下載什么版本的,我就根據(jù)我ubuntu20.04虛擬機上之前用apt install docker.io
的來吧:
這是我們ubuntu20.04arm盒子的,我也備份下:
root@ubuntu:~# docker version
Client:
Version: 20.10.21
API version: 1.41
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1~20.04.2
Built: Thu Apr 27 05:56:44 2023
OS/Arch: linux/arm64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1~20.04.2
Built: Thu Apr 27 05:37:01 2023
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.12-0ubuntu1~20.04.1
GitCommit:
runc:
Version: 1.1.4-0ubuntu1~20.04.3
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
root@ubuntu:~#
root@ubuntu:~#
不過我的虛擬機貌似沒裝buildx插件和compose,我用命令裝下:
apt install docker.io
docker buildx install
apt install docker-compose
算了,還是不裝了,不裝好像也沒事,docker基本功能能用就行。(我后來試了,上面命令好像有問題,buildx還裝不了。。。)
那我們就只裝下面這幾個,保證基本功能能用就行:
containerd.io_1.6.12-1_amd64.deb
docker-ce-cli_20.10.21~3-0~ubuntu-focal_amd64.deb
docker-ce_20.10.21~3-0~ubuntu-focal_amd64.deb
這也奇怪,列表中文件名有~
符號,下下來文件又沒了。。。。
拷貝到目標(biāo)主機并執(zhí)行安裝命令
把下好的文件拷貝到目標(biāo)虛擬機中:
然后根據(jù)官網(wǎng)提供的方法安裝各安裝包:
我這為了方便和可維護,直接做了個腳本:
#!/bin/bash
# 打印所有,包括注釋
# set -v
# 打印執(zhí)行命令
# set -x
# 命令出錯退出
set -e
# 使用未初始化變量退出
set -u
USER=root
# Check user: only support root
WHO=$(whoami | grep "${USER}$")
if [ -z "${WHO}" ]; then
echo
echo "Please change to \"${USER}\" user mode first!"
echo
exit 1
fi
# 獲取腳本所在目錄
SCRIPT_DIR=$(
cd "$(dirname "$0")" || {
echo "cd Failure"
exit 1
}
pwd
)
DEB_PATH_DOCKER_CONTAINERD_IO=$SCRIPT_DIR/containerd.io_1.6.12-1_amd64.deb
DEB_PATH_DOCKER_CE=$SCRIPT_DIR/docker-ce-cli_20.10.21_3-0_ubuntu-focal_amd64.deb
DEB_PATH_DOCKER_CE_CLI=$SCRIPT_DIR/docker-ce_20.10.21_3-0_ubuntu-focal_amd64.deb
# DEB_PATH_DOCKER_BUILDX=$SCRIPT_DIR/docker-buildx-plugin_0.11.1-1_ubuntu.20.04_focal_amd64.deb
# DEB_PATH_DOCKER_COMPOSE=$SCRIPT_DIR/docker-buildx-plugin_0.11.1-1_ubuntu.20.04_focal_amd64.deb
# 安裝.deb包(注意是有順序的,順序錯了安裝不起來)
# (網(wǎng)友提醒,這個順序不對,我未做驗證)
# dpkg -i $DEB_PATH_DOCKER_CONTAINERD_IO \
# $DEB_PATH_DOCKER_CE \
# $DEB_PATH_DOCKER_CE_CLI
dpkg -i $DEB_PATH_DOCKER_CE_CLI \
$DEB_PATH_DOCKER_CONTAINERD_IO \
$DEB_PATH_DOCKER_CE
把腳本搞到目錄下,并且運行:
驗證
拉取運行容器
# 第一次安裝可以不用,但是卸載后再安裝,就需要執(zhí)行一下,否則會報錯:“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”
sudo service docker start
sudo docker run hello-world
成功了!
測試build dockerfile
測試build dockerfile也沒有問題,那那個buildx應(yīng)該是build跨平臺鏡像用的:
測試持久運行容器
測試主機重啟后,docker各服務(wù)是否正常自啟
重啟后:
看起來應(yīng)該是沒有什么問題,跟用apt install docker.io
效果一樣
卸載方法
可以用dpkg -r <package_name>
命令來卸載包,
我寫了個卸載腳本,執(zhí)行腳本可以一鍵卸載docker(卸載上面安裝的那三個.deb包):
#!/bin/bash
# 打印所有,包括注釋
# set -v
# 打印執(zhí)行命令
# set -x
# 命令出錯退出
set -e
# 使用未初始化變量退出
set -u
USER=root
# Check user: only support root
WHO=$(whoami | grep "${USER}$")
if [ -z "${WHO}" ]; then
echo
echo "Please change to \"${USER}\" user mode first!"
echo
exit 1
fi
# 卸載函數(shù)
uninstall_package() {
package_name=$1
dpkg -r $package_name
if [ $? -ne 0 ]; then
echo "卸載 $package_name 失敗!"
echo
exit 1
fi
echo "卸載 $package_name 成功"
echo
}
# 注意卸載順序:docker-ce 依賴 docker-ce-cli,不能先卸載 docker-ce-cli
# 卸載docker-ce
uninstall_package "docker-ce"
# 卸載docker-ce-cli
uninstall_package "docker-ce-cli"
# 卸載containerd.io
uninstall_package "containerd.io"
執(zhí)行結(jié)果:
附:各安裝包作用說明(以及插件)
下面是Docker相關(guān)軟件包的安裝文件,各自的作用如下:
1. containerd.io_<version>_<arch>.deb
這是Docker容器運行時(containerd)的軟件包。Containerd是一個開源的容器運行時,用于管理和運行容器。
2. docker-ce_<version>_<arch>.deb
這是Docker社區(qū)版(Community Edition)的軟件包。Docker CE是免費的Docker版本,適用于個人和小型團隊使用。
3. docker-ce-cli_<version>_<arch>.deb
這是Docker社區(qū)版的命令行界面(CLI)的軟件包。它提供了與Docker守護進程進行交互的命令行工具。
4. docker-buildx-plugin_<version>_<arch>.deb
這是Docker Buildx插件的軟件包。Buildx是一個用于構(gòu)建多平臺鏡像的工具,它可以同時構(gòu)建多個平臺的鏡像,并支持交叉編譯。
5. docker-compose-plugin_<version>_<arch>.deb
這是Docker Compose插件的軟件包。Docker Compose是一個用于定義和運行多容器應(yīng)用的工具,它使用一個YAML文件來配置應(yīng)用的服務(wù)、網(wǎng)絡(luò)和卷等。
附:docker-ce-rootless-extras_<version>_<arch>.deb和docker-scan-plugin_<version>_<arch>.deb 是什么?
https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/
下載文件列表里有這兩個,不知道是啥?
docker-ce-rootless-extras_<version>_<arch>.deb
是Docker社區(qū)版(Community Edition)的非root用戶額外組件的軟件包。它包含了一些用于在非root用戶下運行Docker的額外工具和插件。這些組件允許非特權(quán)用戶在沒有root權(quán)限的情況下使用Docker。
docker-scan-plugin_<version>_<arch>.deb
是Docker的掃描插件的軟件包。這個插件允許用戶對Docker鏡像進行安全掃描,以檢測其中的漏洞和安全問題。它可以幫助用戶在構(gòu)建和部署容器時提前發(fā)現(xiàn)潛在的安全風(fēng)險。文章來源:http://www.zghlxwxcb.cn/news/detail-757289.html
這兩個軟件包是Docker的附加組件,可以根據(jù)需要選擇安裝。docker-ce-rootless-extras
適用于非root用戶使用Docker的場景,而docker-scan-plugin
適用于進行Docker鏡像的安全掃描。文章來源地址http://www.zghlxwxcb.cn/news/detail-757289.html
到了這里,關(guān)于ubuntu docker離線安裝docker(.deb包方式)(成功)(附卸載方法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!