Docker
🤔 Зачем он лично мне
Docker позволяет без специальных настроек системы установить и настроить почти любой нужный сервис одной командой. По сути команда создает "виртуалку", в которой уже установлен нужный софт. Соответственно, и обновление сервиса это тоже просто "скачать новый образ и запустить". Если что-то из уст ановленного больше не нужно – это "что-то" так же удаляется одной командой, не оставляя мусора. При этом на самом хосте нужен только docker и больше никаких дополнительных зависимостей.
🪄 Интересные инструменты
- micro - удобный консольный текстовый редактор, который удобно закидывать внутрь docker контейнера (упоминался в блоге)
- lazydocker – UI для Docker. Использую сам, упоминался в блоге
- dry – интересная альтернатива для 👆
- portainer – браузерный UI для управления всем Docker
- composerize – конвертировать docker run команду в docker-compose формат
- supdock –
alias docker=supdock
позволяет удобнее выполнять некоторые docker команды
⌨️ Полезные команды
# Смотреть логи всех сервисов через браузер
# Использует https://github.com/amir20/dozzle
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -p 8888:8080 amir20/dozzle:latest
# получить лог и следить за обновлением
docker logs -fn 100 CONTAINER_NAME
docker compose logs -f --tail 100
# вход в bash/sh контейнера (сервиса)
# чтобы посмотреть файлы, выполнить redis-cli, импортировать БД и т.д.
docker exec -it CONTAINER_NAME sh
docker compose exec traefik sh
# инфа контейнера
# - узнать путь к volume контейнера (когда надо бекапнуть)
# - узнать ip контейнера. Полезно, когда хочешь с например REDIS GUI на своем компе подключиться к REDIS в контейнере н а сервере (port forwarding)
docker inspect CONTAINER_NAME
# для IP искать .NetworkSettings.Networks.*.IPAddress
💡 Советы
Удобное создание Dockerfile
Когда нужно сделать Dockerfile, то делаю контейнер с базового image и внутри ввожу команды одна за одной, пока не получу желаемый результат. В процессе все эти команды выписываю в текстовый файл.
docker run --rm -it base_image_name sh
Если где-то зафейлился, то пишу exit и ввожу команду заново. Контейнер вайпается
Использование алиасов
Здесь можно найти кучу полезных алиасов, которые могут пригодиться.
Как минимум, я рекомендую сделать alias dc='docker compose'
и посмотреть dip
из ссылки выше
Еще я сделал свой алиас dps
, который показывает компактный docker ps без всего лишнего. О нем написал в подготовке Lunux хоста
🧱 Юзаю/юзал сервисы
Список неполный. Просто каждому свое
- traefik – альтернатива nginx для контейнеров. Сам делает SSL сертификаты и после пер вой настройки очень легко подключать новые сервисы не перезагружая traefik
- watchtower – автообновление контейнера, когда обновился image
- cloudflare-ddns – обновляет IP в CF. Прикручиваю к web сервисам, чтобы при переносе на новый хост не нужно было лезть в CF для обновления IP
- telegram-bot-api для моего @video_screenshoter_bot (бот присылает скрины участков видео). Скидываешь боту гору порнушки с каналов, а он тебе присылает скрины и ты решаешь годнота или нет 👍. Без сервиса бот упирался в лимит размера файла
- ispy agent – видеонаблюдение.
Ctrl + K
, писал о нем - ghost cms, pritunl vpn, outline vpn, mariadb, redis, laradock, luarocks, openresty...
Быстро развернуть веб файловый менеджер
tinyfilemanager – запустил и работаешь. admin:admin@123
. Не открывает .mkv видео
# будет доступен по порту 12345
docker run -d -v $PWD:/var/www/html/data -p 12345:80 tinyfilemanager/tinyfilemanager:master
filestash – вроде admin:admin
, нужно кликнуть Local для доступа к локальной файловой системе. Даже открывает mkv вроде
docker run -d -v $PWD:/var/www/html/data -p 12345:8334 machines/filestash
Еще есть filebrowser, самый популярный так то. Не помню пробовал ли
📒 Почитать
- Awesome docker – список кучи всего связанного с Docker
- Шпаргалки по Docker