Задание: Создайте свой кастомный образ nginx на базе alpine. После запуска nginx должен отдавать кастомную страницу (достаточно изменить дефолтную страницу nginx)
Создаём Dockerfile следующего содержания:
FROM alpine
LABEL maintainer="Sarajkin Andrej [email protected]"
ENV TZ=Europe/Moscow
RUN apk update && apk upgrade && apk add nginx
COPY ./html/html /var/www/html/default/
COPY ./html/default.conf /etc/nginx/http.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Создём образ на основе Alpine:
docker build -f ./DockerfileNginxAlpine -t nargamard/nginx .
Запускпеми контейнер на основе созданного образа и пробраываем порт 80:
docker run -dti -p 80:80 nargamard/nginx
Смотрим запущенные контейнеры:
[andrej@home-srv OTUS-Task13]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eeef65501327 nargamard/nginx "nginx -g 'daemon of…" 15 minutes ago Up 15 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp flamboyant_swanson
В браузере открываем http://localhost:80 и читаем на нашей кастомной странице о Достоевском:
Теперь запушим образ на DockerHub:
[andrej@home-srv OTUS-Task13]$ docker login
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /home/andrej/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[andrej@home-srv OTUS-Task13]$ docker push nargamard/nginx:latest
The push refers to repository [docker.io/nargamard/nginx]
ae3e03d12c70: Pushed
cf9e25b3429b: Pushed
1edce115ac40: Pushed
d4fc045c9e3a: Mounted from library/alpine
latest: digest: sha256:ed5171730883a360f870eb66cd216f9fa2486994ea5c38ab32d3255a76f51505 size: 1155
Ссылка на образ на DockerHub: https://hub.docker.com/repository/docker/nargamard/nginx
Определите разницу между контейнером и образом, вывод опишите в домашнем задании.
Образ - это шаблон, на основании которого будут запускаться контейнеры, представляет собой среду выполнения, куда могут быть дополнительно установлены нужные пакеты, добавлены файлы конфигурации сервисов.
Контейнер - это работающий экземпляр образа. На основе одного образа могут быть запущены несколько контейнеров.
Можно ли в контейнере собрать ядро?
Можно. Во всяком случае не встретилось информации, почему это нельзя сделать.