Добавить README.md
This commit is contained in:
130
README.md
Normal file
130
README.md
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
# Домашнее задание 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
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
### Разница между контейнером и образом
|
||||||
|
|
||||||
|
1. Образ это заготовленное приложение. В нем содержаться неизменемые данные.
|
||||||
|
2. Контейнер, это запущенный образ! При запуске контейнера из образа, мы ужем можем создать volume, в котором будем храниться все наши данные.
|
||||||
|
|
||||||
|
|
||||||
|
### Можно ли в контейнере собрать ядро
|
||||||
|
|
||||||
|
Нет нельзя, так контейнеры работают с ядром хоста на котором запускаютcя/
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user