Как использовать пользовательские стеки Eclipse Che на узле рабочей станции?

vsenko спросил: 27 ноября 2017 в 05:43 в: eclipse-che

Интересно, как удобно использовать пользовательские стеки Eclipse Che при запуске Che на рабочей станции?

Мне очень нравится концепция Eclipse Che: иметь отдельные рабочие пространства Che (контейнеры Docker) для разных среды разработки с установленными соответствующими инструментами. Рабочие пространства инициализируются из стеков Че. Стеки могут быть определены как изображения Docker или динамически созданы с использованием файлов Dockerfiles или Docker composer.

Чего я хочу добиться:

  • [done] установить Eclipse Che на моей рабочей станции
  • [done] создавать собственные настраиваемые стеки с использованием синтаксиса Dockerfile или локальных образов Docker (изображения на моей рабочей станции отсутствуют в репозитории Docker)
  • [done] возможность безболезненно перезагружать / выключать мою рабочую станцию ​​
  • [done] иметь разумное время запуска рабочей области

Я уже пробовал:

1. Определение стека по рецепту (Dockerfile)

  1. Я написал свой собственный Dockerfile для тестирования:

    FROM eclipse/stack-base:ubuntuRUN sudo apt-get update
    RUN sudo apt-get install -y apt-transport-httpsRUN sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
    RUN echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.listRUN curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -RUN sudo apt-get install -y nodejs build-essential mongodb-orgRUN sudo apt-get clean
    RUN sudo apt-get -y autoremove
    RUN sudo apt-get -y clean
    RUN sudo rm -rf /var/lib/apt/lists/*
    

    Он основан на Изображение eclipse/stack-base:ubuntu, как это предлагается в документации

  2. Затем я создал стек Che, используя Build Stack From Recipe .

  3. После этого я создал рабочее пространство на основе этого стека, он функционирует правильно.

Этот метод имеет существенный недостаток: после перезагрузки моей рабочей станции Че перестраивает рабочее пространство из Dockerfile! Пока Dockerfile содержит команды установки, этот процесс занимает значительное время и, очевидно, требует подключения к Интернету.

2. Стек на основе локального образа Docker

  1. Я использовал свой собственный Dockerfile для локального построения образа Docker:

    sudo docker build -f custom.dockerfile -t my-custom-image .

  2. Затем я создал два стека Che со следующими конфигурациями:

    {
      "scope": "general",
      "description": "Custom1",
      "tags": [],
      "workspaceConfig": {
        "environments": {
          "default": {
            "recipe": {
              "contentType": "text/x-dockerfile",
              "type": "dockerfile",
              "content": "FROM my-custom-image\n"
            },
            "machines": {
              "dev-machine": {
                "servers": {},
                "agents": [
                  "org.eclipse.che.ws-agent",
                  "org.eclipse.che.ssh",
                  "org.eclipse.che.terminal",
                  "org.eclipse.che.exec"
                ],
                "attributes": {
                  "memoryLimitBytes": "2147483648"
                }
              }
            }
          }
        },
        "defaultEnv": "default",
        "commands": [],
        "projects": [],
        "name": "default",
        "links": []
      },
      "components": [],
      "creator": "che",
      "name": "my-custom-1",
      "id": "stackx6hs410a9awhu299"
    }{
      "scope": "general",
      "description": "Custom2",
      "tags": [],
      "workspaceConfig": {
        "environments": {
          "default": {
            "recipe": {
              "contentType": "application/x-yaml",
              "type": "compose",
              "content": "services:\n dev-machine:\n  image: my-custom-image\n"
            },
            "machines": {
              "dev-machine": {
                "servers": {},
                "agents": [
                  "org.eclipse.che.exec",
                  "org.eclipse.che.terminal",
                  "org.eclipse.che.ws-agent",
                  "org.eclipse.che.ssh"
                ],
                "attributes": {
                  "memoryLimitBytes": "2147483648"
                }
              }
            }
          }
        },
        "defaultEnv": "default",
        "commands": [],
        "projects": [],
        "name": "custom",
        "links": []
      },
      "components": [],
      "creator": "che",
      "name": "my-custom-2",
      "id": "stack55s3tso56cljsf30"
    }
    
  3. Рабочие пространства на основе этих стеков не работают создать с ошибками:

    Could not start workspace my-custom-1. Reason: Start of environment 'default' failed. Error: Docker image build failed. Image id not found in build output.

    Could not start workspace my-custom-2. Reason: Start of environment 'default' failed. Error: Can't create machine from image. Cause: Error response from docker API, status: 404, message: repository my-node-mongo not found: does not exist or no pull access

выглядит как Че не видит изображения Docker на моей рабочей станции.

Так что вопрос: есть ли способ достичь моих целей с Че? Или Че мне не подходит?

Обновление 1

3. Настройка локального реестра Docker (https://docs.docker.com/registry/)

  1. Настройка локального реестра Docker: https://docs.docker.com/ реестр / развертывание /

  2. Используйте Dockerfile для создания собственного образа

    sudo docker build -f custom.dockerfile -t my-custom-image .

  3. Отметьте его и отправьте в локальный реестр

    sudo docker tag my-custom-image localhost:5000/my-custom-image
    sudo docker push localhost:5000/my-custom-image
    

  4. Создайте собственный стек, используя изображение localhost:5000/my-custom-image

Этот подход работает, но имеет определенный недостаток: необходимость поддерживать реестр докеров.

В любом случае, он работает, и я могу установить два флажка в мой список желаний.

0 ответов