基础环境
ubuntu24.04(win10上使用vmvare搭建)
安装+配置脚本
提供了2种方式:
- 官方源+代理方式
当我们有条件使用代理随意访问外网时,可以选择让安装的docker也使用代理,访问外国的官方仓库
好处:不用担心镜像源挂掉
坏处:麻烦,需要自己能够科学上网
- 镜像源方式
当我们没有条件访问外国网站时,单独为docker配置国内镜像源
好处:简单,适合无法科学上网的情况,或是一些不方便使用代理的机器
坏处:镜像源不一定能用,因国家政策影响可能挂掉
官方源+代理方式
1.配置网络代理环境
这里共享了宿主机的代理服务(192.168.219.1 是 vmvare nat 模式为宿主机分配的IP)
配置方法详见:Linux:ubuntu虚拟机共享win10主机网络代理
如果已有代理服务,是其他IP端口的,相应更改脚本中的 proxy_url 变量即可
必须确保虚拟机已经配置好外网代理环境,可以访问到docker官方仓库
简单测试方法:curl www.google.com 是否能返回信息
2.执行安装脚本
将以下内容保存成脚本 docker-init-official.sh
并执行 source docker-init-official.sh
若中途因为奇怪问题失败,那再次执行脚本直到成功即可
#!/bin/bash
# 遇到错误时立即退出
set -e
echo '开始进行: docker安装'
# 更新软件源
echo '----------下载基础依赖----------'
sudo apt-get update -y
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
# 添加GPG密钥与APT源(此处用官方+代理,无代理选其他镜像源)
echo '----------添加APT源(官方)----------'
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo 'Docker官方GPG密钥添加到: /etc/apt/keyrings/docker.gpg'
echo 'Docker官方APT源已添加到: /etc/apt/sources.list.d/docker.list'
# 安装Docker
echo '----------安装Docker----------'
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enable docker
# 安装完成
echo '----------安装完成----------'
sudo docker version
docker-compose version
echo '开始进行: docker配置'
# 仓库网络配置(外网代理方式)
# 此处用vmvare宿主机的clash,代理需看情况更改
echo '----------仓库配置:添加外网代理----------'
proxy_url="http://192.168.219.1:7890"
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF > /dev/null
[Service]
Environment="HTTP_PROXY=$proxy_url"
Environment="HTTPS_PROXY=$proxy_url"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "外网代理已添加:$proxy_url"
# 安装Docker Compose(github方式)
# echo '----------安装Compose----------'
# sudo -E curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# echo 'Docker Compose 已安装到: /usr/local/bin/docker-compose'
# 配置compose插件别名
echo '----------配置docker-compose----------'
sudo apt-get install docker-compose-plugin -y
config=$(cat <<EOF
# 插件别名
alias docker-compose='docker compose'
EOF
)
if ! grep -q "docker compose" ~/.bashrc; then
echo "$config" >> ~/.bashrc
echo 'docker-compose安装成功'
else
echo 'docker-compose已存在'
fi
source ~/.bashrc
echo "请手动执行 source ~/.bashrc 或重新打开终端以使docker-compose设置生效"
# 配置docker命令免sudo
echo '----------docker命令免sudo----------'
sudo usermod -aG docker $USER
echo "$USER 已添加到 docker组"
# 要放到尾行因为刷新终端了
newgrp docker
由于网络代理可能存在波动的情况,执行过程有概率出错
如下载基础依赖时出现502、添加APT源时连接被重置等等,导致脚本执行中断
但是不用担心,只要重复多执行几次,直到保证整个脚本流程没出错走完即可
镜像源方式
将以下内容保存成脚本 docker-init-mirror.sh
并执行 source docker-init-mirror.sh
若中途因为奇怪问题失败,那再次执行脚本直到成功即可
这里选用的镜像仓库 proxy.1panel.live 不一定还活着
可以访问一下是否能连通,如果挂了可以去 status.1panel.top/ 找几个替代
#!/bin/bash
# 遇到错误时立即退出
set -e
echo '开始进行: docker安装'
# 更新软件源
echo '----------下载基础依赖----------'
sudo apt-get update -y
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
# 添加GPG密钥与APT源(阿里镜像源)
echo '----------添加APT源(官方)----------'
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --yes --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
echo 'Docker官方GPG密钥添加到: /etc/apt/keyrings/docker.gpg'
echo 'Docker官方APT源已添加到: /etc/apt/sources.list.d/docker.list'
# 安装Docker
echo '----------安装Docker组件----------'
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
sudo systemctl start docker
sudo systemctl enable docker
# 安装完成
echo '----------安装完成----------'
sudo docker version
docker compose version
echo '开始进行: docker配置'
# 仓库网络配置(镜像仓库方式)
# 镜像站监控点:https://status.1panel.top/(选取一个未挂掉的镜像仓库)
echo '----------仓库配置:添加国内镜像仓库----------'
echo '{
"registry-mirrors": [
"https://proxy.1panel.live"
]
}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
# 配置compose插件别名
echo '----------配置docker-compose----------'
config=$(cat <<EOF
# 插件别名
alias docker-compose='docker compose'
EOF
)
if ! grep -q "docker compose" ~/.bashrc; then
echo "$config" >> ~/.bashrc
echo 'docker-compose安装成功'
else
echo 'docker-compose已存在'
fi
source ~/.bashrc
echo "请手动执行 source ~/.bashrc 或重新打开终端以使docker-compose设置生效"
# 配置docker命令免sudo
echo '----------docker命令免sudo----------'
sudo usermod -aG docker $USER
echo "$USER 已添加到 docker组"
# 要放到尾行因为刷新终端了
newgrp docker
(优化)融合官方脚本
后来发现官方其实为我们提供了一键安装脚本,且目前国内能访问到
这个安装脚本可以代替外面上面的前4步(下载基础依赖、添加APT源、安装docker组件、安装完成)
- 官方源+代理方式(融合官方脚本)
将以下内容保存成脚本 docker-init-official.sh
并执行 source docker-init-official.sh
若中途因为奇怪问题失败,那再次执行脚本直到成功即可
#!/bin/bash
# 遇到错误时立即退出
set -e
echo '开始进行: docker安装'
# 官方源+代理方式(确保已配置好代理)
curl -fsSL https://get.docker.com | bash -s docker
echo '开始进行: docker配置'
# 仓库网络配置(外网代理方式)
# 此处用vmvare宿主机的clash,代理需看情况更改
echo '----------仓库配置:添加外网代理----------'
proxy_url="http://192.168.219.1:7890"
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF > /dev/null
[Service]
Environment="HTTP_PROXY=$proxy_url"
Environment="HTTPS_PROXY=$proxy_url"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "外网代理已添加:$proxy_url"
# 配置compose插件别名
echo '----------配置docker-compose----------'
config=$(cat <<EOF
# 插件别名
alias docker-compose='docker compose'
EOF
)
if ! grep -q "docker compose" ~/.bashrc; then
echo "$config" >> ~/.bashrc
echo 'docker-compose安装成功'
else
echo 'docker-compose已存在'
fi
source ~/.bashrc
echo "请手动执行 source ~/.bashrc 或重新打开终端以使docker-compose设置生效"
# 配置docker命令免sudo
echo '----------docker命令免sudo----------'
sudo usermod -aG docker $USER
echo "$USER 已添加到 docker组"
# 要放到尾行因为刷新终端了
newgrp docker
- 镜像源方式(融合官方脚本)
将以下内容保存成脚本 docker-init-mirror.sh
并执行 source docker-init-mirror.sh
若中途因为奇怪问题失败,那再次执行脚本直到成功即可
这里选用的镜像仓库 proxy.1panel.live 不一定还活着
可以访问一下是否能连通,如果挂了可以去 status.1panel.top/ 找几个替代
#!/bin/bash
# 遇到错误时立即退出
set -e
echo '开始进行: docker安装'
# 镜像源方式
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
echo '开始进行: docker配置'
# 仓库网络配置(镜像仓库方式)
# 镜像站监控点:https://status.1panel.top/(选取一个未挂掉的镜像仓库)
echo '----------仓库配置:添加国内镜像仓库----------'
echo '{
"registry-mirrors": [
"https://proxy.1panel.live"
]
}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
# 配置compose插件别名
echo '----------配置docker-compose----------'
config=$(cat <<EOF
# 插件别名
alias docker-compose='docker compose'
EOF
)
if ! grep -q "docker compose" ~/.bashrc; then
echo "$config" >> ~/.bashrc
echo 'docker-compose安装成功'
else
echo 'docker-compose已存在'
fi
source ~/.bashrc
echo "请手动执行 source ~/.bashrc 或重新打开终端以使docker-compose设置生效"
# 配置docker命令免sudo
echo '----------docker命令免sudo----------'
sudo usermod -aG docker $USER
echo "$USER 已添加到 docker组"
# 要放到尾行因为刷新终端了
newgrp docker