Установка докера:
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, но в данной конфигурации это
не имеет смысла.
Работа с контейнерами
Работа с образами
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 | Импорт с локальной директории |