Files
homework19/README.md
2026-01-24 19:59:11 +03:00

131 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Домашнее задание 19
## Docker
Базовые принципы работы с Docker
Цель: запустить свой кастомный образ nginx на базе alpine
### Подготовка
Созадем новый Dockerfile с помощью vi
Подготовим свой файл index.html со следующим содержимом
```bash
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Моя страница</title>
</head>
<body>
<h1>Hello world!</h1>
<p>Моя страница HTML в контейнере my-nginx-docker</p>
</body>
</html>
```
Создадим докер файл со следующим содержимом
```bash
#Исходный образ
FROM nginx:alpine
#Копируем наш html
COPY index.html /usr/share/nginx/html/index.html
#ОТкрываем 80 порт
EXPOSE 80
#Запускаем nginx
CMD ["nginx", "-g", "daemon off;"]
```
### Сборка
Сборка нашего контейнера
```bash
root@ubuntu-pc:/home/alex/docker# docker build -t my-nginx-docker .
[+] Building 6.5s (7/7) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 152B 0.0s
=> [internal] load metadata for docker.io/library/nginx:alpine 2.3s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 270B 0.0s
=> [1/2] FROM docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 3.6s
=> => resolve docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 0.0s
=> => sha256:e096540205d5d1ab2c2647d716491020d81e3f167a33606665b193d75540857f 20.18MB / 20.18MB 2.5s
=> => sha256:0abf9e5672665202e79f26f23ef5dbd12558e2ea51ac32807922ab76fdb24ab0 1.40kB / 1.40kB 0.7s
=> => sha256:085c5e5aaa8eb4b957ecf253c74f16a6a5551231de3fb7c3ac74814a6bf17e06 1.21kB / 0.9s
=> => sha256:33f95a0f3229b49e777082e801b882b13fcc5b4e389410ce8eb066f4d58c71b9 403B / 403B 0.9s
=> => sha256:da7c973d8b92a1555060972c8849a332c93bfe2608c11faeee2098c4cfbe8c3d 953B / 953B 0.4s
=> => sha256:567f84da6fbd4287d40a5837485469435c40a81f9a94e98395b6385d3600643a 626B / 626B 0.4s
=> => sha256:25f453064fd3e8a9754b6e51b86c637e13203cbfc748fcf73f3c8b2d10816ae3 1.86MB / 1.86MB 0.9s
=> => sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 3.86MB / 3.86MB 1.7s
=> => extracting sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 0.1s
=> => extracting sha256:25f453064fd3e8a9754b6e51b86c637e13203cbfc748fcf73f3c8b2d10816ae3 0.1s
=> => extracting sha256:567f84da6fbd4287d40a5837485469435c40a81f9a94e98395b6385d3600643a 0.0s
=> => extracting sha256:da7c973d8b92a1555060972c8849a332c93bfe2608c11faeee2098c4cfbe8c3d 0.0s
=> => extracting sha256:33f95a0f3229b49e777082e801b882b13fcc5b4e389410ce8eb066f4d58c71b9 0.0s
=> => extracting sha256:085c5e5aaa8eb4b957ecf253c74f16a6a5551231de3fb7c3ac74814a6bf17e06 0.0s
=> => extracting sha256:0abf9e5672665202e79f26f23ef5dbd12558e2ea51ac32807922ab76fdb24ab0 0.0s
=> => extracting sha256:e096540205d5d1ab2c2647d716491020d81e3f167a33606665b193d75540857f 0.3s
=> [2/2] COPY index.html /usr/share/nginx/html/index.html 0.2s
=> exporting to image 0.2s
=> => exporting layers 0.1s
=> => exporting manifest sha256:4d9863fdcda2ef90c8297d712bb7862837b76ef06145a14a7a3a1cd2ac11122d 0.0s
=> => exporting config sha256:5f50c708b1e0567e0f93e58342cbfed61f35acf7c486378fa7ffad0e279428b1 0.0s
=> => exporting attestation manifest sha256:5b9f4517b95b7095805607d5c3f3c2f47e28b3945ae8fd7c5a96cdaca372fa4c 0.0s
=> => exporting manifest list sha256:68717d2616d33e674e56626c1c0e35994f3a2cb21b769dea4addd8e4eca3b65c 0.0s
=> => naming to docker.io/library/my-nginx-docker:latest 0.0s
=> => unpacking to docker.io/library/my-nginx-docker:latest 0.0s
```
Посмотрим список образов
```bash
root@ubuntu-pc:/home/alex/docker# docker image ls
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
my-nginx-docker:latest d2424de4df8e 92.2MB 25.9MB U
````
Запускает контейнер из нашего образа. Будем пробрасывать порт 8080
```bash
root@ubuntu-pc:/home/alex/docker# docker run -d -p 8080:80 --name my-nginx my-nginx-docker:latest
ff6a1dca2f2fa58922fdb768e3200026184dd73e98603577e3d17b0a9d6ad7be
```
Проверяем статус запушенного контейнера.
```bash
root@ubuntu-pc:/home/alex/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff6a1dca2f2f my-nginx-docker:latest "/docker-entrypoint.…" 34 seconds ago Up 33 seconds 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp my-nginx
```
Контейнер запущен! Так же можем открыть в браузере нашу страницу http://127.0.0.1:8080
![19_1](images/19_1.png)
### Разница между контейнером и образом
1. Образ это заготовленное приложение. В нем содержаться неизменемые данные.
2. Контейнер, это запущенный образ! При запуске контейнера из образа, мы ужем можем создать volume, в котором будем храниться все наши данные.
### Можно ли в контейнере собрать ядро
Нет нельзя, так контейнеры работают с ядром хоста на котором запускаютcя/