Linux:ubuntu24安装配置docker+compose的自动化脚本(官方/镜像源 2种方式)

540 阅读4分钟

基础环境

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