Подтвердить что ты не робот

Docker/Boot2Docker: установите прокси HTTP/HTTPS для докеров в OS X

Короче: как установить HTTP/HTTPS-прокси для Docker на Mac OS X n

Подробнее:

Я запускаю Docker (1.12) в Mac OS X за прокси. Я выполнил инструкции по установке и установил boot2docker. Это нормально работает, если я извлекаю из своего внутреннего реестра Docker.

Тем не менее, я получаю следующую ошибку при вытаскивании из docker.io:

machine:~ me$ docker run ubuntu echo hello world
Unable to find image 'ubuntu' locally
Pulling repository ubuntu
2014/06/30 13:23:26 Get https://index.docker.io/v1/repositories/ubuntu/images:
dial tcp: lookup index.docker.io: no such host

Примечание 1: DOCKER_HOST, http_proxy и https_proxy доступны в среде (запуск env отображает все три).

Примечание 2. Я читал в других сообщениях, что эта ошибка возникает, когда демон работает неправильно. Однако docker version не вызывает никаких проблем. Более того, я могу вытащить и запустить изображения, извлеченные из моего внутреннего реестра Docker.

Примечание 3. Я смог настроить Docker на Red Hat Linux (RHEL). Мне нужно было добавить информацию прокси-сервера в /etc/sysconfig/docker. Я прочитал, что есть аналогичный файл на Ubuntu (/etc/init/docker.conf). Однако я не смог найти этот файл для Docker (или boot2docker?) На Mac OS X.

4b9b3361

Ответ 1

Конфигурационные файлы, которые вам нужно изменить, не будут находиться в вашей файловой системе OS X, они будут прикреплены к виртуальной машине Tiny Core Linux, которая действует как ваш локальный сервер Docker.

Чтобы настроить прокси для этого, сначала запустите Boot2docker из приложений. После этого запустите окно терминала и ssh в виртуальную машину:

bash-3.2$ boot2docker ssh
Warning: Permanently added '[localhost]:2022' (RSA) to the list of known hosts.
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.0.1
             master : cad5ece - Fri Jun 20 02:03:40 UTC 2014
[email protected]:~$

Теперь создайте/измените/var/lib/boot2docker/profile, чтобы установить информацию о прокси:

[email protected]:~$ sudo vi /var/lib/boot2docker/profile 

Tinycore нуждается в информации прокси-сервера следующим образом: protocol://ip: port
Чтобы быть в безопасности, я устанавливал прокси-серверы как для HTTP, так и для HTTPS.

export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080

Теперь вы можете перезапустить службу док-станции VM и выйти из виртуальной машины.

[email protected]:~$ sudo /etc/init.d/docker restart
[email protected]:~$ exit
Connection to localhost closed.

Теперь вы можете запустить клиент с экземпляром VM.

bash-3.2$ docker search ubuntu
NAME                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
ubuntu                                           Official Ubuntu base image                      356                  
stackbrew/ubuntu                                 Official Ubuntu base image                      39                   
crashsystems/gitlab-docker                       A trusted, regularly updated build of GitL...

Это изменение сохраняется с помощью перезапуска VM. Вам нужно сделать это только один раз.

Для записи VirtualBox имеет глобальную настройку предпочтений для прокси, но ничего, что я пробовал, не срабатывал.

Ответ 2

Начиная с недавнего выпуска версии (август 2015 г.), рекомендуется использовать докеры для создания узлов докеров, в том числе загрузочных VM-винчестеров, через свою док-машину.

Кроме того, начиная с версии 1.8, докер-машина теперь поддерживает конфигурацию прокси-серверов во время создания VM посредством вызова, подобного следующему:

docker-machine create -d virtualbox \
    --engine-env HTTP_PROXY=http://192.37.246.181:2010 \
    --engine-env HTTPS_PROXY=http://192.37.246.181:2010 \
    --engine-env NO_PROXY=novartis.net \
    default

Это приводит к тому, что VM, у которой есть указанные переменные среды, уже добавленные в файл инициализации /var/lib/boot 2docker/profile, больше не нужно добавлять их вручную.

Ответ 3

Я решил эту проблему, установив конфигурацию прокси в файле .profile:

[email protected]:~$ vi ~/.profile

добавьте свой прокси в конец:

#
PS1='\[email protected]\h:\w\$ '
PAGER='less -EM'
MANPAGER='less -isR'

EDITOR=vi

export PS1 PAGER FILEMGR EDITOR MANPAGER

export BACKUP=1
[ "`id -un`" = "`cat /etc/sysconfig/tcuser`" ] && echo "$BACKUP" | sudo tee /etc/sysconfig/backup >/dev/null 2>&1
export FLWM_TITLEBAR_COLOR="58:7D:AA"

if [ -f "$HOME/.ashrc" ]; then
   export ENV="$HOME/.ashrc"
   . "$HOME/.ashrc"
fi

TERMTYPE=`/usr/bin/tty`
[ ${TERMTYPE:5:3} == "tty" ] && (
[ ! -f /etc/sysconfig/Xserver ] ||
[ -f /etc/sysconfig/text ] ||
[ -e /tmp/.X11-unix/X0 ] ||
startx
)

export HTTP_PROXY=http://proxy.XX.com:8080
export HTTPS_PROXY=http://proxy.XX.com:8080

наконец, перезагрузите Boot2Docker.

Ответ 4

Если вы используете Docker для Mac и находитесь за прокси-средой.

Нажмите на значок докера в верхней строке меню. (как показано на шаге 1.3 здесь)

Перейдите к Preferences > Advanced и установите прокси-сервер в настройках HTTP и HTTPS. Нажмите "Применить" и "Перезапустить" под ним. Тебе хорошо идти.:)

Ответ 5

Чтобы решить проблему с curl в сборке докеров, я добавил следующее внутри файла Docker:

ENV http_proxy=http://infoprx2:8080
ENV https_proxy=http://infoprx2:8080
RUN apt-get update && apt-get install -y curl vim

Обратите внимание, что инструкция ENV находится перед оператором RUN.

и чтобы демон docker смог получить доступ к Интернету (я использую kitematic с boot2docker), я добавил следующее в /var/lib/boot 2docker/profile:

export HTTP_PROXY=http://infoprx2:8080
export HTTPS_PROXY=http://infoprx2:8080

Ответ 6

Конфигурационный файл в boot2docker должен быть /var/lib/boot2docker/profile, отредактируйте этот файл в пользовательском прокси-сервере http (s).