重要的事情:没有代理这个文章可能不能帮助解决问题
#!/bin/bash -x
echo "CentOS 7.4"
echo "=== 关闭防火墙 ==="
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
echo
PROXY="127.0.0.1:8118"
PROXY_CONF="/etc/yum.conf"
if ! grep -q "proxy=$PROXY" "$PROXY_CONF"; then
echo "proxy=$PROXY" | sudo tee -a "$PROXY_CONF" > /dev/null
echo "设置代理 'proxy = $PROXY' in $PROXY_CONF, 成功."
else
echo "这个代理 'proxy = $PROXY' 已存在在 $PROXY_CONF 请继续."
fi
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager --enable docker-ce-nightly
sudo yum-config-manager --enable docker-ce-test
sudo yum-config-manager --disable docker-ce-nightly
echo "=== 安装 Docker 实例 ==="
sudo yum install -y docker-ce docker-ce-cli containerd.io
echo "=== 启动 Docker ==="
sudo systemctl start docker
echo "=== 检查 Docker 运行状态 ==="
if ! docker -v &> /dev/null; then
echo "检查Docker未安装成功."
exit 1
else
docker_version_info=$(docker -v)
echo "$docker_version_info"
echo "检查Docker以安装成功."
fi
echo "=== 设置Docker开机自启动 ==="
sudo systemctl enable docker
echo "=== 为 Docker 设置代理 ==="
sudo mkdir -p /etc/systemd/system/docker.service.d
echo "[Service]
Environment='HTTP_PROXY=http://$PROXY'
Environment='HTTPS_PROXY=http://$PROXY'" | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
sudo systemctl daemon-reload
sudo systemctl restart docker
#!/bin/bash -e
echo "Ubuntu 20.04"
# 设置代理地址
PROXY_URL="http://192.168.10.156:10809"
# 函数:设置APT代理
setup_apt_proxy() {
local proxy_conf="/etc/apt/apt.conf.d/proxy.conf"
if ! grep -q "$PROXY_URL" "$proxy_conf"; then
echo "Acquire::http::proxy \"$PROXY_URL\";" | sudo tee -a "$proxy_conf"
echo "Acquire::https::proxy \"$PROXY_URL\";" | sudo tee -a "$proxy_conf"
echo "设置代理 '$PROXY_URL' in $proxy_conf, 成功."
else
echo "这个代理 '$PROXY_URL' 已存在在 $proxy_conf 请继续."
fi
}
# 函数:安装 Docker
install_docker() {
sudo apt-get remove -y docker docker-engine docker.io containerd runc
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
echo "=== 启动 Docker ==="
sudo systemctl start docker
echo "=== 检查 Docker 运行状态 ==="
if ! docker -v; then
echo "检查Docker未安装成功."
exit 1
else
echo "检查Docker以安装成功."
fi
echo "=== 设置Docker开机自启动 ==="
sudo systemctl enable docker
echo "=== 为 Docker 设置代理 ==="
sudo mkdir -p /etc/systemd/system/docker.service.d
echo "[Service]
Environment=\"HTTP_PROXY=$PROXY_URL\"
Environment=\"HTTPS_PROXY=$PROXY_URL\"" | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
}
# 设置系统环境变量
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
# 执行函数
setup_apt_proxy
install_docker
sudo docker run hello-world
为什么可以在docker.service.d 给docker 添加代理
在执行docker pull时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置。