Частный реестр Docker как реестр по умолчанию на локальном компьютере и сервере

== сравнивает ссылки на объекты.

.equals() сравнивает значения String.

Иногда == дает иллюзии сравнения значений String, как в следующих случаях:

String a="Test";
String b="Test";
if(a==b) ===> true

Это связано с тем, что при создании любого строкового литерала JVM сначала ищет этот литерал в пуле строк, и если он найдет совпадение, эта же ссылка будет передана новой String. Из-за этого получаем:

(a == b) ===> true

                       String Pool
     b -----------------> "test" <-----------------a

Однако == не выполняется в следующем случае:

String a="test";
String b=new String("test");
if (a==b) ===> false

В этом случае для new String("test") оператор new String будет создан в куче, и эта ссылка будет указана на b, поэтому b будет дана ссылка на кучу, а не на String pool.

Теперь a указывает на String в пуле String, а b указывает на String в куче. Из-за этого мы получаем:

, если (a == b) ===> false.

                String Pool
     "test" <-------------------- a

                   Heap
     "test" <-------------------- b

Пока .equals() всегда сравнивает значение String, поэтому дает true в обоих случаях:

String a="Test";
String b="Test";
if(a.equals(b)) ===> true

String a="test";
String b=new String("test");
if(a.equals(b)) ===> true

Таким образом, использование .equals() всегда лучше.

0
задан Thomasleveil 10 March 2019 в 21:26
поделиться

1 ответ

Вы можете запретить на брандмауэре подключать сервер к dockerhub. Таким образом, dockerd будет вынужден использовать только ваш реестр. Но это будет работать только для настроенного зеркала.

На самом деле, использовать только личный реестр вместо dockerhub невозможно из коробки. Существуют специальные модификации dockerd, которые позволяют вам настроить его - см. Эту ветку Как изменить стандартный реестр docker с docker.io на мой личный реестр? .

0
ответ дан Miq 10 March 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: