12.05.2015

Docker команды

Установка докера:
sudo yum install docker-io

Запуск команд в контейнере:
sudo docker run -t ubuntu:latest /usr/bin/top

Зайти в контейнер и установить нужный софт:
$ sudo docker run -t -i ubuntu:latest /bin/bash
# apt-get update
# apt-get install nginx
# <CTRL+D>

Что, если мы хотим запустить Firefox внутри вир-
туального окружения? Нет ничего проще, открываем
Docker Hub (hub.docker.com) в браузере, нажимаем
Browse & Search и вбиваем firefox. На экран вывалится
список результатов. Смотрим, kennethkl/firefox вро-
де вполне подходит. Клацаем по нему и видим инфу,
как все это дело запустить. Автор говорит нам выпол-
нить такую команду:

$ sudo docker run -d --name firefox -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix kennethkl /firefox

На этом же примере, кстати, можно ознакомиться с еще четырьмя полез-
ными опциями команды docker run:

• -d — «демонизирует» контейнер, то есть просто отключает
Docker от STDOUT виртуального окружения и позволяет
ему работать в фоне;
• --name — имя контейнера, которое он получит вместо
идентификатора;
• -e — позволяет «пробросить» в виртуалку переменную
окружения;
• -v — пробрасывает указанный файл или каталог (формат
/файл/на/хост/системе:/файл/в/виртуалке или просто
/файл/на/хост/системе, если пути совпадают).

более простой способ поиска образов Docker, с помощью команды docker search:
$ sudo docker search nginx

Единственный способ запустить Docker
в OS X или Windows — это установить его
в виртуальную машину. Не обязательно
делать это вручную, можно воспользо-
ваться уже готовым решением, например
boot2docker. Это набор скриптов, которые
позволяют быстро развернуть виртуальную
машину с Linux и Docker внутри VirtualBox
и запустить ее с автоматическим открытием
доступа по SSH. Инструкцию по его исполь-
зованию и сам инсталлятор можно найти
на официальном сайте Docker (docs.docker.com/installation).



Эта команда покажет все запущенные контейнеры
вместе с их ID, используемым образом, запущенной
коман дой, временем работы и прочим. Нас интересует
значение в столбце CONTEINER ID.
$ sudo docker ps

НАСТРОЙКА СЕТИ
Для того чтобы контейнеры могли общаться между
собой и с внешним миром, Docker автоматически
поднимает виртуальный сетевой мост и настраи-
вает правила маскарадинга (NAT) для внешнего
сетевого интерфейса. Это значит, что извне до-
стучаться до контейнеров не получится. Однако
мы можем настроить проброс портов, чтобы за-
прос к определенным портам внешнего сетевого
интерфейса машины автоматически перенаправ-
лялся на указанные порты контейнера. Например,
в компании Mirantis главный узел Fuel (это такой
GUI для деплоя и настройки OpenStack) запуска-
ется в Docker и использует функцию проброса
портов, чтобы открыть доступ к контейнеру fuel/
nginx (порт 8000):

$ sudo docker run -d -p 8000:8000 fuel/
nginx_6.0:latest /usr/local/bin/start.sh

Мы могли бы пробросить порт 8000 на любой
другой порт контейнера, просто изменив второе
число в опции -p, но в данной конфигурации это
не имеет смысла.


Работа с контейнерами
КомандаПримечание
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 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 rmi [image-id]Удалить контейнер с локального хранилища
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Импорт с локальной директории