2015-11-17 2 views
1

Я стараюсь настроить докеры на моем виртуальном кластере. Во-первых, я пытаюсь установить рой-мастер на localhost с докер-машиной.Докер-машина и рой за прокси

Проблема в том, что машине необходимо использовать прокси для доступа к токену обнаружения.

Сначала я прошу маркер с созданием рой. Чтобы сделать это, я создал этот файл:

$cat /etc/systemd/system/docker.service.d/http_proxy.conf 
[Service] 
Environment="HTTP_PROXY=http://**.**.**.**:3128/" "HTTPS_PROXY=http://**.**.**.**:3128/" "NO_PROXY=localhost,127.0.0.1,192.168.2.100,192.168.2.101,192.168.2.102,192.168.2.103,192.168.2.104,192.168.2.105,192.168.2.106,192.168.2.107,192.168.2.108,192.168.2.194,192.168.2.110" 

Я перезапустил демона, и я могу вытащить роя изображение:

$docker run -e "http_proxy=http://**.**.**.**:3128/" -e "https_proxy=http://**.**.**.**:3128/" swarm create 
b54d8665e72939d2c611d8f9e99521b4 

После того как я хочу, чтобы создать мастер роя:

$docker-machine create -d generic --generic-ip-address localhost \ 
--engine-env HTTP_PROXY=http://192.168.254.10:3128/ \ 
--engine-env HTTPS_PROXY=http://192.168.254.10:3128/ \ 
--engine-env NO_PROXY=localhost,192.168.2.102,192.168.2.100 \ 
--swarm --swarm-master --swarm-discovery \ 
token://b54d8665e72939d2c611d8f9e99521b4 swarm-master 

Результат:

Running pre-create checks... 
Creating machine... 
Waiting for machine to be running, this may take a few minutes... 
Machine is running, waiting for SSH to be available... 
Detecting operating system of created instance... 
Provisioning created instance... 
Copying certs to the local machine directory... 
Copying certs to the remote machine... 
Setting Docker configuration on the remote daemon... 
Configuring swarm... 
To see how to connect Docker to this machine, run: docker-machine env swarm-master 

И у меня есть ошибки в логах присоединения и управления контейнером (я думаю, что ошибка приходит потому, что контейнеры не заботиться о прокси):

$docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS        NAMES 
6fbf967cdb60  swarm:latest  "/swarm join --advert" 53 seconds ago  Up 52 seconds  2375/tcp       swarm-agent 
8b176116989e  swarm:latest  "/swarm manage --tlsv" 54 seconds ago  Up 53 seconds  2375/tcp, 0.0.0.0:3376->3376/tcp swarm-agent-master 

$docker logs 6fbf967cdb60 
time="2015-11-17T19:37:21Z" level=info msg="Registering on the discovery service every 20s..." addr="localhost:2376" discovery="token://b54d8665e72939d2c611d8f9e99521b4" 
time="2015-11-17T19:37:41Z" level=error msg="Post https://discovery.hub.docker.com/v1/clusters/b54d8665e72939d2c611d8f9e99521b4?ttl=60: dial tcp: lookup discovery.hub.docker.com on 8.8.4.4:53: read udp 172.17.0.3:46576->8.8.4.4:53: i/o timeout" 

$docker logs 8b176116989e 
time="2015-11-17T19:37:20Z" level=info msg="Listening for HTTP" addr="0.0.0.0:3376" proto=tcp 
time="2015-11-17T19:37:40Z" level=error msg="Discovery error: Get https://discovery.hub.docker.com/v1/clusters/b54d8665e72939d2c611d8f9e99521b4: dial tcp: lookup discovery.hub.docker.com on 8.8.4.4:53: read udp 172.17.0.2:44241->8.8.4.4:53: i/o timeout" 

Является ли это ошибка родового драйвера?

Некоторые другие сведения:

# docker version 
Client: 
Version:  1.9.0 
API version: 1.21 
Go version: go1.4.2 
Git commit: 76d6bc9 
Built:  Tue Nov 3 17:29:38 UTC 2015 
OS/Arch:  linux/amd64 

Server: 
Version:  1.9.0 
API version: 1.21 
Go version: go1.4.2 
Git commit: 76d6bc9 
Built:  Tue Nov 3 17:29:38 UTC 2015 
OS/Arch:  linux/amd64 

# docker info 
Containers: 2 
Images: 8 
Server Version: 1.9.0 
Storage Driver: aufs 
Root Dir: /var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 12 
Dirperm1 Supported: true 
Execution Driver: native-0.2 
Logging Driver: json-file 
Kernel Version: 3.16.0-4-amd64 
Operating System: Debian GNU/Linux 8 (jessie) 
CPUs: 2 
Total Memory: 1000 MiB 
Name: swarm-master 
ID: 6SDE:CQRA:NM6W:TY2H:4DPB:O4YO:IGRT:33AA:OKQP:M6UK:EMSR:H4WR 
WARNING: No memory limit support 
WARNING: No swap limit support 
Labels: 
provider=generic 

Спасибо :)

+1

Возможно, было бы лучше использовать альтернативный бэкэнд? Консул, etcd или zookeeper могут работать локально. Фактически обнаружение на основе токенов не поддерживает новые функции сетевой докеры в версии 1.9. (См. Https://docs.docker.com/swarm/discovery/) –

+0

Я попытался использовать статический список с узлами '' '--swarm-discovery: //192.168.2. [0:10]: 2375, localhost: 2375 «' '' Но у меня есть эта ошибка: '' 'time =" 2015-11-18T08: 49: 40Z "level = ошибка msg =" Получить https: // localhost: 2375/v1. 15/info: dial tcp [:: 1]: 2375: getsockopt: connection отказано «' '' – Ludo

+1

У вас есть агент рой, работающий на каждом узле? Запуск на порт 2375? Это объясняет отсутствие связи. Кроме того, в документации указано, что вам нужен консул, etcd или zookeeper для поддержки новой сетевой модели. Документация содержит пример консула: https://docs.docker.com/engine/userguide/networking/get-started-overlay/ –

ответ

1

Проблема заключалась в том, что это не представляется возможным использовать Docker машину для создания роя-мастер на той же машине. Поэтому я создал две виртуальные машины, одну с докер-машиной (и mh-keystore) и еще одну для мастера рой.

Создание Mh-хранилище ключей на локальном хосте:

$docker-machine create -d generic --generic-ip-address localhost mh-keystore 
$docker $(docker-machine config mh-keystore) run -d \ 
    -p "8500:8500" \ 
    -h "consul" \ 
    progrium/consul -server -bootstrap 
$docker ps 

Установка роя-мастера к другой машине

$ docker-machine create \ 
-d generic --generic-ip-address 192.168.2.100 \ 
--swarm --swarm-image="swarm" --swarm-master \ 
--swarm-discovery="consul://192.168.2.103:8500" \ 
swarm-master 

Создание агента:

$ docker-machine create \ 
-d generic --generic-ip-address 192.168.2.102 \ 
--swarm \ 
--swarm-discovery="consul://192.168.2.103:8500" \ 
swarm-agent-00