Рубрики
Uncategorized

Обучение использовать Docker

Это второй пост в моей серии под названием «Demystingifising Docker». Прочитав первый пост, я … помеченный новичками, учебником, DevOps, Docker.

Demystingificing Docker (6 серий части)

Это второй пост в моей серии под названием «Demystingifising Docker». Прочитав первый пост, не является необходимостью, я рекомендую вам проверить это, как это объясняет «что» Docker. В этом посте мы собираемся грязные руки и на самом деле начать использовать Docker.

Я собираюсь структурировать эту статью в порядке того, как можно вообще продолжать использование упомянутых команд. Но прежде чем мы начнем с того, что есть два важных ключевых концепция, которые вы должны знать о том, что это существо, образы и контейнеры.

Самый простой способ объяснить эти два термина, это одна линия, «изображения являются чертежами для контейнеров».

Образ докера построен из вашего кода и устанавливает все зависимости, необходимые для его запуска. Изображения — это «подвижная» часть в «изолированных подвижных средах», о которой я говорил в моем предыдущем посте. Эти изображения затем также используются для запуска контейнеров.

Итак, чтобы поставить его просто контейнеры — это не что иное, как бежать экземпляры изображений. Отсюда нет трудно сделать вывод, что вы можете создавать несколько контейнеров с того же изображения.

Теперь вы можете удивить, откуда эти изображения? Ну, изображения могут быть загружены с сайтов, таких как Docker Hub Или они могут быть приспособлены для вашего конкретного приложения, используя DockerFile.

Теперь, когда у вас есть справедливая идея о том, какие изображения дают мне показать вам, как вы можете создавать свои собственные изображения. Для этого вам нужно будет написать DockerFile. Допустим, у вас есть простой сервер (в нашем случае aDe.js приложение), и вы хотите доблокировать его. В корневой папке вашего приложения добавьте файл и назовите его Dockerfile. (без расширений). Теперь вставьте следующий код в нем:

FROM node

COPY . .

RUN npm install

EXPOSE 80

CMD ["node", "server.js"]

Теперь давайте проанализируем этот докер, который поможет вам понять основной способ написания докерафила. Не все DockerFiles будут выглядеть так, но после понимания этого у вас будет прочная основа, и сможете построить это для ваших конкретных случаев использования. Давайте начнем:

Вы должны помнить, что это DockerFile содержит информацию, необходимую для создания нашего изображения. Мы будем использовать это изображение для запуска контейнеров, но это на более позднем этапе. Теперь это приложение для наших требует узла и NPM, чтобы запустить. Теоретически, мы можем написать код для получения узла и NPM в этом DockerFile, но есть гораздо простой способ, и то есть основывая это изображение нашего на официальном изображении узла.

Официальный образ узла заботится обо всех наших потребностях и даст нам среду, в которой узел и NPM будут доступны для нас для использования. От узла Команда делает именно это. Это изображение узела, которое мы выделяем, поставляется из докера. Поэтому, когда вы создаете изображение для вашего приложения, первый шаг будет тянуть это изображение узла из Docker Hub.

После выталкивания этого изображения мы используем Копировать. Отказ Команда для копирования нашего кода с локальной машины в корневую папку в файловой системе контейнера. Первый Отказ используется для каталога, где присутствует DockerFile (какое расположение кода, которое мы хотим скопировать) и второй Отказ это пункт назначения в файловой системе контейнера.

Несколько вещей, чтобы отметить здесь:

  1. Контейнер и локальная машина имеют отдельную файловую систему, и наш код должен присутствовать в файловой системе контейнера для контейнера, чтобы иметь возможность запускать наше приложение. Следовательно, мы копируем это там.
  2. Обратите внимание, как я говорю о файловой системе контейнера, а не в «файловой системе изображения». Это потому, что изображение сама по себе никогда ничего не будет бежать. Это всегда контейнер (на основе изображения), который будет работать, поэтому не имеет смысла говорить о файловой системе в случае изображения.

После копирования кода мы хотим установить зависимости, и это сделано с использованием NPM установить Команда для Node.js приложений. Итак, мы просто используем БЕГАТЬ Ключевое слово, за которым следуют наша фактическая команда, чтобы получить все зависимости для установки.

Теперь давайте предположим, что наше приложение Node.js обнажает порт 80. Но этот порт 80 будет на нашем контейнере Docker и не будет доступен вне его. Так вы просто не сможете пойти на localhost: 80 и получить доступ к нему. Поэтому мы Выставлять Этот порт 80, так что мы можем легко получить его из нашего контейнера.

И, наконец, после настройки всего этого мы запускаем команду Node Server.js Чтобы запустить сервер. Способ сделать это с использованием CMD [«Узел», «Server.js»] синтаксис. Теперь вам может быть интересно, что оба NPM Start. и Node Server.js Есть команды, которые мы работали в нашем терминале, так почему способ указания их так отличаться в DockerFile?

Ну, это так, потому что Беги используется в качестве части шага здания изображения, тогда как CMD Это то, что мы хотим бежать в нашем контейнере. Чтобы поставить его в даже более простые термины, мы не хотим бегать Node Server.js Когда вы когда-либо создаете наше изображение, образующуюся до DockerFile вместо этого, мы хотим запустить Node Server.js Когда мы начнем контейнер, это то, где эти два ключевых слова Беги и CMD отличаются функциональностью. Очень важно понимать, что построение изображения не совпадает с управлением контейнером. Изображения построены с другой командой и контейнерами выполняются с использованием встроенного изображения с другой командой, поскольку я покажу вас дальше.

Теперь, когда у нас есть Dockerfile для нашего приложения, давайте построить наше изображение и начать первый контейнер.

Откройте терминал в каталоге, где присутствует ваш DockerFile и запустить:

docker build .

Это команда, которая создаст ваше изображение. Как только это сделано наращивание вашего изображения, вы должны увидеть длинный вывод, но в конце этого будет строка: Успешно построен ABCD1234 , где вместо ABCD1234 Вы увидите фактический идентификатор изображения. Это то, что вы будете использовать для раскрутки контейнера от этого конкретного изображения. Прежде чем делать это, позвольте мне вернуться к портам и разоблачать их.

Как и я заявил выше, что поскольку наш сервер Node.js открывается на порту 80 внутри контейнера, нам нужно сделать этот порт доступным вне контейнера, чтобы иметь возможность использовать наше приложение. Так что мы использовали Выдержать 80 Инструкция в нашем докерефиле. Но делать только этого недостаточно. Нам также необходимо указать, какой порт в нашей локальной системе мы хотим использовать для этого соединения с портом 80 контейнера при запуске контейнера. Чтобы сделать это немного более четкой, давайте посмотрим на команду, которую мы работаем, чтобы начать наш контейнер:

docker run -p 3000:80 abcd1234

Теперь, если вы отправляете запросы на localhost: 3000 Из вашего браузера или использования какого-либо другого инструмента вы должны получить ответ на этот сервер Node.js отправляет. Мы просто использовали Docker Run. ABCD1234. Мы бы не смогли бы взаимодействовать с нашим сервером, так как мы не указывали, какой порт мы собираемся использовать для доступа к порту 80 контейнера. Флаг делает это для нас.

Мы могли бы выбрать, чтобы открыть любой порт нашей машины для подключения с портом 80 контейнера. Например, если мы хотели использовать порт 4000 для приложения Node.js, мы бы сделаем, Docker Run -P 4000: 80 ABCD1234 Отказ

Наконец, я хотел бы завершить это, показывая вам, как вы можете перечислить ваши контейнеры и прекратить под управлением контейнеров.

То

docker ps

Команда покажет вам все беговые контейнеры. После запуска Docker PS Вы можете взять имя или идентификатор контейнера и запустить

docker stop container_name_or_id

чтобы остановить этот конкретный контейнер. Если вы хотите увидеть все контейнеры, которые вы когда-либо бегаете, а не только в данный момент контейнеры, которые вы можете использовать эту команду:

docker ps -a

Это было от моей стороны, и я надеюсь, что теперь вам немного удобнее с фактически «с использованием» Docker. Если у вас есть какие-либо сомнения, не стесняйтесь обращаться ко мне, и я сделаю все возможное, чтобы ответить на ваши запросы. Есть много докера, и эта статья ни в коем случае не охватывает все о строительстве изображений и беговых контейнеров. Но это определенно дает вам хорошо нужен прочный старт. Я буду писать такие статьи на других «основных» концепциях докера, поэтому, если вам понравилось, я бы посоветовал, чтобы вы слегка смотрели на следующие.

Спасибо за чтение!:)

Обратитесь к мне на Twitter поделиться своим отзывом или для любых запросов. Я был бы более чем рад помочь!

Demystingificing Docker (6 серий части)

Оригинал: «https://dev.to/rinkiyakedad/learning-to-use-docker-298b»