Почему Google Compute Engine не запускает мой контейнер? - PullRequest
1 голос
/ 01 апреля 2020

Я могу сделать это успешно:

  • Объединить мое приложение в docker изображение
  • Создать это изображение в контейнере с помощью Google Cloud. Построить на pu sh, чтобы освоить
    • (Этот контейнер хранится в реестре, например, gcr.io/my-project/my-container)
  • Развернуть этот контейнер в Интернете с помощью Google Cloud Run
  • Посетите URL-адрес Cloud Run и перейдите на мой веб-сайт.

Сейчас я пробую более сложные сборки и думаю, что следующим шагом будет использование Google Compute Engine.

Для начала я просто пытаясь развернуть один экземпляр того же приложения, которое я развернул в Cloud Run:

  • Перейдите к Compute Engine > VM Instances
  • Введите основы, такие как имя экземпляра
  • Enter расположение моего контейнера в разделе «Образ контейнера»: gcr.io/my-project/my-container
    • (Кроме того, я нахожу подозреваемым, что интерфейс не предлагает селектор для существующих элементов реестра контейнеров здесь.)
  • Выберите «Разрешить трафик HTTP c» и «Разрешить HTTPS» Traffi c "
  • Нажмите« Создать »

GCE потребуется минута, чтобы создать его, а затем он показывает зеленую галочку и имя экземпляра и« Внешний IP: 35.238 » .xxx.xxx». Я захожу на этот URL в своем браузере и получаю ... "35.238.xxx.xxx отказался подключаться."

Для проверки я go вернусь на страницу GCE и выберу "S SH> Открыть в окне браузера "рядом с моим экземпляром, который открывает тип облачного терминала для машины.

В этом окне терминала введите ps и увидите, что ни один процесс не запущен. Контейнер Dockerfile оканчивается на CMD yarn start:prod, так что, я думаю, здесь этого не происходит.

Далее, я ls здесь и там и перемещаюсь вокруг, и вижу, что из моего каталога нет каталога /app Команда Dockerfile WORKDIR /app. Похоже, что мое приложение не только не загрузилось, но и контейнер не был скопирован в экземпляр виртуальной машины?

Что я делаю не так?

1 Ответ

0 голосов
/ 02 апреля 2020

Я решил последовать за Повторное развертывание контейнера на новом экземпляре виртуальной машины .

Пожалуйста, найдите мои шаги и команды ниже:

  1. создайте новую виртуальную машину, которая запускает Docker образ gcr.io/cloud-marketplace/google/nginx1:latest с сетевой тег http-server:

    $ gcloud compute instances create-with-container instance-3 --tags=http-server,https-server --container-image=gcr.io/cloud-marketplace/google/nginx1:latest
    Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/instance-3].
    NAME        ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
    instance-3  europe-west3-a  n1-standard-1               10.156.0.30  35.XXX.111.XXX  RUNNING
    
  2. создать новое правило брандмауэра:

    $ gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
    Creating firewall...⠹
    Created [https://www.googleapis.com/compute/v1/projects/test-prj/global/firewalls/default-allow-http].                   
    Creating firewall...done.                                                                                                                            
    NAME                NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
    default-allow-http  default  INGRESS    1000      tcp:80        False
    
  3. проверить текущие правила брандмауэра:

    $ nmap -Pn 35.XXX.111.XXX
    Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-02 12:04 CEST
    PORT   STATE SERVICE
    ...
    80/tcp open  http
    
  4. проверьте, работает ли NGINX в контейнере:

    $ curl -I http://35.XXX.111.XXX
    HTTP/1.1 200 OK
    Server: nginx/1.16.1
    ...
    
    $ curl http://35.XXX.111.XXX 
    ...
    <h1>Welcome to nginx!</h1>
    ... 
    

также через веб-браузер на http://35.XXX.111.XXX

проверить состояние контейнера:

$ gcloud compute ssh instance-3
...
instance-3 ~ $ docker ps
CONTAINER ID        IMAGE                                                                COMMAND                  CREATED             STATUS              PORTS               NAMES
...
a657c8871239        gcr.io/cloud-marketplace/google/nginx1:latest                        "/usr/local/bin/dock…"   14 minutes ago      Up 14 minutes                           klt-instance-3-uwtu

присоединить к контейнеру и запустить curl http://35.XXX.111.XXX в отдельном терминале:

instance-3 ~ $ docker attach a657c8871239
YY.YY.43.203 - - [02/Apr/2020:10:18:06 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.64.0" "-"
YY.YY.43.203 - - [02/Apr/2020:10:18:07 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.64.0" "-"

Я не обнаружил ошибок во время следования документации.

Для решения вашей проблемы :

  1. Сравните ваши шаги и команды с моими.
  2. Запустите тестовый Docker образ, следуя документации в вашем проекте.
  3. Попробуйте повторить шаги из документации с вашим собственным изображением.

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

...