Великолепное решение для разработчиков приложений и облачных платформ, т.к. позволяет: существенно повысить безопасность, ускорить разработку, экономить ресурсы и т.д.
Другими словами: виртуализация на уровне системы.
Другими словами: виртуализация на уровне системы.
Сайты проектов:
- docker.com [ docker ] / wiki(en) / doc / git (использует docker)
- kubernetes.io [ kubernetes ] / doc / git
- coreos.com [ rocket (rkt) ] / wiki / doc / git
Docker может работать на Linux (разные платформы),
на Windows работает внутри виртуальной машины например VirtualBox, VMWare, QEMU
Основные компоненты docker:
на Windows работает внутри виртуальной машины например VirtualBox, VMWare, QEMU
Основные компоненты docker:
- ядро системы, утилиты
- реестр образов (подготовленные образы систем)
- образы виртуальных систем (images),виртуальных дисков (volumes)
- контейнеры
установка на Debian (Jessie 8.0 64-bit)
1. в файл sources.list добавьте строку, указанную ниже:
(или добавьте новый файл с расширением ".list" в директорию /etc/apt/sources.list.d/ , другие зеркала можно найти тут: https://www.debian.org/mirror/list
deb http://http.debian.net/debian jessie-backports main
установка:
$ sudo apt-get update
$ sudo apt-get install docker.io
проверка работоспособности:
$ sudo docker run --rm hello-world
должно отобразится информационное сообщение, и контейнер должен завершить работу
удаление (если потребуется):
$ sudo apt-get purge docker-io
$ sudo apt-get autoremove --purge docker-io
$ rm -rf /var/lib/docker # реестр , контейнеры, образы удаляются вручную
запуск docker должен происходить с правами root,
т.е. нужно добавлять $ sudo docker в том случае, если не указано
Часто используемые команды:
работа с метаданными:
# просмотр меток (labels) контейнеров, образов с ID
$ docker inspect ID # например docker inspect 1fa6e0f0c271
# список работающих контейнеров с меткой "label=com.example.is-beta"
$ docker ps --filter "label=com.example.is-beta"
# список работающих контейнеров с меткой "color" и значением "blue"
$ docker ps --filter "label=color=blue"
# список всех образов от поставщика / "vendor" "ACME"
$ docker images --filter "label=vendor=ACME"
# метки для основного сервиса / "daemon"
$ docker daemon \
--dns 8.8.8.8 \
--dns 8.8.4.4 \
-H unix:///var/run/docker.sock \
--label com.example.environment="production" \
--label com.example.storage="ssd"
# вывести метаданные сервиса / "daemon"
$ docker -D info
# просмотр меток (labels) контейнеров, образов с ID
$ docker inspect ID # например docker inspect 1fa6e0f0c271
# список работающих контейнеров с меткой "label=com.example.is-beta"
$ docker ps --filter "label=com.example.is-beta"
# список работающих контейнеров с меткой "color" и значением "blue"
$ docker ps --filter "label=color=blue"
# список всех образов от поставщика / "vendor" "ACME"
$ docker images --filter "label=vendor=ACME"
# метки для основного сервиса / "daemon"
$ docker daemon \
--dns 8.8.8.8 \
--dns 8.8.4.4 \
-H unix:///var/run/docker.sock \
--label com.example.environment="production" \
--label com.example.storage="ssd"
# вывести метаданные сервиса / "daemon"
$ docker -D info
# поиск образа в реестре (например "centos" или др.)
$ docker search centos
# загрузить образ (например "centos" или др.) из реестра
$ docker pull centos
# получить список установленных образов с тегами
$ docker images
# получить список всех образов
# "-a" - все образы
$ docker images -a
# получить список ID образов
$ docker images -a -q
# удалить образ c IMAGE_ID
$ docker rmi IMAGE_ID
# форсировать удаление образа c IMAGE_ID
# "-f" - force
$ docker rmi -f IMAGE_ID
# сохранение образов в архиве
$ docker save busybox > busybox.tar.gz
$ docker save --output=busybox.tar.gz busybox
$ docker save -o busybox.tar.gz busybox
$ docker save -o ubuntu.tar.gz ubuntu:lucid ubuntu:saucy
# сохранение образов в архиве
$ docker save busybox > busybox.tar.gz
$ docker save --output=busybox.tar.gz busybox
$ docker save -o busybox.tar.gz busybox
$ docker save -o ubuntu.tar.gz ubuntu:lucid ubuntu:saucy
# восстановление образов из архива
# поддерживаются форматы: gzip, bzip, и xz
$ docker load < busybox.tar.gz
$ docker load --input=ubuntu.tar.gz
$ docker load -i ubuntu.tar.gz
# docker import: для сохранения владельцев и прав
# на файлы и папки, как и в исходной папке/архиве
# поддерживаемые форматы архивов:
# .tar, .tar.gz, .tgz, .bzip, .tar.xz, .txz
# "--change" - изменения при импорте,
# поддерживаются следующие инструкции:
# CMD|ENTRYPOINT|ENV|EXPOSE|ONBUILD|USER|VOLUME|WORKDIR
$ docker import --change "ENV DEBUG true" exampleimage.tgz
# по умолчанию владельцем будет root:
# для смены владельца требуется указать USER my_user_name
# перед командами COPY, ADD
# а также менять права в командах RUN chmod xxx file
# docker build
# минимальный базовый образ: scratch (зарезервированное имя)
# создать свой базовый образ минимального размера: empty
$ tar cv --files-from /dev/null | docker import - empty
# создать образ из текущей папки
# в папке должен быть файл с именем Dockerfile
# создать образ описанный в Dockerfile
# команды ADD внутри Dockerfile работают, только,
# если ссылаются на внешние файлы с URL
# игнорируются директивы -f, --file
$ docker build -t TARGET_IMAGE_NAME - < Dockerfile
# поддерживаемые форматы архивов: bzip2, gzip и xz
# "-f" - указывает альтернативное имя Dockerfile внутри контекста
# "--rm=true" - удалить промежуточные контейнеры,
# после успешной сборки
# "--force-rm=true" - всегда удалять промежуточные контейнеры
$ docker build --no-cache -f Dockerfile -t TARGET_IMAGE_NAME - < image.tar.gz
# создать образ из git репозитория
$ docker build github.com/creack/docker-firefox
$ docker build https://github.com/docker/rootfs.git#container:docker
в квадратный скобках необязательные параметры, напр. [команда]
# список работающих контейнеров
$ docker ps
# список всех контейнеров (+остановленные)
$ docker ps -a
# список всех контейнеров с не усеченными CONTAINER_ID
$ docker ps -a --no-trunc
# список всех ID контейнеров (+остановленные/stopped)
$ docker ps -a -q
# сохранение текущего состояния контейнера
$ docker export CONTAINER_ID > latest.tar.gz
$ docker export red_panda > latest.tar.gz
$ docker export --output="latest.tar" red_panda
$ docker export -o "latest.tar" red_panda
$ docker run container_name [команда]
# запустить контейнер с именем container_name +консоль
# "-i" - интерактивно, "-t" - использовать псевдо-TTY
$ docker run -it container_name [команда]
# остановить контейнер c CONTAINER_ID (результат docker ps)
$ docker stop CONTAINER_ID
# запустить контейнер c CONTAINER_ID (результат docker ps)
$ docker start CONTAINER_ID
# перезапустить контейнер c CONTAINER_ID (результат docker ps)
$ docker restart CONTAINER_ID
# отправить сигнал SIGKILL в контейнер (прервать работу)
# вместо CONTAINER_ID можно использовать результат
# возвращаемый при запуске контейнера в фоне
# JOB=$(docker run -d ubuntu /bin/sh -c "while true; \
do echo 'Привет Мир!'; sleep 1; done")
# docker kill $JOB
# $JOB можно использовать с командами: start, stop, restart, kill, rm
$ docker kill CONTAINER_ID
# запустить контейнер в фоне
# "-d" - запуск в фоне
$ docker run -d -t container_name [команда]
# запустить команду внутри работающего контейнера c CONTAINER_ID
# "-u" запустить от указанного пользователя (uid или name)
$ docker exec -u root -it CONTAINER_ID bash
# удалить остановленный контейнер/stopped c CONTAINER_ID
$ docker rm CONTAINER_ID
# удалить все неработающие контейнеры:
$ docker rm $(docker ps -a -q)
Комментариев нет:
Отправить комментарий