Как соединить две локальные машины через Docker Swarm? - PullRequest
1 голос
/ 11 апреля 2019

Я хотел бы протестировать некоторые функции Docker Swarm, и для этого у меня есть Windows PC и MacBook Pro, оба в моей частной сети.

Я установил Docker для Windows (Windows 10 Pro, используя Linuxконтейнеры), а также Docker для Mac.

Затем я запустил их оба и также настроил свой маршрутизатор, чтобы разрешить порты, необходимые для TCP и UDP:

  • Порт 2377 TCP для узласвязь
  • Порт 7946 TCP / UDP для обнаружения контейнерной сети.
  • Порт 4789 UDP для входной сети контейнера.

Также я деактивировал брандмауэр на моем компьютереи на моем mac.

Затем я запустил docker swarm init на моем macbook, который дал мне токен соединения.

На моем компьютере с Windows я ввел эту команду соединения в консоли и ....... это не удалось!

Я получил сообщение об ошибке, которое заканчивается "... соединение отказано".

Итак, вы можете дать мне несколько советов или ссылки о том, как правильно подключитьсяна локальные машины через Docker Swarm?Я ЛЮБЛЮ тестировать его и использовать для локальной разработки и тестирования моих приложений.спасибо!

Информация Docker от Mac

    $ docker info
    Containers: 2
     Running: 2
     Paused: 0
     Stopped: 0
    Images: 185
    Server Version: 18.03.1-ce
    Storage Driver: overlay2
     Backing Filesystem: extfs
     Supports d_type: true
     Native Overlay Diff: true
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    Plugins:
     Volume: local
     Network: bridge host macvlan null overlay
     Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
    Swarm: active
     NodeID: v3fhiinezmdbbn98l0s6bgqzo
     Is Manager: true
     ClusterID: o9mcdlgtq37t5r86ganupstez
     Managers: 1
     Nodes: 1
     Orchestration:
      Task History Retention Limit: 5
     Raft:
      Snapshot Interval: 10000
      Number of Old Snapshots to Retain: 0
      Heartbeat Tick: 1
      Election Tick: 10
     Dispatcher:
      Heartbeat Period: 5 seconds
     CA Configuration:
      Expiry Duration: 3 months
      Force Rotate: 0
     Autolock Managers: false
     Root Rotation In Progress: false
     Node Address: 192.168.65.3
     Manager Addresses:
      192.168.65.3:2377
    Runtimes: runc
    Default Runtime: runc
    Init Binary: docker-init
    containerd version: 773c489c9c1b21a6d78b5c538cd395416ec50f88
    runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
    init version: 949e6fa
    Security Options:
     seccomp
      Profile: default
    Kernel Version: 4.9.87-linuxkit-aufs
    Operating System: Docker for Mac
    OSType: linux
    Architecture: x86_64
    CPUs: 4
    Total Memory: 4.095GiB
    Name: linuxkit-025000000001
    ID: 2D57:Q3QP:6UZ2:S6JV:WXLG:JN4H:TR6G:V3C3:P6ZP:2ENA:L7ES:OIJD
    Docker Root Dir: /var/lib/docker
    Debug Mode (client): false
    Debug Mode (server): false
    HTTP Proxy: docker.for.mac.http.internal:3128
    HTTPS Proxy: docker.for.mac.http.internal:3129
    Registry: https://index.docker.io/v1/
    Labels:
    Experimental: false
    Insecure Registries:
     127.0.0.0/8
    Live Restore Enabled: false

Информация Docker из Windows

    $ docker info
    Containers: 0
     Running: 0
     Paused: 0
     Stopped: 0
    Images: 0
    Server Version: 18.09.2
    Storage Driver: overlay2
     Backing Filesystem: extfs
     Supports d_type: true
     Native Overlay Diff: true
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    Plugins:
     Volume: local
     Network: bridge host macvlan null overlay
     Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
    Swarm: inactive
    Runtimes: runc
    Default Runtime: runc
    Init Binary: docker-init
    containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
    runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
    init version: fec3683
    Security Options:
     seccomp
      Profile: default
    Kernel Version: 4.9.125-linuxkit
    Operating System: Docker for Windows
    OSType: linux
    Architecture: x86_64
    CPUs: 3
    Total Memory: 7.768GiB
    Name: linuxkit-00155d674805
    ID: S7LD:PA6I:QGZR:YFQH:BR62:JS5C:DZLS:C6O3:RZUL:7ZXE:PRI6:HPRD
    Docker Root Dir: /var/lib/docker
    Debug Mode (client): false
    Debug Mode (server): true
     File Descriptors: 22
     Goroutines: 46
     System Time: 2019-04-11T13:28:11.3484452Z
     EventsListeners: 1
    Registry: https://index.docker.io/v1/
    Labels:
    Experimental: false
    Insecure Registries:
     127.0.0.0/8
    Live Restore Enabled: false
    Product License: Community Engine

Dockerвывод команды swarm join

$ docker swarm join --token SWMTKN-1-5rp7ownwv3ob27vl52ogo8z6d3mbxasdfasdfsadfkrf8hqjk1b5-bi2p5u7i7blk5wepw389sba0w 192.168.x.x:2377
Error response from daemon: rpc error: code = Unavailable desc = all 
SubConns are in TransientFailure, latest connection error: 
connection error: 
desc = "transport: Error while dialing dial tcp 192.168.x.x:2377: 
connect: connection refused"

1 Ответ

1 голос
/ 11 апреля 2019

Проблема заключается в том, что не все докеры для Mac и Windows с контейнерами Linux являются «настоящими» докерами. Оба используют виртуальные машины с ОС Linux, где работает настоящий механизм докера. Если я прав, 192.162.65.3 - это не IP вашего Mac, а IP vm в какой-то виртуальной сети Mac.

Основываясь на этой статье https://docs.docker.com/docker-for-mac/docker-toolbox/ и этом предложении "Также обратите внимание, что Docker Desktop для Mac не может перенаправлять трафик в контейнеры, поэтому вы не можете напрямую получить доступ к открытому порту на работающем контейнере с хост-машины «. Соединить Mac и Windows в контейнерах Linux может быть нелегко.

Я бы порекомендовал для тестирования либо получить несколько облачных виртуальных машин, либо в Windows вы можете использовать команду docker-machine для порождения нескольких виртуальных машин Linux, на которых вы можете настроить локальный рой для тестирования желаемых функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...