Я только что установил docker toolbox на windows environmentnement (Windows 7 Pro), и у меня есть сетевое время из-за прокси-сервера entreprise. Как установить прокси-сервер в панели инструментов docker?
Спасибо за вашу помощь.
Я только что установил docker toolbox на windows environmentnement (Windows 7 Pro), и у меня есть сетевое время из-за прокси-сервера entreprise. Как установить прокси-сервер в панели инструментов docker?
Спасибо за вашу помощь.
Я столкнулся с той же проблемой. Вот мое решение.
Env:
Win7, Docker Toolbox 17.03, серверный терминал, за настройками прокси-сервера предприятия.
Решение:
в C:\Program Files\Docker Toolbox, найдите файл start.sh. добавьте следующие два параметра прокси-сервера:
export http_proxy="http://hostname:port/"
export https_proxy="http://hostname:port/"
По крайней мере, это работает для меня.
У меня похожая проблема для Windows 7, но она была решена с помощью этих шагов:
Шаг 1. Создайте пакетный скрипт C:\Program Files\Docker Toolbox\kitematic_proxy.cmd со следующей конфигурацией
set proxy=YOUR_PROXY
SET HTTP_PROXY=%proxy%
SET HTTPS_PROXY=%proxy%
for /f %%i in ('docker-machine.exe ip default') do set DOCKER_HOST=%%i
SET NO_PROXY=%DOCKER_HOST%
set DOCKER_HOST=tcp://%DOCKER_HOST%:2376
cd Kitematic
Kitematic.exe
Шаг 2. Откройте Oracle Virtual machine из меню "Пуск", перейдите в командную строку, нажав " Показать" (Убедитесь, что Oracle Vm запущен и работает)
введите sudo vi/var/lib/boot2docker/profile
добавить эти строки
export HTTP_PROXY=http://your.proxy.name:8080
export HTTPS_PROXY=http://your.proxy.name:8080
используйте свой прокси-адрес и порт
эта ссылка мне очень помогает https://github.com/docker/kitematic/wiki/Common-Proxy-Issues-&-Fixes
Замечания:
Установка docker на windows 7 (docker 18.09.0) за корпоративным прокси была для меня довольно сложной. Вот шаги, за которыми я следовал:
choco install docker-toolbox
(Внимание! Не используйте Docker для Windows, так как он предназначен для Windows 10)docker-machine ls
созданных вашими предыдущими попытками (docker-machine ls
должен быть пуст. Если не запущен: docker-machine rm default
)docker-machine --native-ssh create -d virtualbox --engine-env HTTP_PROXY=$HTTP_PROXY --engine-env HTTPS_PROXY=$HTTPS_PROXY default
.C:\Program Files\Docker Toolbox\start.sh
docker pull busybox
. Это должно работать.Ах! На самом деле, с помощью Docker Toolbox, окна - это очень тонкий слой над созданной виртуальной машиной, поэтому мой метод заключается в том, чтобы настроить саму виртуальную машину, чтобы все работало. Так.
0) Установите глобальные переменные среды на хост-компьютере Windows
HTTP_PROXY = "http://login:[email protected]:8080"
HTTPS_PROXY = "http://login:[email protected]:8080"
Обратите внимание на заглавные буквы! (также вы можете установить FTP_PROXY
и NO_PROXY
)
1) Запустите Docker Quickstart Terminal, он создаст виртуальную машину с именем default
под вашим именем VirtualBox или чем-то еще. Также он будет отображать адрес вашей только что созданной виртуальной машины как
docker is configured to use the default machine with IP 192.168.99.104
2) SSH по этому адресу (т.е. с PuTTY). Логин: docker
Пароль: tcuser
3) Беги
echo '
{
"proxies":
{
"default":
{
"httpProxy": "http://login:[email protected]:8080",
"httpsProxy": "http://login:[email protected]:8080"
}
}
}' > /home/docker/.docker/config.json
Это заставит клиент Docker (на ВМ!) Запускать контейнеры с правильными envs внутри.
4) Теперь вы можете использовать докер-клиент внутри виртуальной машины. Чтобы заставить клиент Docker Windows (а также Docker-compose) также устанавливать правильные envs внутри работающих контейнеров, поместите тот же config.json
что и на стр .3 на хост-компьютере Windows, в config.json
C:\User\<yourhomedir>\.docker
,
Теперь проверьте среду внутри работающего контейнера
docker run -ti ubuntu env
HTTPS_PROXY=http://login:[email protected]:8080
https_proxy=http://login:[email protected]:8080
HTTP_PROXY=http://login:[email protected]:8080
http_proxy=http://login:[email protected]:8080
Обратите внимание, что переменные CAPS и строчные буквы установлены правильно!
Окончательная проверка для всего в порядке:
docker run -ti ubuntu apt-get update
5) Одна из проблем, с которой вы можете столкнуться, заключается в том, что адрес вашего прокси-сервера получен из сети, которую докер использует при создании собственных сетей, поэтому он испортит маршрут к вашему прокси сразу после docker network create
. Поэтому убедитесь, что адрес прокси не похож на 172.18.xx. В этом случае вынудите Docker использовать другое адресное пространство для созданных сетей, выполнив другую конфигурацию на ВМ.
sudo -i
echo '
{
"default-address-pools": [
{"base":"172.80.0.0/16","size":24}
]
}' > /etc/docker/daemon.json
Затем перезапустите dockerd /etc/init.d/docker restart
6) Не перезагружайте виртуальную машину, останавливайте ее при необходимости.
У меня возникла проблема с установкой панели инструментов Windows 7 Docker
$ docker --version
Docker version 18.09.3, build 774a1f4eee
$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01
Когда я пытался
docker run hello-world
я получил
Не удается найти образ 'hello-world: latest' локально C:\Program Files\Docker Toolbox\docker.exe: Ответ об ошибке от демона: Получить https://registry-1.docker.io/v2/: net/http: запрос отменен при ожидании соединения (Client.Timeout превышен при ожидании заголовков). Смотрите "C:\Program Files\Docker Toolbox\docker.exe run --help".
Согласно https://docs.docker.com/toolbox/faqs/troubleshoot/ я зарегистрировал свой корпоративный прокси-сервер в /var/lib/boot2docker/profile
внутри докера:
Используйте
ssh
для входа на виртуальную машину. В этом примере выполняетсяdefault
компьютер поdefault
.$ docker-machine ssh default [email protected]:~$ sudo vi /var/lib/boot2docker/profile
Затем я добавил свой корпоративный прокси в конце profile
export "HTTP_PROXY=http://host:port"
export "HTTPS_PROXY=http://host:port"
после этого я продолжил инструкции
Добавьте параметр
NO_PROXY
в конец файла, как в примере ниже.export "NO_PROXY=192.168.*.*"
Перезапустите Docker. После изменения
profile
на своей виртуальной машине перезапустите Docker и выйдите из машины.[email protected]:~$ sudo /etc/init.d/docker restart [email protected]:~$ exit
После docker run hello-world
команда docker run hello-world
работает хорошо
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Как упоминалось @rsb2097, после каждой перезагрузки ПК Docker Machine теряет настройки в /var/lib/boot2docker/profile
. Я тоже сталкиваюсь с той же проблемой, и не знаю, как этого избежать, но я сделал скрипт для написания этих настроек проще.
Я думал, что это происходит потому, что я выключил ПК, не останавливая док-станцию (VirtualBox говорит, что при выключении есть активные соединения): предположил, что это повредит. Я попытался docker-machine stop
но это не помогло.
В результате я написал скрипт AddDockerMachineProxy.cmd
который записывает настройки прокси с использованием plink.exe
из Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html).
использование
Запустите Docker Quickstart Terminal
, у меня будет следующий вывод:
Starting "default"...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to configure a dhcp server.
Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses.
You may need to re-run the 'docker-machine env' command.
Regenerate TLS machine certs?
Warning: this is irreversible. (y/n): Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Запустите скрипт AddDockerMachineProxy.cmd
(plink.exe
должен быть в %PATH%
):
@echo off
echo Was "Docker Quickstart Terminal" run after the reboot to init the machine?
echo If not this script fails.
pause
set "exePlink=plink.exe"
set "connectionString=-pw tcuser [email protected]"
echo Profile BEFORE:
call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo APPENDING PROXY
call "%exePlink%" %connectionString% sudo bash -c "'echo export \"HTTP_PROXY=http://host:port\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
call "%exePlink%" %connectionString% sudo bash -c "'echo export \"HTTPS_PROXY=http://host:port\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
call "%exePlink%" %connectionString% sudo bash -c "'echo export \"NO_PROXY=192.168.*.*\">> /var/lib/boot2docker/profile'"
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Profile AFTER:
call "%exePlink%" %connectionString% cat /var/lib/boot2docker/profile
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Restart docker service:
call "%exePlink%" %connectionString% sudo /etc/init.d/docker restart
if errorlevel 1 ( echo ERROR: PSCP failed !!! & goto BadExit )
echo Testing connection
call docker image pull hello-world || ( echo ERROR: docker image pull is failed !!! & goto BadExit )
echo Done!
exit /b 0
:BadExit
echo ERROR !!!
exit /b 1