我正在尝试在 linux/ubuntu 服务器机器上的代理后面运行 docker。我已经配置了盒子上的每个代理(FTP/HTTPS/HTTP),我还配置了此处提到的 Docker 代理:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy和https://stackoverflow.com/a/28093517/4261713
但是,我将 docker 服务设置为在计算机启动时自动启动,除非我登录到计算机并运行,否则sudo service docker restart
这些设置将被忽略,并且 docker 无法使用代理。这一切都很好,我们有一个本地访问的解决方法,但我需要使用自动构建/部署等远程使用这台机器。因此,构建会在不运行该命令的情况下中断。
我已经尝试过的:
我在 /etc/systemd/system/docker.service.d 中创建了 http-proxy.conf 并为代理创建了环境变量。
我尝试通过添加到
"DOCKER_OPTS"
顶部的变量来修改 docker service init.d 文件-e "HTTP_PROXY=http://addressofproxy:portofproxy" -e "HTTPS_PROXY=http://addressofproxy:portofproxy"
,但是,这也没有什么区别,我仍然需要在重新启动后重新启动服务!我还设置/配置了客户端配置
~/.docker/config.json
以包含代理。
安装
Docker 是使用sudo apt-get install docker.io
命令行安装的,它不是从源代码构建的。
主机和版本信息:
Ubuntu 版本 (
lsb_release -a
)No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic
Docker版本 (
docker --version
)Docker version 18.06.1-ce, build e68fc7a
安装的包 (
sudo apt list --installed | grep docker
):docker.io/bionic-updates,bionic-security,now 18.06.1-0ubuntu1.2~18.04.1 amd64
答案1
我有一组由 docker-compose yaml 文件控制的 docker 容器,类似于下面的内容
version: '3'
services:
nodejs-admin:
image: ${GKE_APP_IMAGE_ADMIN}
hostname: admin
container_name: loud_admin
restart: always
... more tags go here
在上面我列出了重新启动时需要启动的所有容器...注意上面的标签
restart: always
它告诉 docker 在机器重新启动时重新启动这些容器...以解决所有容器问题
docker-compose -f /somepath/docker-compose.yml down
启动容器问题
docker-compose -f /somepath/docker-compose.yml pull imageA imageB
docker-compose -f /somepath/docker-compose.yml up -d
答案2
我们现在才发现并解决了这个问题。事实证明,在 18.04 Ubuntu 服务器中,使用了“Snap”包管理器。它还默认安装了 docker。
问题是重复安装,即 snap 安装了 docker,然后我通过 apt 包管理器安装了 docker。一旦删除了 snap docker 安装,所有内容在重新启动时都会按预期工作。
愚蠢的问题,但希望这能帮助将来的其他人!