Докер-машина за корпоративным прокси

Я пытаюсь использовать docker-machine для создания экземпляра в частном облаке (Openstack), который находится за корпоративным http-прокси.

Можно ли сообщить машине-докере использовать прокси-сервер, или мне нужно, чтобы изображение взгляда было предварительно настроено с помощью переменной http_proxy env?

Ответы

Ответ 1

С текущей версией док-машины я не могу найти лучший способ сделать изменения, как в boot2docker (Docker/Boot2Docker: установить прокси HTTP/HTTPS для докера в OS X)

Если вы вручную установите прокси в /var/lib/boot2docker/profile на докере, после перезапуска его настройки прокси будут автоматически удалены.

Поэтому я должен создать докер с установленным для прокси-сервера --engine-env

docker-machine create -d virtualbox \
    --engine-env HTTP_PROXY=http://example.com:8080 \
    --engine-env HTTPS_PROXY=https://example.com:8080 \
    --engine-env NO_PROXY=example2.com \
    proxybox

ЗАМЕТКИ:

Это двухлетний ответ, в докере произошло много изменений, поэтому, если вы все еще не можете заставить его работать за прокси-сервером, прочтите ответ @Senri и другие.

Документация: создание докера

Ответ 2

Как уже упоминалось, вы можете отредактировать файл в

$HOME\.docker\machine\machines\default\config.json

и установите переменные HTTP_PROXY, HTTPS_PROXY и NO_PROXY (или удалите их):

 "HostOptions": {
        "Driver": "",
        ...
        "EngineOptions": {
           ...
            "Env": [
              "HTTP_PROXY=http://10.121.8.110:8080",
              "HTTPS_PROXY=http://10.121.8.110:8080",
              "NO_PROXY=192.168.23.4"
            ],

После редактирования файла вам нужно выполнить только:

docker-machine provision 

Ответ 3

Существующую конфигурацию докере-машины можно изменить, чтобы добавить среду для прокси. Config.json в $HOME/.docker/machine/machines//. Config.json можно редактировать.

Добавить "HTTP_PROXY = http://example.com:8080" в Env в config.json. Перезагрузите компьютер, и вы все настроены.

Ответ 4

Если вы уже создали машину (VM), вы можете настроить прокси, как это:

1- SSH into the docker dev host: docker-machine ssh dev
2- Add the following lines to /var/lib/boot2docker/profile (this file is read-only, use sudo)
    export HTTP_PROXY=http://<proxy>:<port>
    export HTTPS_PROXY=http://<proxy>:<port>
3- Exit the ssh session and restart the docker machine: docker-machine restart dev 

Источник

Ответ 5

Начиная с Docker 18.09, мы можем указывать переменные среды, такие как прокси, для контейнера в командной строке следующим образом:

docker run --env HTTP_PROXY="172.10.13.14" -it myImage:latest/bin/bash

Кроме того, мы можем указать эти настройки для клиента докера, записав их в файл ~/.docker/config.json следующим образом:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:3001",
     "noProxy": "*.test.example.com,.example2.com"
   }
 }
}

Больше информации доступно на документах.