Имея несколько пк в локальной сети удобнее кешировать репозитории на локальном ресурсе.
Плюсом всякое бывает с санкциями и удобно иметь свое зеркало. на всякий случай.
Сперва создаем папку
mkdir /storage/nexus-data
Чтобы докер смог создать в папке свои файлы нужно дать права
chown 200:200 /storage/nexus-data
docker run -d \ --restart=always \ --name nexus \ -p 8081:8081 \ -p 8082:8082 \ -p 8083:8083 \ -v /storage/nexus-data:/nexus-data \ sonatype/nexus3
Вариант второй, если это личный ресурс, а железе не самое, например файлопомойка, лучше ограничить в памяти
docker run -d \ --restart=always \ -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" \ --name nexus \ -p 8081:8081 \ -p 8082:8082 \ -p 8083:8083 \ -v /storage/nexus-data:/nexus-data \ sonatype/nexus3
я не просто так пробросил 8082 и 8083 порты помимо основного 8081, там будут наши репозитории.
установка длится долгое время, нужно подождать
логи смотреть командой (nexus это идентификатор)
docker logs -f nexus
Готовность будет когда появится такое сообщение
------------------------------------------------- Started Sonatype Nexus OSS 3.69.0-02 -------------------------------------------------
Пароль для первого входа можно узнать двумя способами, первый это зайти в контейнер
docker exec -it nexus /bin/bash
cat /nexus-data/admin.password
а второй способ - локальная папка, которую прокинули
cat /storage/nexus-data/admin.password
Заходим по адресу http://192.168.1.33:8081 (айпи нашего компа)
Далее создаем новый пароль
Я провел испытания, выдернул провод из роутера, удалил образ и снова сделал докер пулл, всё успешно скачалось…
Первым делом заходим в настройки, Security/Anonymous access
Далее тут же в Security/Realms
Активируем Docker Bearer Token, если этого не сделать, то даже docker login не будет работать…
Заходим в Repositories, create
Выбираем Docker (proxy)
Далее указываем имя, включаем http порт и пишем например 8082 (ведь его мы пробросили в контейнер)
Remote storage: https://registry-1.docker.io
Docker Index - Use Docker Hub
Теперь пропишем в /etc/docker/daemon.json
{ "insecure-registries": ["192.168.1.33:8083"], "registry-mirrors": ["http://192.168.1.33:8083"] }
Первый параметр говорит что на данное зерркало нужно ходить не по https, а по http
А второй параметр указывает наше зеркало с портом
Дальше ребутим докер и проверяем
docker pull rabbitmq docker pull mysql
И смотрим в наш репозиторий
Отдельно нужно загуглить момент по кешу, его времени жизни, но к этому я вернусь позже.