==================================================================================== === Для того, чтобы содержимое переменной (конкретной одной, а может и через директиву env_file тоже) из .env корректно передавалось в docker-compose, нужно выполнять docker-compose up ИЗ ТОГО ЖЕ КАТАЛОГА, ГДЕ НАХОДИТСЯ .env. ОХУЕННО, ДА? Ни указать через параметр в docker-compose, ни ожидать подтянивания .env из директории того же уровня, что и запускаемый docker-compose.yml, а именно перейти в диру! cd, блядь!
==================================================================================== ==================================================================================== === Запустить контейнер в фоне: ==================================================================================== # docker run -d --rm "image:tag" ==================================================================================== === Получить имена контейнеров: ==================================================================================== # docker ps --format '{{.Names}}' ==================================================================================== === Пересобрать только один контейнер: ==================================================================================== # docker-compose build service ==================================================================================== === Получать сертификаты letsencrypt: (ed. избыточная конфигурация) ==================================================================================== # == Нужно добавить файл default.conf в список монтируемых файлов в контейнер со следующим содержимым. == == В nginx-letsencrypt и nginx-proxy из подключенного в vhost.d файла должны передаваться параметры: == location ^~ /.well-known/acme-challenge/ { auth_basic off; auth_request off; allow all; root /usr/share/nginx/html; try_files $uri =404; break; } == Без этого сертификаты letsencrypt получаться не будут. == ==================================================================================== === Войти в контейнер с переопределением entrypoint: ==================================================================================== # docker run -it --entrypoint sh image_name ==================================================================================== === Удалить dangling образы: ==================================================================================== # docker rmi $(docker images --filter "dangling=true" -q --no-trunc) ==================================================================================== === Удалить остановленные контейнеры: ==================================================================================== # docker rm $(docker ps --filter status=exited -q) ==================================================================================== === Удалить все неиспользующиеся контейнеры, сети, вольюмы, образы: ==================================================================================== # docker system prune -a ==================================================================================== === Удалить все неиспользующиеся образы: ==================================================================================== # docker image prune -a ==================================================================================== === Удалить кэш докера (/var/lib/docker/overlay2): ==================================================================================== # docker builder prune ==================================================================================== === Удалить конкретный образ: ==================================================================================== # docker rmi image:latest ==================================================================================== === Удалить volumes-сироты: ==================================================================================== # docker volume rm $(docker volume ls -qf dangling=true) ==================================================================================== === Импортировать базу в mysql server в контейнере: ==================================================================================== # docker exec -i 111 mysql -h 127.0.0.1 -P 3306 -u user -p db_name < /tmp/db_name.sql ==================================================================================== === Использовать кастомную сеть в docker-compose: ==================================================================================== # networks: network_name: driver: bridge ipam: config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1 == Для каждого контейнера, который должен быть в сети, добавить: networks: - network_name ==================================================================================== === Запретить трафик в кастомную сети, разрешив перед тем доступ к 80-му и 3306, находящимся в контейнере (не до конца доконфижено): ==================================================================================== # iptables -I DOCKER-USER -i eth0 -p tcp --dport 80 -j ACCEPT iptables -I DOCKER-USER -i eth0 -p tcp --dport 3306 -s 127.0.0.1 -j ACCEPT iptables -I DOCKER-USER -i eth0 ! -s 172.18.0.0/16 -j DROP ==================================================================================== === Отправлять созданный образ на удаленный хост: ==================================================================================== # docker save -o example.tar image_name_or_id gzip -c example.tar > example.tar.gz scp example.tar.gz user@server:/dir == on remote pc: gzip -d /dir/example.tar.gz docker load -i /dir/example.tar ==================================================================================== === Cannot autolaunch D-Bus without X11 $DISPLAY: ==================================================================================== # sudo apt-get install pass gnupg2 # create a gpg2 key gpg2 --gen-key # create the password store using the gpg user id pass init $gpg_id ==================================================================================== === Особенности .env и env_file: ==================================================================================== # == Don't confuse the .env file and the env_file option! == They serve totally different purposes! == The .env file feeds those environment variables only to your Docker Compose file, which in turn, can be passed to the containers as well. == But the env_file option only passes those variables to the containers and not the Docker Compose file == https://web.archive.org/web/20231229132236/https://stackoverflow.com/questions/29377853/how-can-i-use-environment-variables-in-docker-compose ==================================================================================== === Показать процессы внутри контейнера: ==================================================================================== # docker top $CONTAINER ==================================================================================== === Показать события в контейнерах: ==================================================================================== # docker events ==================================================================================== === Показать конфигурацию портов контейнера: ==================================================================================== # docker port $CONTAINER