Большинство образов на 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.git
cd 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:40000
docker-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