Запустите узел Docker без сопоставления портов - PullRequest
0 голосов
/ 08 января 2019

Я очень к новому Docker, поэтому, пожалуйста, извините меня, если это очень глупый вопрос. Поиск в Google не дал ничего, что я искал. У меня есть очень простой Dockerfile, который выглядит следующим образом

FROM node:9.6.1
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
COPY . /usr/src/app

RUN npm start
EXPOSE 8000

В контейнере приложение работает на порту 8000. Возможно ли получить доступ к порту 8000 без -p 8000:8000? Я просто хочу быть в состоянии сделать

docker run imageName

и получить доступ к приложению в моем браузере на localhost: 8000

1 Ответ

0 голосов
/ 08 января 2019

По умолчанию при создании контейнера он не публикует свои порты во внешнем мире. Чтобы сделать порт доступным для служб вне Docker или для контейнеров Docker, которые не подключены к сети контейнера, используйте флаг 100 --publish или -p. Это создает правило брандмауэра, которое сопоставляет порт контейнера с портом на хосте Docker.
Подробнее: Контейнерные сети - Опубликованные порты

Но вы можете использовать docker-compose, чтобы установить конфигурацию и легко запускать образы Docker.

  • Первая установка docker-compose. Установить Docker Compose
  • Второй создайте docker-compose.yml рядом с Dockerfile и скопируйте на них этот код

    version: '3'
    services:
      web:
        build: .
        ports:
         - "8000:8000"
    
  • Теперь вы можете запустить докер с помощью этой команды
    docker-compose up
    Если вы хотите запускать свои службы в фоновом режиме, вы можете передать флаг 10 -d (для «отдельного» режима) на docker-compose up -d и использовать `docker-compose ps, чтобы увидеть, что в данный момент работает.

Учебное пособие по Docker Compose

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