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] - на августе 2019 - 19.03.1
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 можно делать автоматически собираемые image. Для этого необходимо указать сервису проект с Dockerfile. При внесении изменений в проект, image собирается заново.

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



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

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

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

Пример запуска прилоения в Docker одной командой


Базовые вещи

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

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


Docker Tools

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


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 с него


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

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

Lamp Server

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

YouTube: Quick Wordpress Setup With Docker

docker-django

MongoDB + импорт данных


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

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


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

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


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

здесь


Self-hosted Registry (Свой dockerhub)

Self-hosted Registry


Docker Clustering

Docker Swarm


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

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


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

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

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