Last updated
Last updated
Link:
Общий вид
Примеры
Отправка команды терминалу в контейнер:
Запущенные контейнеры:
Удалить контейнер:
Работа с файлами внутри контейнера: чтобы заменить какой-нибудь файл в контейнере, используется команда docker cp
. Она копирует файл из локальной файловой системы в контейнер:
Где qa_nginx
и /etc/nginx/nginx.conf
— имя контейнера и путь к скачиваемому файлу из контейнера, соответственно, а /tmp/nginx.conf
путь до нового файла в текущей операционной системе.
Остановить контейнер
Удалить все контейнеры, которые остановлены
Если мы удалим наш контейнер и вновь его запустим, то все наши изменения, сделанные через консоль, исчезнут. Чтобы сохранить изменения используется команда docker commit
:
Список установленных образов:
Установить образ из репозитория:
Можно установить образ из tar-архива (gz/gzip/tgz..):
Удалить образ:
Подключение разделов в процессе запуска контейнера (например, если надо передать какие-то файлы на обработку):
Можно устанавливать права сразу:
Другие сетевые адаптеры (можно делать свои):
bridge — сеть между контейнерами на одном хосте (default)
overlay — сеть между контейнерами на разных хостах
macvlan —
...
none
Есть такая проблема. Пусть есть несколько контейнеров, запущенных на одной машине. В случае, если один контейнер выедает все ресурсы (например озу), то от этого падают все контейнеры. Такое поведение не приемлемо, если есть контейнеры критичные и которые by design не могут выжирать столько ресурсов.
Решение — разделять важные и о не очень контейнеры на cgroups
У докера есть опция —cgroup-parent
— ты можешь сделать цгруппу где ограничить общую память до 14 ГБ, а потом внутри запускать безлимитные контейнеры, например (или выставить дополнительные лимиты для контейнеров внутри).
или сделать то же самое через systemd
link:
Например вот ответ где объясняется как.
Подробная документация: Работа с Docker: