Докер Dockerfile «От» загружает изображение?

Я следил за этой статьей, чтобы создавать мультидоменные веб-сайты
https://carlosvin.github.io/langs/en/posts/reverse-proxy-multidomain-docker/
Это базовый тест, очень простой. Всего три файла.

Изменить
C:\Windows\System32\драйверы\etc\hosts

127.0.0.1       a.local  
127.0.0.1       b.local  

C:\web\мультидомен\docker-compose.yml

a:
  build: a
  environment:
    VIRTUAL_HOST: a.local
  restart: always

b:
  build: b
  environment:
    VIRTUAL_HOST:  b.local
  restart: always

nginx-proxy:
  image: jwilder/nginx-proxy
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro

  restart: always
  privileged: true

C:\web\мультидомен\a\Dockerfile

FROM httpd:2.4
RUN echo "<html><body><h1>A</h1>App A works!</body></html>" > /usr/local/apache2/htdocs/index.html

C:\web\мультидомен\b\Dockerfile

FROM httpd:2.4
RUN echo "<html><body><h1>B</h1>App B works!</body></html>" > /usr/local/apache2/htdocs/index.html

Это все папки и файлы. Затем:

C:\web\multidomain> docker-compose up -d

Это реально работает. Очень очень просто.

Но мой вопрос: Есть строка "FROM httpd:2.4". Насколько я знаю, это загрузит изображение и использует его, не так ли? Он должен появиться в моем пользовательском интерфейсе докера > раздел «Изображения». Но у моего докера нет изображения с именем httpd: 2.4.

Если нет изображения с именем httpd:2.4, почему оно все еще работает?

х х х х х х

PS C:\Docker\MultiDomainBasic> docker image ls
REPOSITORY                TAG         IMAGE ID       CREATED          SIZE
multidomainbasic_a        latest      fb826b8c2db3   44 seconds ago   144MB
multidomainbasic_b        latest      23b08c2f23ff   45 seconds ago   144MB
sail-8.1/app              latest      4451e0a34f0f   47 hours ago     1.09GB
wordpress                 php7.4      744143078625   2 days ago       605MB
memcached                 alpine      bcea36e93e26   4 days ago       8.21MB
nginx                     alpine      51696c87e77e   4 days ago       23.4MB
jwilder/nginx-proxy       alpine      dfb8bfd11460   5 days ago       42.3MB
mysql                     8.0         667ee8fb158e   10 days ago      521MB
php                       8.1.4-fpm   8c08d993542f   11 days ago      449MB
mailhog/mailhog           latest      4de68494cd0d   20 months ago    392MB

Может образ httpd находится внутри multidomainbasic_a, а multidomainbasic_b?? Он завернут?

Чтобы расширить (и, следовательно, запустить образ сборки из Dockerfile), мы должны загрузить базовый образ (и его базовый образ, и его базовый образ, ...). Так что да, изображение должно быть там. Что показывает docker image ls? Вы видите это там?

Turing85 09.04.2022 15:40

Означает ли "интерфейс докера" Рабочий стол Docker (для Windows)?

Gino Mempin 09.04.2022 15:54

«образ докера ls»> нет httpd. «docker UI» означает Docker Desktop для Windows, да.

ronrun 09.04.2022 15:57

есть хороший инструмент для проверки ваших изображений: попробуйте его. github.com/wagoodman/дайв

Dmitry 09.04.2022 16:14
0
4
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Dockerfile определяет, как создается ваш новый образ. Вы не используете образ httpd, вы используете два разных образа, которые расширяют образ httpd:

multidomainbasic_a        latest      fb826b8c2db3   44 seconds ago   144MB
multidomainbasic_b        latest      23b08c2f23ff   45 seconds ago   144MB

Слои из образа httpd будут найдены в каждом из них с одним дополнительным слоем, созданным на шаге RUN в вашем Dockerfile.

Другие вопросы по теме