Docker в Linux

Offtopic:
Docker в Windows


Offtopic:

Здесь собираются материалы по работе с docker, начиная с версии 1.1. Материалы постепенно обновляются по мере необходимости обращения к ним.

Некоторые вещи обновлять не успеваю, т.к. docker развивается достаточно быстро.

Если копаете, можете помочь с обновлением и добавлением своих знаний.

В качестве хостовой машины для docker контейнеров может быть интересен дистрибутив (уже от RedHat) - CoreOS. Впрочем, я считаю, что лучше Ubuntu и самому поставить тот же Docker и поднять доп сервисы, если они будут нужны.

P.S.!!! В контейнерах для Centos7 не работает из коробки systemd! По крайней мере на момент попытки запуска мной! Сейчас в основном использую контейнеры с Ubuntu / CoreOS

Еще стали предлагать для контейнеров использовать alpine linux. Вроде жрет меньше ресурсов и еще какие-то преимущества. Но я пока хз.


Поехали


[Последняя версия Docker Community Edition] - на апрель 2018 - 18.03.0-ce (2018-03-21)
https://docs.docker.com/release-notes/docker-ce/

[Подготовленные image]
https://hub.docker.com/explore/

[Docker Registry (Network Storage For Docker Images)] (облачный сервис для хранения контейнеров)
https://hub.docker.com
https://quay.io

На hub.docker.com можно делать автоматически генерируемые контейнеры. Для этого необходимо указать где сервису взять Dockerfile. Например на github или bitbucket. При изменении файла, собирается заново. Вот пример моего контейнера, https://hub.docker.com/r/marley/nodejs/builds/ - автоматически собирается при обновлении контейнера от официального поставщика контейнеров в node.js.

Можно создать свой Registry:

https://docs.docker.com/registry/
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-ubuntu-14-04



Инсталляция Docker

Инсталляция Docker


Базовые вещи

Имидж и контейнер, в чем собственно разница?

Основные команды Docker


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

Запуск Ubuntu Docker контейнера
Пример запуска веб проекта в контейнерах Docker


Docker Tools

Docker-Compose (для совместной работы контейнеров)

Docker Machine (для запуска контейнеров в virtualbox, обычно в windows)


Docker NetWorking (Не особо и нужно. Но возможность такая есть (или по крайней мере была в версии 1.3). Не пользуюсь этой возможностью)

https://docs.docker.com/engine/userguide/networking/

Настройка моста для работы с Docker в Ubuntu
Задание параметров сетевых интерфейсов docker в Ubuntu (IP, gateway, etc.)


Docker Linking Containers

Лучше использовать docker-compose для линковки контейнеров. Для работы с docker-compose нужные версии docker >= 1.8.

Пример линковки контейнеров для их совместной работы


Docker Работа с image

Скопировать Docker Images на другой Host
Скопировать image на hub.docker.com и забрать image с него


Работа с официальными и не только контейнерами

Lamp Server Работа с официальным mysql Docker контейнером


Информация о запущенных контейнерах

Получить информацию о запущенных Docker контейнерах c помощью sysdig


Docker практические задачи

Переместить файлы Docker


Dockerfile - скрипт для создания контейнера автоматически

здесь


Docker Clustering

Docker Swarm


Примеры конфигов работы с Docker

Docker for Web Developers (видеокурс)


Хостовые операционные системы для docker контейнеров

CoreOS (была куплена RedHat)

Rancher OS (Rancher Labs)

Atomic (RedHat)



Еще вот здесь чувак пишет о s6-overlay. (Я хз пока что это такое):

http://reangdblog.blogspot.com/2016/09/debian-ubuntu-docker.html


Я использую s6-overlay, эта набор скриптов поверх s6, которые разрабатывались специально под docker. Я не буду пересказывать документацию, но вкратце опишу возможности: 

- "Повесить" набор скриптов на старт и остановку контейнера.
- Декларативно описать назначение прав на директории и файлы, вместо беспорядочных chmod и chown в разных местах.
- Для каждого сервиса можно написать скрипт запуска под нужным пользователем, и скрипт, который будет выполняться при завершении контейнера.
- Ну и конечно единообразное логирование каждого шага.


https://github.com/just-containers/s6-overlay


Возможно, полезные статьи по docker: