Docker
Зеркало docker hub если есть ограничения или проблемы с доступом
mirror.gcr.io/traefik:3.5.0
Commands
Частые команды
Fast install docker
apt update && apt upgrade -y && apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Docker run exec or have entry point use: --entry-point=/bin/bash
docker run --rm -it image-name sh
Build args
docker build . -t myimage --build-arg USER=$USER --build-arg PASSWORD=$PASSWORD
Docker run rm exec
docker run --rm -it tg_webhook_exporter bash
Docker overlay who use (need install jq)
docker inspect $(docker ps -qa) | jq -r 'map([.Name, .GraphDriver.Data.MergedDir]) | .[] | "\(.[0])\t\(.[1])"'
Docker image size
docker ps --format '{{.Names}}\n{{.Image}}:{{.Size}}\n' -s
Docker cp
docker cp <containerId>:/file/path/within/container /host/path/target
Retag for own registory
Скачать необходимый image docker pull
docker pull nginx:1.23.1
Изменить tag
docker tag nginx:1.23.1 registry.gitlab.example.com/test/nginx:1.23.1
Push в свой registry
docker push registry.gitlab.example.com/test/nginx:1.23.1
Docker compose dump run
Запуск тупой команды чтоб контейнер не падал, иногда бывает нужно для дебага
services:
chatops:
image: registry.gitlab.example.com/test/myubuntu-image:v.0.1
command: tail -F /dev/null
Docker context remote
Создание контекста для удаленного сервера
docker context create vps --docker "host=ssh://me@example.com"
docker context use vps
Logging
Пример конфигурации
version: '3.8'
x-logging:
&default-logging
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
tag: "{{.Name}}"
services:
nginx-app:
container_name: nginx-app
image: nginx
labels:
logging: "promtail"
logging_jobname: "containerlogs"
ports:
- 8080:80
networks:
- app
logging: *default-logging
Docker плагин логирования
Установка драйвера логирования loki
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all
Пример конфигурации docker-compose с логированием в loki
services:
myservice:
image: myimage
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
loki-external-labels: job=dockerlogs