Docker

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Содержание

Что такое Docker

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы LXC.

Установка Docker

Инсталяция для CentOS 6

ВНИМАНИЕ:
Установка и использование Docker возможна только для х86_64 систем.

1. Подключаем EPEL репозитарий командой

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm'

2. Инсталируем и включаем запуск демона.

su -c 'yum install docker-io'
su -c 'service docker start'
su -c 'chkconfig docker on'

Инсталяция для CentOS 7 and Fedora

1. Инсталяция и включение демона в systemd

su -c 'yum install docker-io'
su -c 'systemctl start docker.service'
su -c 'systemctl enable docker.service' 

Чтобы использовать Docker от пользователя нужно этого пользователя включить в группу docker

su -c 'usermod -a -G docker $USER'
ПРИМЕЧАНИЕ:
Иногда чтобы система поняла что пользователя включили в нужную группу, нужно выйти этим пользователем из системы и снова зайти.


Инсталяция с репозитария сайта Docker

Недавно сделали официальный yum репозитарий для различных дистрибутивов. В частности уже сейчас можно без проблем его подключить к CentOS 6 или CentOS 7 и загрузить самую новую версию docker.

$ cat >/etc/yum.repos.d/docker.repo <<-EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

После этого достаточно выполнить команду :

yum install docker-engine

Начальная работа с контейнером

Запустить на образе centos bash, и если такого образа нет то скачать его с репозитария образов:

docker run -i -t centos /bin/bash

Возможные ключи запуска :

ПРИМЕЧАНИЕ:
Если в системе используется прокси сервер то нужно указать переменные прокси для демона docker.

cat /etc/sysconfig/docker :

HTTP_PROXY=http://proxy:3128                                         
http_proxy=$HTTP_PROXY
HTTPS_PROXY=$HTTP_PROXY
https_proxy=$HTTP_PROXY

export HTTP_PROXY HTTPS_PROXY http_proxy https_proxy


Ctrl+p, Ctrl+q

docker exec -it имя_контейнера /bin/bash

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

Команда Примечание
docker run --name [container-id] -d -p 80:80 [image name] Запуск контейнера с образа на 80 порту
docker ps -a Просмотр запущенных и остановленных контейнеров
docker attach [container-id] Для подсоединения к запущенному контейнеру
docker start [container-id] Запуск контейнера
docker stop [container-id] Oстановка запущеного контейнера
docker restart [container-id] Перезагрузка запущеного контейнера
docker kill [container-id] Выключение запущеного контейнера
docker rm [container-id] Удаление остановленного контейнера
docker rm `docker ps -a -q` Удалить все оставшиеся контейнеры
docker commit [container-id] [image name] Создание нового образа с контейнера
docker cp [container-id]:/etc/passwd . Копирование файла с контейнера на хост
docker inspect [container-id] Просмотр информации о контейнере
docker inspect --format="{{.NetworkSettings.IPAddress}}" [container-id] Посмотреть ip адрес запущеного контейнера
docker logs [container-id] Посмотреть log контейнера
docker top [container-id] Посмотреть список процессов контейнера
docker rename [default name] [new name] Переименовать контейнер
docker history [container-id] История команд для данного контейнера

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

Команда Примечание
docker build -t [image name] . создание образа с помощью build файла.
docker search <WORD> Поиск образа по ключевому слову
docker images Список всех локальных образов
docker commit [container-id] [new-image-name] Запись измененого контейнера под другим именем в локальное хранилище
docker pull [image name] Скачать последний образ в локальное хранилище
docker pull [image name][:number] Скачать образ версии NUMBER в локальное хранилище
docker rmi [image-id] Удалить контейнер с локального хранилища
docker rmi -f [image-id] Удалить запущеный контейнер с локального хранилища
docker rmi $(docker images -q) Удалить ВСЕ образы
docker load < /tmp/myimage.tar Создание образа с tar архива с STDIN
docker save [image name] > /tmp/myimage.tar Запись образа в tar архив в STDOUT
docker import http://example.com/exampleimage.tgz Импорт образа с удаленного файла
docker import - exampleimagelocal:new Импорт с локального файла
docker import - exampleimagedir Импорт с локальной директории

Docker Tools

Начиная с версии docker 1.6 сформировали набор утилит для управления контейнерами на базе docker. В этот набор сейчас входят: Docker-engine, Registry, Compose, Swarm и Machine.

Docker-engine

Это непосредственно сам docker и его описание и установка описаны выше.

Registry

Хранилище образов на сервере. Можете пользоваться официальным хранилищем а также создать свое ( приватное ) хранилище на локальном сервере.

ВНИМАНИЕ:
Registry совместим только с docker 1.6 и старше.

Compose

По идеологии docker каждый сервис должен запускаться в своем контейнере. К примеру если это стек LAMP, то отдельный контейнер для базы данных, отдельный контейнер для www сервера и контейнер для самого приложения. Разработчикам не очень удобно манипулировать всеми этим контейнерами по отдельности ( к примеру распознавания разных ip и т.д. ) и поэтому сделали утилиту compose, что по сути есть питон скрипт.

После установки compose все определения контейнеров указываются в едином файле - docker-compose.yml и после этого запуск всех нужных контейнеров просто сводится к команде : docker-compose up

С помощью Compose можно управлять жизненным циклом вашего приложения:

Подробное описание структуры файла docker-compose.yml можно найти на в официальной документации.

ПРИМЕЧАНИЕ:
Утилита compose пока еще тестируется и не рекомендована для промышленного применения.


Swarm

Docker Swarm служит для объединения множества Docker хостов в один виртуальный хост. Docker Swarm предоставляет REST API интерфейс, совместимый с Docker API. Таким образом, все инструменты, которые работают с API Docker'a (клиент Docker'a, Dokku, Compose, Krane, Flynn, Deis, DockerUI, Shipyard, Drone, Jenkins и т.д.), смогут работать с Docker Swarm, не подозревая о том, что за ним стоит кластер Docker'ов, а не одна машина.

Machine

Machine позволяет создавать docker хосты на вашем компьютере, на облаках провайдеров или внутри собственного центра обработки данных. Machine создает сервера, устанавливает Docker на них, затем настраивает клиента Docker для связи с этим сервером.

После создания docker хост, получаем ряд команд для управления:

Дополнительные материалы