Docker вступление

docker

docker

Docker вступление

Установка Docker и help

Показывает информацию о установленном докере (пути, версия и т.д.)

В Docker есть весьма удобная краткая справочная система, а именно, чтобы узнать какие есть у него есть ключи, нужно выполнить:

Работа с образами

А если нужно узнать информацию о параметрах, передаваемых ключам (к примеру, images), можно сделать, например, так:

Начнём с простого и наглядного примера, а именно, запуллим самый свежий (latest) образ (image) nginx

Посмотрим список всех образов (там должен появиться nginx):

Удалить образ можно так (но при этом, надо удалить все контейнеры, созданные из него):

Работа с контейнерами

Теперь, запустим из него контейнер:

-d открепит (detach) терминал

-P сделает все открытые порты публичными и случайными

—name это имя, которое мы хотим дать контейнеру

Увидеть информацию о запущенных контейнерах можно так:

Вывод будет примерно таким:

Важно иметь ввиду, что для того, чтобы выполнить какую-либо операцию с контейнером, к нему можно обратиться либо по уникальному имени (в данном случае mysite1), либо по CONTAINER ID (данном случае a086925f177a), ЛИБО по первым символам CONTAINER ID (например, a08 (Docker пытается сделать начало CONTAINER ID как можно более уникальным, но соответственно если контейнеров много, то вероятность совпадения первых символов увеличивается, и тогда количество первых символов придется указывать больше)). Рассмотрим простой пример операции с контейнером (в данном случае все три команды выполняют одно и то же):

Результатом команд будет:

Теперь мы видим, что в хост системе слушается порт 32769, который форвардит трафик на 80 порт, который слушается в контейнере.

Можем даже выполнить:

Либо в браузере зайти на ip своего интерфейса (в моем случае это 192.168.56.103) с портом 32769 (помним про iptables и firewalld — возможно, они что-то запрещают):

Можно указать точный матчинг портов, например, так:

Тогда, при заходе в браузере просто на ip — попадем в контейнер mysite2 (помним, что имена контейнеров должны быть уникальны. Либо надо удалить прошлый контейнер, предварительно остановив его. Также помним, что хост-порт тоже должен быть уникальным (ну это очевидно же ;))).

Управление контейнерами

Теперь остановим и удалим контейнер mysite2:

Также, мы можем создать контейнеры, в которые будем заходить через bash (/bin/bash в данном случае для примера. Запущен может быть, например, какой-нибудь скрипт):

Зайти в него можно так:

Для того, чтобы отцепиться от контейнера, но оставить его работающим, используем:

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

Еще один вариант как зайти в контейнер, но уже с сервисом (например, как в контейнере mysite1):

Разберемся в используемых флагах. –t указывает на то, что приложение запущено в псевдоконсольном режиме (pseudo TTY). Флаг –i запускает приложение в интерактивном режиме. Т.е. я могу вводить свои команды с клавиатуры и приложение их получит.

Считаю, что стоит упомянуть, что контейнер, из-за каких-то действий (например,  как набор команды exit при условии, что контейнер запущен как mysite3) может упасть, тогда его придется поднять. Команда простая, но просто я призываю смотреть за аутпутом и статусом контейнеров:

Еще одна полезная фишка:

  • —rm: сообщает Docker-у удалять контейнер каждый раз, как только произойдет выход из процесса. Хорошая возможность при тестировании, позволяющая избежать беспорядка
  • -ti: указывает Dockerу создать псевдотерминал и предоставить его для использования в интерактивном режиме. Это возможность для доступа к контейнеру и она хорошо подходит для быстрого прототипирования и различных игр, но при использовании контейнера в производственных условиях вы не должны включать эти флаги.

А вот так можно сразу запустить скрипт в контейнере:

А ещё, контейнер можно переименовать:

На этом статья Docker вступление закончена. Еще полезная ссылка для Docker: https://habr.com/post/310460/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *