Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
20.04.2024
Размер:
13.88 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

По умолчанию интервал обнаружения установлен в 1440 минут, для тестирова-

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ния лучше его уменьшить, иначе информацию ждать будем долго:

PS> $conig.DiscoveryIntervalInMinutes = “10”

Подсети, в которых будет производиться обнаружение устройств:

PS> $conig.DiscoveryScopes = “10.0.0.0/24,192.168.0.0/24”

Получаем учетные данные, созданные ранее. Если создано несколько пользователей, то задаем их здесь, а при опросе устройств они будут перебираться до совпадения.

PS> $credential = Get-NetworkControllerCredential

–ConnectionUri https://example.org –ResourceId Сred1

PS> $conig.Credentials = $credential

IP-адрес устройства, которое будет использовано в качестве отправной точки для поиска в сети:

PS> $conig.DiscoverySeedDevices = “192.168.0.1”

Ограничение по глубине поиска устройств:

PS> $conig.HopLimit = “3”

PS> $conig.ActiveDirectoryDomains = “example.org”

Применяем установки:

PS> Set-NetworkControllerTopologyConiguration

–ConnectionUri https://example.org –Properties $conig

Проверяем настройки:

PS> $topology = Get-NetworkControllerDiscoveredTopology

-ConnectionUri https://example.org

PS> $topology.Properties

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

Запускаем процесс поиска и идентификации сетевых устройств:

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

PS> $discovery = New-Object Microsoft.Windows.NetworkController.

NetworkDiscoveryActionProperties

PS> $discovery.Action = “start”

PS> Invoke-NetworkControllerTopologyDiscovery

–ConnectionUri https://example.org –Properties $disсovery

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Настраиваем процесс обнаружения

Некоторое время ждем, чтобы просмотреть результат. По каждому узлу собираются данные об имени, ОС, типе, модели, состоянии и прочему. В Windows для возможности обнаружения систем следует включить DCB, установив соответствующий компонент:

PS> Install-WindowsFeature Data-Center-Bridging

Послеэтогонужнопроверитьвсвойствахсетевыхустройств,чтобыбылустановлен флажок в параметрах Microsoft LLDP Protocol Driver и QoS Packet Scheduler. Включить также можно при помощи командлета:

PS> Enable-NetAdapterQoS “Ethernet0”

Состояние DCB выводится при помощи Get-NetQoSDCBxSetting. Статистика по обнаружению устройств и времени последнего запуска просматривается при помощи командлета Get-NetworkControllerTopologyDiscoveryStatistics:

PS> Get-NetworkControllerTopologyDiscoveryStatistics

-ConnectionUri https://example.org

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

Теперь смотрим информацию о топологии, обнаруженных узлах и связях:

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

PS> $topology = Get-NetworkControllerDiscoveredTopology

-ConnectionUri https://example.org

Получим массив узлов.

PS> $topology.Properties

Свойства одного узла:

PS> $topology.Properties.TopologyNodes[0].Properties

Просмотр связей:

PS> $topology.Properties.TopologyLinks[0].Properties

Есть и специальные командлеты, позволяющие получить те же данные более просто: Get-NetworkControllerDiscoveredTopologyLink, Get-NetworkControllerDiscover edTopologyNode и Get-NetworkControllerDiscoveredTopologyTerminationPoint.

В зависимости от ситуации некоторые узлы будут отмечены как недоступные, это может значить, что узел найден, но получена не вся необходимая информация. После нескольких проверок статус может измениться. Вполне возможно, что потребуется вручную указать или убрать узлы и настроить связи между узлами. Для этого используется несколько NetworkControllerDiscoveredTopology командлетов с префиксом New- и Remove-.

Добавить данные о сетях и IP-пуле позволяют командлеты New-NetworkController LogicalNetwork, New-NetworkControllerLogicalSubnet и New-NetworkControllerIpPool.

ВЫВОД

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

SYNACK

 

 

 

df-xchan

 

 

 

w Click

to

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ЖОНГЛИРУЕМ

КОНТЕЙНЕРАМИ

РАЗНЫЕ ПОЛЕЗНЫЕ ПЛЮШКИ ДЛЯ DOCKER

Мартин

«urban.prankster»

Пранкевич martin@synack.ru

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

Появившись, Docker практически сразу стал интере-

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

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

МОНИТОРИНГ

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

Docker предоставляется со встроенными функциями мониторинга, позволяющими контролировать все важные показатели CPU, Mem, I/O и сеть. Причем предлагает для их считывания аж три способа: при помощи sysfs (расположены в /sys/fs/cgroup), команды stat и API.

$ cat /sys/fs/cgroup/cpuacct/docker/CONTAINER_ID/cpuacct.stat

$ docker stats CONTAINER_ID

Доступ к API также получить очень просто, достаточно прочитать данные из сокета.

$ echo -e “GET /containers/[CONTAINER_ID]/stats HTTP/1.0\r\n” |

nc -U /var/run/docker.sock

Кроме этого, часть stdout/stderr информации Docker выводит в файл журнала. В Ubuntu это /var/lib/docker.log.

Статистикаработыконтейнера

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

Штатные инструменты дают общие сведения по нагрузке в конкретный момент

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

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

Одно из самых популярных, cAdvisor, представляет собой специальный демон, который собирает статистику об общем использовании ресурсов, сетевом трафике и установленных пределах и отображает информацию в графическом виде. Новый контейнер автоматически подхватывается cAdvisor, и по нему выводится временной ряд. В отдельной вкладке предоставляются данные по конкретному контейнеру. Поддерживает потоки событий — создание, удаление, аномальные события. По умолчанию данные на графиках в скользящем окне показываются только за одну минуту. Нет возможности посмотреть более долгосрочные тенденции и получить предупреждение о достижении лимита. Хотя, вероятно, для разработки этого вполне и достаточно. Для хранения долгосрочных метрик cAdvisor интегрируется с InfluxDB и планируется с Google BigQuery. Для интеграции с InfluxDB достаточно указать в строке запуска -storage_driver=influxdb.

cAdvisor реализован и как контейнер Docker, поэтому его получить проще простого (есть возможность запуска вне Docker).

$ docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw

--volume=/sys:/sys:ro

--volume=/var/lib/docker/:/var/lib/docker:ro

--publish=8080:8080 --detach=true

--name=cadvisor google/cadvisor

Теперь, чтобы подключиться, достаточно набрать http://localhost:8080. Кроме ограничения в периоде выводимой информации, у cAdvisor есть еще один недостаток — он может контролировать только один хост Docker. Поэтому он не совсем подходит для использования в кластере из нескольких установок Docker.

Axibase Time-Series Database — решение, использующее метрики производительности, снятые cAdvisor (собственной доработанной версии), но умеющее их хранить, анализировать и визуализировать. Один экземпляр ATSD может собрать метрики нескольких хостов Docker и cAdvisor. Статистика отправляется по протоколу TCP, по умолчанию это локальный адрес, но удаленную систему можно указать при запуске с помощью параметров --atsd_storage_url и --atsd_storage_write_host. Также ATSD может собирать данные с демонов collectd, tcollector или Nmon, запущенных внутри контейнеров. Это позволит получать и анализировать в последующем еще большую информацию.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

Среди open source решений следует вспомнить о системе мониторинга

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Prometheus, описанной в сентябрьском номере. Она полностью ориентирована на микросервисную архитектуру и поддерживает Docker из коробки.

Если развернута система мониторинга Zabbix, можно использовать специальный модуль, показывающий общую информацию о нагрузке системы и данные об отдельных контейнерах.

Вывод статистики в cAdvisor

ЖУРНАЛЫ

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

По умолчанию наружу контейнера доступен вывод STDOUT, а поэтому достаточно в него направить логи приложения и затем просматривать при помощи docker logs -f <название_контейнера>. Но в этом случае нужно быть точно уверенным, что в STDOUT попадает все необходимое. О сохранении и анали-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

зе в

дальнейшем придется позаботиться отдельно. Правда, нужно помнить,

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

что при запуске контейнера с опцией -t STDOUT будет уходить в открытый псевдоTTY.

Теперь как собрать. Используя параметр --log-driver в команде запуска контейнера docker run, можно журнал контейнера направлять в syslog, journald, fluentd, файл JSON и так далее.

$ docker run ubuntu --log-driver=syslog

--log-opt syslog-address=udp://192.168.0.1:514

--log-opt labels=ubuntu

В репозитории легко найти контейнер, реализующий syslog, поэтому развернуть такую схему достаточно легко. К сообщению можно добавлять метки, чтобы легче было найти нужные данные в общем файле. При этом предусмотрено использование подстановок. Например, тег {{.Name}} выведет имя контейнера, а {{.ID}} — его идентификатор.

Другой вариант — смонтировать каталог с журналами, добавив -v /var/ log/:/var/log/, и таким образом получить доступ к ним. Но при большом количестве контейнеров такой вариант не всегда удобен. В ответ на проблемы появились и сторонние разработки, их решающие.

Проект logspout реализует простую функцию — собирает логи со всех запущенных контейнеров (STDOUT, STDERR и пока частично syslog) и отправляет на удаленный хост.

$ docker run –name=”logspout”

--volume=/var/run/docker.sock:/tmp/docker.sock

gliderlabs/logspout syslog://example.org:514

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

-e ‘LOGSPOUT=ignore’.

Logjam умеет собирать журналы с локального UDP-сокета или файла и отправлять на удаленный адрес. В качестве агрегатора журналов для Docker часто используют logstash — специальное приложение, умеющее собирать, фильтровать, нормализовать и хранить любые данные в любом формате.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

ИНТЕРФЕЙС

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Управлять большим количеством контейнеров и образов без наглядного интерфейса не очень удобно, особенно если запускать контейнеры должны малоподготовленные пользователи. Официальный проект предоставляет только GUI Docker Kitematic, который доступен для OS X 10.9+ и Windows 7+ 64-bit, позволяющий быстро развернуть, сконфигурировать среду Docker, управлять ею и запускать контейнеры (через VirtualBox). Но в нашем случае он не подходит.

Хотя это не проблема, так как на сегодня доступно уже несколько десятков реализаций сторонних разработчиков. Проекты опираются на Docker Remote API, позволяющий производить все манипуляции, доступные в командной строке. Shipyard, наверное, самый продвинутый и идеальный интерфейс для удобной работы со всеми функциями Docker. С его помощью удобно запускать, перезапускать, уничтожать, создавать, получать подробную информацию о контейнерах (статус, использование, время создания, порты, процессы

ипрочее), просматривать журналы контейнеров. Также он выводит статистику по использованию CPU, памяти и сети, выводит логи. Реализован просмотр доступных образов и работа с тегами, просмотр узлов и IP. Есть возможность запуска команд при помощи docker exec. Поддерживается работа в многопользовательской среде, интеграция с OpenLDAP и Active Directory. Пользователям назначаются роли, дающие разные права. Список ролей фиксированный

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

$ curl -sSL https://shipyard-project.com/deploy | ACTION=deploy bash -s

Все параметры, которые можно использовать для сборки и сборки в качестве ноды в Swarm, расписаны в документации. По умолчанию используется 8080- й порт, логин/пароль — admin/shipyard. Остальные параметры (подключение к LDAP, внешней RethinkDB, сертификаты и прочее) можно узнать при помощи команды

$ docker run shipyard/shipyard server -h

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Если нужен инструмент попроще, то можно порекомендовать Dockerding, позволяющий управлять контейнерами, получать информацию по каждому (ID, образ, команда, статус, сетевые настройки, переменные и так далее), запускать, останавливать, перезапускать и удалять, просматривать журналы работы, создавать новый контейнер, для чего нужно просто заполнить предложенные поля. Все функции доступны в двух пунктах меню, запутаться в которых просто невозможно. По работе с образами пока реализована общая информация и возможность удаления. Простой и понятный инструмент, позволяющий не вспоминать названия команд и контейнеров, а сразу получать все данные.

$ docker pull evolutio/dockerding

$ docker run -d -p 3000:3000 --privileged --name dockerding

-v /var/run/docker.sock:/var/run/docker.sock evolutio/dockerding

Соседние файлы в папке журнал хакер