Большинство образов на docker.com собираются локально и у скачивающего нет возможности убедиться, что в образах нет вредоносного кода. Для того, чтобы у скачивающих образы было доверие к источнику требуется правильно составлять файл сборки. Но не все этому правилу следует, поэтому требуется выработать последовательность действий в случае, если образ не вызывает доверие, но он все же требуется для выполнение задачи.
Инструкция
На примере репозитория: GitHub - pufferffish/wireproxy: Wireguard client that exposes itself as a socks5 proxy
Итак, мы пытаемся найти контейнер, который был собран без использования локальных файлов:
hub.docker.com/search?q=wireproxy
Мы не находим такой и тогда нам требуется собрать его локально из репозитория, код которого мы проверили или же доверяем по другим причинам.
git clone https://github.com/pufferffish/wireproxy.gitcd wireproxyСобираем образ:
docker build -t wireproxy:v1.0.9 .docker tag wireproxy:v1.0.9 localhost/wireproxy:v1.0.9Теперь этот образ можно использовать для запуска:
services:
wireproxy:
image: localhost/wireproxy:v1.0.9
restart: unless-stopped
container_name: wireproxy
ports:
- 40000:40000docker-compose up --build -dНо можно пойти дальше и создать репозиторий, где будет храниться файл сборки не требующий доверия.
Замена образа
Для замены образа достаточно собрать новый образ с тем же тегом:
docker build -t wireproxy:v1.0.9 .docker tag wireproxy:v1.0.9 localhost/wireproxy:v1.0.9Старые образы потеряют эти теги и чтобы их удалить требуется выполнить:
docker image prune -f