Почему я не могу подтолкнуть изображение в локальный реестр докеров, начатый с TestContainers?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему я не могу подтолкнуть изображение в локальный реестр докеров, начатый с TestContainers?

Сообщение Anonymous »

Я пытаюсь создать локальный реестр Docker, используя TestContainers и программатически подтолкнуть к нему изображение. Тем не менее, я получаю ошибку, отказавшаяся от подключения при попытке натолкнуть изображение. Первый тест, который проверяет, работает ли реестр работает, поэтому я знаю, что реестр работает. < /P>
Вот мой тестовый класс: < /p>
class DockerRegistryTest {

@Rule
public static GenericContainer registry;
private static String registryAddress;
private static DockerClient dockerClient;

@BeforeAll
static void startRegistry() {
registry = new GenericContainer(DockerImageName.parse("registry:2"))
.withExposedPorts(5000)
.waitingFor(Wait.forHttp("/v2/").forStatusCode(200));

registry.start();
assertTrue(registry.isRunning(), "Registry is running");

registryAddress = registry.getHost() + ":" + registry.getMappedPort(5000);
System.out.println("Registry available at: " + registryAddress);

DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder().build();
dockerClient = DockerClientImpl.getInstance(config, new ApacheDockerHttpClient.Builder()
.dockerHost(config.getDockerHost())
.sslConfig(config.getSSLConfig())
.build());
}

@AfterAll
static void tearDown() {
if (registry != null) {
registry.stop();
}
}

@Test
void testPushImageToRegistry() throws InterruptedException {
String localImage = "busybox:latest";
dockerClient.pullImageCmd(localImage).start().awaitCompletion();

String registryImageTag = registryAddress + "/busybox:latest";
dockerClient.tagImageCmd(localImage, registryAddress + "/busybox", "latest").exec();

dockerClient.pushImageCmd(registryImageTag)
.withAuthConfig(new AuthConfig()) // No authentication needed
.start()
.awaitCompletion();

System.out.println("Successfully pushed image to registry: " + registryImageTag);
assertTrue(true);
}
}
< /code>
Однако, когда я запускаю тест, я получаю эту ошибку: < /p>
com.github.dockerjava.api.exception.DockerClientException: Could not push image: failed to do request:
Head "https://localhost:57244/v2/busybox/blob ... 2606eefdfa":
dial tcp [::1]:57244: connect: connection refused
< /code>
Вещи, которые я попробовал < /p>

вручную теги и вставьте изображение в реестр, результат все еще подключено ошибка. < / / li>
Я побежал < /li>
< /ol>
C:\Users\codex>curl http://localhost:/v2/_catalog
{"repositories":[]}
< /code>
Итак, я знаю, что репозиторий работает и работает < /p>
Я также добавил это в testcontainers.properties
ryuk.container.image=testcontainersofficial/ryuk
, чтобы мой тестовый контейнер был в первую очередь. >

Обновление 1: < /p>
Я изменил < /p>
`registryAddress = registry.getHost() + ":" + registry.getMappedPort(5000);`

to RegistryAddress = "0.0.0.0" + ":" + Registry.getMapedPort (5000); Но теперь я получаю
`com.github.dockerjava.api.exception.DockerClientException: Could not push image: failed to do request: Head "https://0.0.0.0:60075/v2/busybox/blobs/ ... 3c3f2496de": http: server gave HTTP response to HTTPS client`


Подробнее здесь: https://stackoverflow.com/questions/794 ... containers

Вернуться в «JAVA»