Полный цикл в digital

Container в Docker

Любой контейнер создается или разворачивается из образа, в соответствующий команде вы должны указать образ из которого хотите создать контейнер. Сначала Docker ищет образ Images локально на компьютере, если данного образа нет, поиск продолжается на hub.docker.com. Способ упаковать приложений и все его зависимостей в единый образ, называется контейнеризация. Каждый контейнер запускается в изолированной среде, не влияющей на основную операционную систему.

Команды для Container

  • ps просмотр контейнера
  • run создает новый контейнер и сразу включает его
  • create создает контейнер из выбранного образа
  • start активирует уже существующий контейнер
  • stop пытается остановить выбранный контейнер, отправив ему сигнал SIGTERM, требующий завершить всю активность и сохранить пользовательские данные. Если ответ занимает слишком много времени, то следом посылает сигнал SIGKILL, чтобы «убить» процесс без сохранения данных
  • exec запуск дополнительного процесса в контейнере
  • inspect подробнее рассказывает о выбранном контейнере
  • rm удаляет выбранный контейнер (он должен быть выключен, чтобы команда сработала)

Просмотр контейнера

Посмотреть все установленные Containery на данный момент:

docker ps

Посмотреть все установленные когда либо Containery:

docker ps -a

В вывод команды попадают следующие параметры:

  • ID то есть кодовое значение конкретного контейнера
  • IMAGE образ, используемый контейнером
  • COMMAND список команд, которые должны выполняться сразу после запуска
  • CREATED статус и время, когда контейнер бы создан (допустим, «35 минут назад»)
  • STATUS текущее состояние включен ли и время работы с последнего запуска. Тут может отображаться код выхода и время, когда он произошел
  • PORTS порты, используемые контейнером из списка
  • NAMES более понятные в сравнении с ID имена, которые можно точно так же использовать для исполнения команд или поиска

Создание контейнера

Создать и запустить Container на основе Images, сначала Docker ищет образ Images локально, потом в репозитории на hub.docker.com:

docker run название_ images

Создать и запустить Container на основе Images определенной версии (тег), сначала Docker ищет образ Images локально, потом в репозитории на hub.docker.com:

docker run название_ images:тег

Создать Container на основе Images, сначала Docker ищет образ Images локально, потом в репозитории на hub.docker.com:

docker create название_ images

Создать Container на основе Images определенной версии (тег), сначала Docker ищет образ Images локально, потом в репозитории на hub.docker.com:

docker create название_ images:тег

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

Запустить контейнер интерактивно в командной строке (контейнер активен пока не вышел из командной строки):

docker run -it название_ images

Выход в главное меню:

Ctrl + c

Выход в главное меню:

exit

Запуск контейнера в фоновом режиме

Запустить контейнер в фоновом режиме (контейнер активен пока не выключится Docker):

docker run -d название_ images

Маппинг портов в контейнере

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

Маппинг нужен для того, чтобы все запросы, проходящие через порт хоста, перенаправлялись в Docker-контейнер. Другими словами, сопоставление портов делает процессы внутри контейнера доступными извне.

Чтобы открыть доступ к какому-то сервису внутри контейнера, который работает на определенном порту необходимо открыть этот порт. Каждое приложение работает на своем порту который установлен по умолчанию, посмотреть информацию можно воспользовавшись командой docker inspect название_ images.

При запуске нового Docker-контейнера с помощью команды docker run можно сопоставить порты опцией --publish или -p:

Запустить контейнер интерактивно в командной строке на порту 1234 (1234:8080 перенаправление портов, за место 8080 указываем порт на котором работает то, что хотим запустить, информацию можно узнать командой docker inspect название_ images):

docker run -it -p 1234:8080 название_ images

Или с указанием тега:

docker run -it -p 1234:8080 название_ images:тег

Запустить контейнер в браузере на порту 1234 (1234:8080 перенаправление портов, за место 8080 указываем порт на котором работает то, что хотим запустить, информацию можно узнать командой docker inspect название_ images):

docker run -d -p 1234:8080 название_ images

Или с указанием тега:

docker run -d -p 1234:8080 название_ images:тег

Теперь доступ к приложению можно получить, используя порт 1234 на хосте:

http://localhost:1234

Маппинг томов в контейнере

Связанные папки появились с самых первых релизов. Это удобный инструмент, но у него есть ограничения. Этот тип управления данными позволяет связать папку на компьютере пользователя (то есть хосте, на котором установлен Docker Engine) и папку в контейнере. Работать в контейнере и на хосте с такой папкой можно одновременно, все изменения будут отображаться и там, и там. Механизм bind mounts подразумевает, что данные могут быть изменены в любое время как из подключённого контейнера, так и непосредственно на хосте.

Простая подмена исходной папки:

docker run -v ${PWD}:/usr/share/nginx/html nginx
  1. -v подключение тома
  2. ${PWD} путь к локальной папке (можно указывать за место переменной полный путь C:\Users\lisov\Desktop\docker)
  3. /usr/share/nginx/html путь к папке внутри контейнера
  4. nginx название images

Подмена исходной папки с маппингом портов:

docker run -v ${PWD}:/usr/share/nginx/html -p 8080:80 -d nginx
  1. -v подключение тома
  2. ${PWD} путь к локальной папке (можно указывать за место переменной полный путь C:\Users\lisov\Desktop\docker)
  3. /usr/share/nginx/html путь к папке внутри контейнера
  4. -p публикация порта
  5. 8080:80 порты
  6. -d запуск контейнера в браузере
  7. nginx название images

Подмена исходной папки с маппингом портов:

docker run -v C:\Users\lisov\Desktop\docker\nginx:/usr/share/nginx/html -p 8080:80 -d nginx
  1. -v подключение тома
  2. C:\Users\lisov\Desktop\docker путь к локальной папке
  3. /usr/share/nginx/html путь к папке внутри контейнера
  4. -p публикация порта
  5. 8080:80 порты
  6. -d запуск контейнера в браузере
  7. nginx название images

Кастомное имя контейнера

Запустить контейнер в браузере под своим кастомным именем:

docker run -d --name кастомное_имя название_ images

Запуск контейнера

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

docker start id_контейнера

Остановка контейнера

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

docker stop id_контейнера

Запуск дополнительного процесса в контейнере

Запуск дополнительного процесса возможен только в запущенном контейнере, если в контейнере нет активных процессов, Docker автоматически выключает такой контейнер. Для того чтобы был всегда активный процесс, нужно запускать контейнер в фоновом режиме используя команду docker run -d название_ images. Если контейнер запущен интерактивно, запускается два терминала в разных окнах, в первом запускается контейнер интерактивно при помощи команды docker run -it название_ images, во втором запускается дополнительный процесс командой docker exec -it id_контейнера bash. Запуск дополнительного процесса может использоваться для отладки, или перемещения внутри контейнера, для этого достыпны команты:

  • ls посмотреть папки и файлы
  • cd переход в папку
  • cat выводит содержимое файла
  • nl выводит содержимое файла с номерами строк

Синтаксис команды:

docker exec -it id_контейнера bash

Внутри дополнительного процесса, доступны полезные команды.

Посмотреть id контейнера:

hostname

Посмотреть ip контейнера:

hostname -I

Проверка доступа в интернет из контейнера:

ping 8.8.8.8

Посмотреть файловую систему контейнера:

ls

Выход в главное меню:

Ctrl + c

Выход в главное меню:

exit

Информация о контейнере

Посмотреть всю информацию о Containere:

docker container inspect id_контейнера

Удаление контейнера

Удаление определенного контейнера:

docker rm id_контейнера

Удаление всех контейнеров:

docker container prune

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг