Рубрики
Uncategorized

Краткий курс по самым важным концепциям Docker и их командам

Ключ к изучению чего -либо — быстро понять самые важные концепции и то, как они идут вместе. Это верно и для Docker, так что давайте попробуем их изучить. Помечено с Docker, DevOps, новичками, учебным пособием.

Следуй за мной на Twitter , рад принять ваши предложения по темам или улучшениям/Крис

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

TLDR; Эта статья предназначена как создание этой серии из 5 частей на Docker. Идея состоит в том, чтобы передать, как неправильное мышление может помешать вам правильно изучить докер. Я передаю это, рассказывая свою историю о том, как я узнал Docker. Если вы здесь, чтобы выучить тонну Docker и не заинтересованы в том, чтобы услышать эту историю, она содержит несколько полезных команд, а затем нажмите на серию из 5 частей, так как это, вероятно, больше, чем вы имели в виду.

Все еще здесь? Отлично, сюжетное время.

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

Кроме того, мы освещаем эту шаткую первую неделю или, может быть, даже первый проект, в котором вы счастливы Копировать вставка Docker Commands. Тем не менее, вам действительно следует подумать об этом по -настоящему, особенно если вы хотите написать API или работать с более крупными решениями. Посмотрите на эту серию, которую я написал только для этого: 5 серии деталей на Docker Но пока давайте притворимся, что это пятница днем, так что продолжайте читать:)

Ресурсы

В итоге я упоминаю некоторые концепции в этой статье, которые стоит копаться дальше:

  • Быстрый обзор докера в облаке Если вы читаете это, вы ищете учебник на Docker, но в какой -то момент вам нужно знать, как вы можете продолжать использовать его в производственной среде. Эта производственная среда, вероятно, будет облаком в какой -то момент
  • Моя 5 -часть серия на Docker

Утро понедельника — это но сценарий

В порядке. Таким образом, вы приходите к своему новому проекту, и вы абсолютно ничего не знаете о Docker, и они говорят вам установить Docker. Вы направляетесь на эту страницу установить ссылку И в зависимости от того, какую ОС у вас есть различные компоненты.

На данный момент вы все еще не понимаете, что происходит, но у вас установлен Docker.

Издеваться или не издеваться, это вопрос?

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

docker run -d -p 8000:3000 --name my-container --link mysql-db:mysql chrisnoring/node

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

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

Отлично я подумал. Это то, для чего вы используете его, чтобы издеваться от конечных точек?

В то время я был очень сосредоточен на фронте, и в моей вселенной я просто хотел, чтобы народные люди и меня договорились о контракте, схеме JSON, которую мы все могли бы сказать «да», чтобы я мог работать в мире. Конечно, Docker намного больше, чем это, но в зависимости от того, какую роль вы играете в команде, вам может потребоваться некоторое время, чтобы понять ее ценность.

Я запустил это, и что -то пошло не так

Запуск этого скрипта означает, что он рано или поздно разорвается, и когда он выплюнет ошибку, вам нужно знать, почему он ломается. Это то, что случилось со мной, и это было мое введение в некоторые основные концепции и некоторые очень полезные команды. Итак, я не помню, был ли мой компьютер заснуть или что -то просто ошибочное, что снесло одну или несколько моих конечных точек. Это было вниз, и это не ответит. В этот момент мне сказали мои более опытные коллеги Docker,

Узнайте, какие контейнеры встают, а какие из них. Просто перезапустите невозможный контейнер.

Конечно, я был как вопросительный знак. Все, что я знал, это как скопировать сценарий в терминал. В этот момент коллега мне сказал, чтобы просто запустить эту команду:

docker ps

Тогда я увидел такой список:

Вы также можете запустить:

docker ps -a

Таким образом, вы можете получить более подробную информацию.

Затем Просто введите такой, чтобы поднять контейнер:

docker run -p 8000:3000 chrisnoring/node

Я как Уху, Копирование команд в Блокнот Анкет Я вдруг узнал, как перечислить несколько контейнеров, и поднять его, если его там не было. В этот момент я был как, какой контейнер?

Итак, в этот момент я узнал:

  • копировать вставить , Я мог бы просто скопировать вставить эту более длинную команду, которая все подняла
  • Docker PS , показывает все работающие контейнеры
  • Docker ps -a , показывает все контейнеры, даже существовали и Некоторая подробная информация
  • Docker Run , приносит контейнер с несколькими дополнительными командами, такими как порт, и название изображения

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

Я не понимаю, докер, ты можешь меня научить?

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

Спустя годы после этого я оказался в проекте, который был всем микросервисами, как везде. Docker был использован интенсивно, и, как обычно, я начал работать на фронте, а затем я решил, что хочу написать какую -то бэкэнд, потому что это Node.js и Express, и я знал оба эти технологии. В этот момент этого было недостаточно, чтобы просто скопировать вставьте некоторые команды. Мне нужно было запускать несколько конечных точек, а также сдерживать реальные данные, чтобы имитировать реальную среду.

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

Первое, что я сказал, было то, как это работает, как мы можем раскрутить наши услуги?

Просто введите Docker-Compose Up И все будет в порядке, был ответ

Я был как Эй .. Docker, Docker Compose, то же самое, другое, где я привык, чтобы все запустил этот длинный сценарий?

Рассказчик: Не было длинного сценария.

Я не понимаю, что это делает. Почему Docker сочиняет почему, а не что -то Docker, я сказал коллеге?

Давайте начнем с самого начала, сказал мой коллега. Давайте начнем с Docker с самого начала.

Основы

Первое, что вам нужно знать, это то, что есть вещь, называемая изображениями, контейнерами и Dockerfile Анкет Вы строите свои изображения из Dockerfile с Docker Build командование Dockerfile действует как рецепт для вашего изображения, какую ОС вам нужна, какие библиотеки для установки, какие переменные использовать и так далее. В этот момент он показал мне Dockerfile Анкет Конечно, я точно не помню, как это выглядело, но я покажу вам нечто подобное:

// Dockerfile

FROM node:latest

WORKDIR /app

COPY . .

ENV PORT=3000

RUN npm install

EXPOSE 3000

ENTRYPOINT ["node", "app.js"]

Здесь вы можете увидеть, как мы сначала выбираем изображение ОС, называемое узлом, с От командование Это Ubuntu с установленным node.js. Он будет вытянут из Docker Hub, который является центральным репозиторием:

Далее накладывает рабочий каталог в приложении с WorkDir.

После этого мы копируем файлы, откуда мы находимся в контейнере Docker с копией. После этого мы устанавливаем переменную среды с Env.

Далее мы вызовыте команду в терминале с Run, которая в данном случае устанавливает каждую библиотеку, указанную в файле Package.json.

Затем, чтобы продолжить, мы открываем порт 3000, чтобы мы могли общаться с контейнером снаружи, с разоблачением.

Наконец, мы запускаем программу с IntryPoint.

Это было Dockerfile , давайте построим наше изображение. Мы делаем это с Docker Build , вот так:

docker build -t chrisnoring/node-app:latest .

Выше сделано две вещи, -t Теги изображения с именем Chrisnoring/node-app: последний и во -вторых, мы указываем, где наш Dockerfile находится с Анкет , в конце. Таким образом, на данный момент он читает через Dockerfile, вытягивает ОС и начинает добавлять каждую команду в качестве слоя поверх изображения. Мы называем это слоистой файловой системой. Мы можем увидеть это в действии ниже:

Мы видим две вещи, которые указывают на это, одна — Шаг 1/7 Анкет Он выполняет каждую команду в DockerFile в качестве шага. После этого он начинает говорить Удаление промежуточного контейнера ... . Это означает, что он создает временный контейнер с предыдущего слоя изображения (ваша последняя инструкция). Затем он начинает удалять каждый из слоев, когда это сделано с ними. Последний слой помечен именем, которое вы даете в Docker Build Анкет

Запустить/остановить контейнер

Хорошо, теперь, когда у нас есть изображение, у нас есть что -то, что содержит все, что нам нужно, ОС, файлы ENV, наше приложение и так далее. Но нам нужно создать контейнер с нашего изображения. Мы делаем это, позвонив:

docker run -p 8005:3000 chrisnoring/node-app

Вышеуказанное, это сначала создать отверстие между нашей стороной и контейнером с -p и синтаксис выглядит как -п [наш порт]: [контейнерный порт] Анкет Тогда мы говорим, какое изображение, то есть Chrisnoring/node-app Анкет

Это поднимает контейнер, с которым мы можем ориентироваться из порта 8005 , вот так:

ОК, мы узнали о Docker Run А как насчет начала и остановки?

Ну, если у вас уже есть контейнер, который работает и работает, вы можете остановить его с Docker Stop [Container Id] Анкет Самый простой способ — найти идентификатор контейнера с Docker PS . Вам не нужно вводить полный идентификатор контейнера, только 3-4 первых символов. Это должно сбить ваш контейнер. На данный момент он все еще существует, поэтому вы легко начинаете с Docker Start [идентификатор контейнера] Анкет

Docker Compose

Итак, вы научили меня основам Docker с изображениями, контейнерами и Dockerfiles. Как насчет этого Docker Compose?

Ну, Docker Compose — это инструмент, который вы можете использовать, когда у вас есть много контейнеров. Чтобы использовать его, вам нужно определить Docker-compose.yml Анкет Это то, где вы указываете все свои услуги, как их построить, как они связывают, какие переменные им нужны и так далее. Вы по -прежнему используете DockerFiles, хотя для каждого сервиса, но Docker Compose — это способ выполнить вещи на группе изображений и контейнеров.

Этот разговор проводился в течение многих недель И я многому научился в процессе …:)

Резюме

Как видите, я когда -то был в месте, где я впервые не использовал Docker вообще. Затем я пришел, чтобы использовать его в качестве просто команд, которые я получил копирование, и, наконец, я увидел свет и понял, что он мне нужен. Что приведет к этому до 5 -й части руководства в конечном итоге.

5 части Docker Series

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

Оригинал: «https://dev.to/azure/a-crash-course-to-the-most-important-docker-concepts-and-their-commands-4eio»