Доступ к мосту docker с помощью docker exec

во-первых, я полностью n00b в docker, но я попал в проект, который на самом деле работает в docker, поэтому я читал об этом.

Моя проблема заключается в том, что я должен проверить свою среду разработки в мобильном устройстве(iOS). Я пытался получить доступ по ip docker, потому что это то, что я в основном делаю на своем компьютере. После нескольких неудачных попыток я заметил, что у меня есть доступ с сетевым мостом docker вместо хоста docker (по умолчанию).

Я уже определил свой Docker bridge (я думаю, что по умолчанию), но я понятия не имею, как запустить мой сервер с этой сетью, вы можете мне помочь?

Несколько важных замечаний:

  • Я использую MAC OS X El capitan ( 10.11.1 )
  • Устройство и mac находятся в той же сети wi-fi, и я могу получить доступ, используя регулярно localhost за пределами docker.
  • Следующие шаги для запуска сервера:

    1. cd gsat_grupo_5 / docker && docker-compose — P gsat_grupo_5 up-d
    2. docker exec-it gsatgrupo5_web_1 bash
    3. python manage.py runserver 0.0.0.0:8000
  • Когда я запускаю docker psмои выходные данные:

Введите описание изображения здесь

Выход my docker bridge:

    {
        "Name": "bridge",
        "Id": "1b3ddfda071096b16b92eb82590326fff211815e56344a5127cb0601ab4c1dc8",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "565caba7a4397a55471bc6025d38851b1e55ef1618ca7229fcb8f8dfcad68246": {
                "Name": "gsatgrupo5_mongo_1",
                "EndpointID": "471bcecbef0291d42dc2d7903f64cba6701f81e003165b6a7a17930a17164bd6",
                "MacAddress": "02:42:ac:11:00:05",
                "IPv4Address": "172.17.0.5/16",
                "IPv6Address": ""
            },
            "5e4ce98bb19313272aabd6f56e8253592518d6d5c371d270d2c6331003f6c541": {
                "Name": "gsatgrupo5_thumbor_1",
                "EndpointID": "67f37d27e86f4a53b05da95225084bf5146261304016809c99c7965fc2414068",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "a0b62a2da367e720d3a55deb7377e517015b06ebf09d153c6355b8ff30cc9977": {
                "Name": "gsatgrupo5_web_1",
                "EndpointID": "52687cc252ba36825d9e6d8316d878a9aa8b198ba2603b8f1f5d6ebcb1368dad",
                "MacAddress": "02:42:ac:11:00:06",
                "IPv4Address": "172.17.0.6/16",
                "IPv6Address": ""
            },
            "b3286bbbe9259648f15e363c8968b64473ec0a9dfe1b1a450571639b8fa0ef6f": {
                "Name": "gsatgrupo5_mysql_1",
                "EndpointID": "53290cb44cf5ed8322801d2dd0c529518f7d414b3c5d71cb6cca527767dd21bd",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

Если есть какой-то другой умный подход для доступа к моей среде в моем мобильном устройстве, я слушаю.

1 ответ

  1. У меня есть доступ с сетевым мостом docker вместо хоста docker(по умолчанию).

    Если у вас нет протокола, который делает что-то странное, например, подключается к устройству с сервера, обычно доступа <macip>:8000с вашего устройства было бы достаточно. Можно ли протестировать службу с других компьютеров?

    Если вам требуется прямой доступ к контейнерной сети, это немного сложнее при использовании Mac…

    Docker для Mac не поддерживает прямой доступ к сетям моста виртуальных машин Linux, в которых работают контейнеры.

    Docker Toolbox запускает виртуальную машину VirtualBox с образом виртуальной машины boot2docker. Можно было бы использовать это, но немного сложнее применить настраиваемую сетевую конфигурацию к виртуальной машине, которая настраивается и запускается с помощью docker-machineсредств.

    Plain Virtualbox, вероятно, ваш лучший вариант, запустив свою собственную виртуальную машину с установленным Docker.

    Добавьте два сетевых интерфейса в виртуальную машину в Virtualbox. Один для виртуальной машины и один для контейнера, поэтому они оба могут быть доступны в вашей основной сети.

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

    Второй мостовой интерфейс может быть присоединен к мосту docker, и тогда контейнеры на этом мосту будут в вашей домашней сети .

    На pre v1.10 версий Docker Pipework можно использовать для физического сопоставления интерфейса с контейнером .

    Существует определенная настройка интерфейса VirtualBox, необходимая для обоих методов, чтобы убедиться, что все это работает.

    Бродяга

    Vagrant может сделать настройку виртуальной машины немного проще и воспроизводимой.

    $ mkdir dockervm
    $ cd dockervm
    $ vagrant init debian/jessie64
    

    Vagrantfile конфигурация сети:

    config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
    config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
    
    config.vm.provider "virtualbox" do |v|
      v.customize ['modifyvm', :id, '--nictype1', 'Am79C973']
      v.customize ['modifyvm', :id, '--nicpromisc1', 'allow-all']
      v.customize ['modifyvm', :id, '--nictype2', 'Am79C973']
      v.customize ['modifyvm', :id, '--nicpromisc2', 'allow-all']
    end
    

    Обратите внимание, что эта виртуальная машина будет иметь 3 интерфейса. Первый интерфейс предназначен для использования Vagrant в качестве адреса управления и должен быть оставлен как есть.

    Запускать

    $ vagrant up
    $ vagrant ssh