====== Общее ======
//Базовая информация об инсталляции://
docker info
----
====== Работа с контейнерами ======
===== Список команд для работы с контейнерами =====
^ Команда ^ Применение ^
| **%%docker run --name [container-id] -d -p 80:80 [image name]%%** | //Запуск контейнера с образа на 80 порту// |
| **%%docker ps%%** | //Просмотр только запущенных контейнеров// |
| **%%docker ps -a%%** | //Просмотр запущенных и остановленных контейнеров// |
| **%%docker attach [container-id]%%** | //Для подсоединения к запущенному контейнеру// |
| **%%docker start [container-id]%%** | //Запуск контейнера// |
| **%%docker stop [container-id]%%** | //Остановка запущенного контейнера// |
| **%%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]%%** | //История команд для данного контейнера// |
----
===== Дополнительные примеры =====
* **Выход из контейнера**
//Выйти из контейнера не останавливая его:// \\
''Ctrl+p, Ctrl+q'' \\ \\
//Выйти из контейнера и остановить его://
exit
----
====== Работа с образами ======
===== Список команд для работы с образами =====
^ Команда ^ Примечание ^
| **%%docker build -t [image name] .%%** | //Создание образа с помощью build файла// |
| **%%docker search %%** | //Поиск образа по ключевому слову// |
| **%%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%%** | //Импорт с локальной директории// |
----
===== Дополнительные примеры =====
* **Загрузка образа**
//Доступные опции://
^ Флаг ^ Значение ^
| **-i** | открыть STDIN |
| **-t** | говорит docker открыть pseudo-tty в контейнер |
| **-d** | запуск контейнера в фоновом режиме |
| **-v** /tmp/src:/src | проброс внутрь контейнера локальной директории |
| **-p** 127.0.0.1:8080:80 | проброс порта 80 на хост на порт 8080 |
----
* **Поиск образа**
Поиск образа с выводом полного текста описания (DESCRIPTION)
docker search --no-trunc ubuntu
----
====== Dockerfile ======
===== Список доступных опций =====
^ Инструкция ^ Значение ^
| **.dockerignore** | //Если в корне билд контекста есть файл .dockerignore – он интерпретируется как список паттернов исключений// |
| **FROM** | //Первая инструкция в Dockerfile. Указывает, из какого образа нужно построить образ// |
| **MAINTAINER** | //Сообщает Docker автора образа и его email// |
| **RUN** | //Исполняет команду в конкретном образе// |
| **CMD** | //Указывает, какую команду необходимо запустить, когда контейнер запущен. В отличие от команды RUN указанная команда исполняется не во время построения образа, а во время запуска контейнера. **Можно перегрузить команду CMD, используя docker run**// |
| **EXPOSE** | //Говорит Docker, что приложение в контейнере должно использовать определенный порт в контейнере. По соображениям безопасности Docker не открывает порт автоматически, но ожидает, когда это сделает пользователь в команде docker run. Вы можете указать множество инструкций EXPOSE для указания, какие порты должны быть открыты. Также инструкция EXPOSE полезна для проброса портов между контейнерами.// |
| **ENV** | //Позволяет посмотреть переменные окружения// |
| **ADD** | //Добавляет файлы или папки из нашего билд-окружения в образ. Поддерживает распаковку файлов// |
| **COPY** | //Копирует файлы или папки из нашего билд-окружения в образ. Не поддерживает распаковки файлов// |
| **ENTRYPOINT** | //Указывает, какую команду необходимо запустить, когда контейнер запущен. Отличается от CMD тем, что вы не можете перегружать ENTRYPOINT при запуске контейнера. Если требуется, вы все-таки можете перегрузить команду ENTRYPOINT с помощью флага **%%--entrypoint%%**// |
| **VOLUME** | //Добавляет тома в образ. Том — папка в одном или более контейнерах или папка хоста, проброшенная через Union File System (UFS). Тома могут быть расшарены или повторно использованы между контейнерами. Это позволяет добавлять и изменять данные без коммита в образ// |
| **USER** | //Специфицирует пользователя, под которым должен быть запущен образ. Можно указать имя пользователя или UID и группу или GID. Можно перегрузить эту команду, используя **-u** при запуске контейнера. Если пользователь не указан, используется **root** по-умолчанию// |
| **WORKDIR** | //Позволяет установить рабочую директорию, откуда будут запускаться команды ENTRYPOINT и CMD. Вы можете перегрузить рабочую директорию контейнера в рантайме с помощью флага **-w**// |
| **ONBUILD** | //Добавляет триггеры в образы. Триггер исполняется, когда образ используется как базовый для другого образа, например, когда исходный код, нужный для образа еще не доступен, но требует для работы конкретного окружения// |
----
===== Дополнительные примеры =====