Есть ли разница между Docker -Составить на Linux против Windows? - PullRequest
0 голосов
/ 04 апреля 2020

Я столкнулся с проблемой различий в развертывании между Linux и Windows. У меня есть следующий Docker -Compose файл:

version: '3'

services:

  elasticsearch:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.3.0
    ports:
      - 9200:9200
    volumes:
      - elasticsearch_data:/usr/share/elasticsearch/data
    environment:
      discovery.type: single-node
      cluster.routing.allocation.disk.threshold_enabled: "false"
    networks:
      logmetric:

  kibana:
    image: docker.elastic.co/kibana/kibana:6.3.0
    ports:
      - 5601:5601
    networks:
      logmetric:
    depends_on:
      - elasticsearch

  influxdb:
    image: influxdb
    ports:
      - 8086:8086
    volumes:
      # Data persistency
      - influxdb_data:/var/lib/influxdb
    networks:
      logmetric:

  grafana:
    image: grafana/grafana
    ports:
      - 3000:3000
    volumes:
    # Data persistency
    - grafana_data:/var/lib/grafana
    networks:
      logmetric:

volumes:
  elasticsearch_data:
  influxdb_data:
  grafana_data:

networks:
  logmetric:
    driver: 'bridge'

Когда я делаю Docker-Compose -f compose_logging.yaml up на Windows, все вращается нормально и все службы работают. Однако, если я перенесу этот файл yaml на мою машину linux (CentOS 8) и выполнил ту же команду, Kibana не сможет подключиться к поисковой базе данных elasti c. Я получаю ошибки:

kibana_1 | { "Типа": "журнал", "@ метки времени": "2020-04-03T21: 41: 42Z", "метки": [ "предупреждение", "elasticsearch", "Admin"], "PID": 1, "message": "Невозможно восстановить соединение: http://elasticsearch: 9200 / "} kibana_1 | { "Типа": "журнал", "@ метки времени": "2020-04-03T21: 41: 42Z", "метки": [ "предупреждение", "elasticsearch", "Admin"], "PID": 1, "message": "Нет живых соединений"}

Если я 'curl http://localhost: 9200 ' на машине linux, которая является базой данных эластичного поиска, я получаю ответ. Так что я верю, что все готово и ждет соединения. Ответ:

{
  "name" : "CQ7jdN0",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "swSAp0kUR7iQpqTpW3Iv_g",
  "version" : {
    "number" : "6.3.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "424e937",
    "build_date" : "2018-06-11T23:38:03.357887Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Если я выполню проверку в сети docker (docker inspect andy_logmetric), я получу следующее для сети LINUX:

[andy@Dev_Linux ~]$ docker inspect andy_logmetric
[
    {
        "Name": "andy_logmetric",
        "Id": "1d6544f05915e1673c5f541bcfe024fc3ad3d445cba43f0109a4bbd1e9faf9a0",
        "Created": "2020-04-03T15:59:24.036741117-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "091975207ec170c3c98223030add8f9b134f35b1aa05fd2016a31d985c73bc7f": {
                "Name": "andy_elasticsearch_1",
                "EndpointID": "b8263230459db25d873a79dff94e7d6b0a3cb8a2ed6bfff149559b54748e93cc",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            },
            "10a22cc7ef65897417f58e0928598066ad899f25d43e2429c903282f5e74cef2": {
                "Name": "andy_kibana_1",
                "EndpointID": "1f8998efd1c61a40b9876ffd6502f0ec371ec926b5cd1e7851bd6dd31074c1c5",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            },
            "542d6b764b084d99895f89c881aaf6fdf42edf63494edcd233dd35445706e3fc": {
                "Name": "andy_influxdb_1",
                "EndpointID": "4247f8fcb961e75fab6662133df9eb012a70707757db5ea6c37d7812c018f520",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "e6fead6035cdb7b60e81114f124fa87084b7eb6b92c9b3800e66072dbcc82ba3": {
                "Name": "andy_grafana_1",
                "EndpointID": "9a0c892237fe891ef6e714bf8292857c9e2d68ac0f6abd7a99eba6daf6971f3c",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "logmetric",
            "com.docker.compose.project": "andy",
            "com.docker.compose.version": "1.25.4"
        }
    }
]

Я получаю следующее для WINDOWS сети:

PS C:\Users\Michael> docker inspect docker-composefiles_logmetric
[
    {
        "Name": "docker-composefiles_logmetric",
        "Id": "d1bebbe4e73097fb6dcb4ab15750e2689e2e57da83e880b065063dcde055e576",
        "Created": "2020-04-03T21:24:14.531822721Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0820891e073e7e05cbcc7ab834cc599c640e6518bb36c848052b6a6c11b5c069": {
                "Name": "docker-composefiles_grafana_1",
                "EndpointID": "4e2c85709e89fd4b3bb609fc53eb4a4538b1fd93e51cfd73d8dc030d7707d6e3",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "8ada45e8a940102fe3145dee290af2da06d46d8bd465411da48bddf18d22167a": {
                "Name": "docker-composefiles_elasticsearch_1",
                "EndpointID": "5cc9b924eb46a7bc1bc07d3985779a1e0bf9ac4012c12333d6cbb96e3f78af2d",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            },
            "902bec9dc51e542589a3da1f13648a3434bc2d10b6c5755adfa545d813032c18": {
                "Name": "docker-composefiles_influxdb_1",
                "EndpointID": "a0e5e49121616590260b04932b6943601f06dc3200564f9155ce2f2281625cf9",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "c054af26402fcbee5c9e727b8a3e8b009fd258734f060e1fc9dc19ade5f7f3fa": {
                "Name": "docker-composefiles_kibana_1",
                "EndpointID": "3f57dcaefde331cfa7bdc862f45a0dc95829cb89604b28347d8c452f0f60f396",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "logmetric",
            "com.docker.compose.project": "docker-composefiles",
            "com.docker.compose.version": "1.25.4"
        }
    }
]

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

Если я нажму кибану с Chrome, на windows все будет нормально. На кибане linux он выводит меня на отключенный экран входа в систему, который говорит, что вы не можете войти в систему прямо сейчас и просматривать журналы. (сообщение об ошибке выше)

Сеть выглядит так же, но Kibana не может получить доступ к поисковой базе данных elasti c на Linux, но может на Windows.

. Версии docker на машине linux:

Docker version 19.03.8, build afacb8b
[andy@Dev_Linux ~]$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a

Версии docker на машине windows следующие:

Docker version 19.03.8, build afacb8b
PS C:\Users\Michael> docker-compose --version
docker-compose version 1.25.4, build 8d51620a

Не знаю не знаю, что еще искать. Есть мысли о том, что может происходить в среде Linux? 1047 *

1 Ответ

1 голос
/ 04 апреля 2020

Проверьте эту ссылку:

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker -prod-prerequisites

Я помню, что у меня были проблемы с elk на centos, и помогла установка параметров ядра на хосте.

Docker составы - это просто python сценарии, работающие над самой командой docker, поэтому проблема не в этом. Скорее всего, тот факт, что на windows вы, вероятно, используете docker -машина, которая является linux hyper-v vm, а на centos просто действительна linux, следовательно, разница.

You можно также проверить docker log [container name], чтобы увидеть, не выводит лиasticsearch предупреждение на консоль.

Еще одна проверка, которую вы можете попробовать, - это sh для контейнеров с помощью docker exec -it /bin/sh и проверка связи с другим контейнером. Docker использует сети, созданные внутри системы, поэтому, если в сети находится ваш Centos-сервер, есть su bnet с тем же адресом, что и у docker, механизм маршрутизации хоста может отправлять пакеты в «настоящую» сеть, а не в пределах docker один.

...