Linux离线安装Docker

Docker镜像的兼容性

1> 系统架构不兼容

执行pull命令时,Docker会自动匹配当前系统架构的镜像包;Arm架构的系统只能运行Arm的镜像包,x86系统也只能运行x86架构的镜像包。

2> 区分操作系统

在Windows、Linux、Mac等各系统下拉取的镜像包,只能在对应的操作系统下运行,不能跨系统。但在 Windows Desktop 上拉取镜像时,如果使用的是 Linux 容器模式(默认就是 Linux),那么导出的 tar 包就是 Linux 镜像,可以迁移到 Linux 上使用。执行如下命令可查看某个镜像当前的容器模式:

## 查看指定镜像的系统和架构,此处以名称为 nginx:latest 的镜像为例
docker image inspect nginx:latest --format='{{.Os}}/{{.Architecture}}'
## 输出:'linux/amd64'

Docker Desktop for Mac 本身不能直接运行 Linux 内核,它会通过 轻量虚拟机来跑一个小型 Linux 内核,再在里面运行 Docker 容器。所以在 MacOS 上下载的镜像,本质上还是 Linux 镜像(而不是 MacOS 原生镜像);注意MacOS有Arm和X86两种架构的区分。

Docker的安装方式

离线安装Docker的方式有以下几种:

方式一:使用源码编译安装,此方式很复杂;

方式二:使用离线的.deb.rpm包安装,此方式简单一些,但容易出现版本兼容性问题;

方式三(推荐):使用Docker官方提供的静态二进制包(即,绿色版),解压后直接可用,兼容性好;

Docker源

实测直接使用Docker官方源,在国内基本无法拉取任何Docker镜像,原因如下:

1>. Docker官方在2023年取消了中国区的加速服务;同时,因为某些Docker镜像可能包含敏感或未经审查的代码,因此被国内的“墙”限流,从而导致拉取Docker镜像时经常超时。

2>. 因为某些Docker镜像可能包含敏感或未经审查的代码,所以在国内公开提供Docker源有政策风险,因此国内云厂商都将Docker作为一个云产品来向用户提供,以控制使用范围。

3>. 相比其它镜像源,例如:npm、composer等,Docker镜像的体积较大,对云厂商来说有一定的带宽和存储成本,因此云厂商没有动力提供完全免费公开的Docker镜像源。

推荐:在Windows上安装桌面版Docker,再通过代理pull包,然后将包导出到其它平台上使用(以V2ray为例,一般的代理客户端在PAC模式下默认就直接代理了Docker的服务)。

下载Docker绿色版静态二进制包

下载地址:https://download.docker.com/linux/static/stable/x86_64/

安装Docker

## 0.1> 解压
tar xzvf docker-20.10.3.tgz

## 0.2> 进入docker目录,将目录下的所有文件拷贝至“/usr/bin/”
cd docker/
cp * /usr/bin/

## 0.3> 验证安装是否成功
## 检查客户端(CLI)是否能运行
docker --version
## 检查守护进程(Daemon)是否能运行
dockerd --version

测试使用

导入到镜像包到其它Linux下进行测试:

详见:https://sidoc.cn/article/1097.html 中的迁移\备份;

配置开机自启

# 0.1> 编辑文件
vim /etc/systemd/system/docker.service

# 0.2> 添加以下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target


# 0.3> 增加可执行权限
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload 

# 0.4> 开机启动
systemctl enable docker.service

# 0.5> 启动Docker
systemctl start docker

# 7.0> 测试
docker -v
举报

© 著作权归作者所有


1