今天把盒子系统装到外置硬盘启动,结果用内置的docker安装脚本安装报错失败,根据错误提示修复很头大,也没有成功。

首先一定要先执行更新:

sudo apt-get update
sudo apt-get upgrade

因为是外置硬盘,不确定是不是缺少驱动导致的,保险起见还是加上:

修改 /etc/docker/daemon.json
vi /etc/docker/daemon.json
# 添加如下内容
{
  # 此配置与本次启动不起来docker服务无关
  "registry-mirrors": ["自己的加速地址"],
  # 此次docker服务启动不起来的解决办法是添加如下两个配置解决的问题,添加存储驱动
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}

# 重新启动docker服务
systemctl start docker 

然后彻底删除上次安装的残留后,再次运行安装脚本。

再然后配置使用明文代理,配合局域网其他代理服务使用:

全局系统代理(针对 APT、CURL 及普通终端命令)

将代理配置写入全局环境变量。

sudo nano /etc/profile.d/proxy.sh

复制并粘贴以下内容:

export proxy="http://自己的代理ip:7890"

export http_proxy=$proxy
export https_proxy=$proxy
export ftp_proxy=$proxy
export rsync_proxy=$proxy

# 排除不需要代理的本地地址
export no_proxy="localhost,127.0.0.1,::1,localaddress,.localdomain.com"

# 将变量转换为大写以兼容部分老旧软件
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$https_proxy
export FTP_PROXY=$ftp_proxy
export RSYNC_PROXY=$rsync_proxy
export NO_PROXY=$no_proxy

保存退出并使配置立即生效:

source /etc/profile

Docker 守护进程代理(解决 Docker Pull 缓慢/失败)

Docker 容器的镜像拉取(docker pull)是由 Docker 守护进程(Daemon)处理的,无法直接读取系统终端的全局代理,必须为其单独配置 systemd 服务代理。

执行以下一键脚本配置:

# 创建 Docker 服务的配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d

创建http-proxy.conf并写入配置:

[Service]
Environment="HTTP_PROXY=http://10.0.0.10:7890"
Environment="HTTPS_PROXY=http://10.0.0.10:7890"
Environment="NO_PROXY=localhost,127.0.0.1,somecorporation.com"

重载 systemd 配置并重启 Docker。

sudo systemctl daemon-reload
sudo systemctl restart docker

如果报错!!!

-bash: $'\r': command not found

直接在 Ubuntu 终端运行以下命令,将文件中的 \r 字符全部替换为空白(将 your_script.sh 替换为你报错的脚本文件名,例如 /etc/profile.d/proxy.sh):

sed -i 's/\r$//' your_script.sh

再次重载 systemd 配置并重启 Docker,解决。

好句天成,妙手偶得。