Создайте подобный сайт на WordPress.com
Начало работы

Docker. Часть 1. Основы основ

Все чаще я стал слышать про Docker, но пока не могу понять, где я смогу применять его в своей работе. Поэтому я решил разобраться с ним, чтобы улучшить свой скилл и написать ещё одно умное слово в своём резюме))

Попробую объяснить простыми словами то, что я понял про Docker:

Docker — маленькая виртуальная машина. Обычно цель данной машины поддерживать работу одного приложения или проекта…

Официальный сайт проекта — docker.com

Изучая Docker, надо знать немного терминов-компонентов:

  • Docker Engine — ПО Docker, установленное на сервер или компьютер
  • Docker Container — отдельный контейнер Docker. Работает независимо от других контейнеров. Создаётся из Docker Image, имеет свою директорию.
  • Docker Image — образ (шаблон), из которого можно развернуть Docker Container.
  • Docker Registers — место, где располагаются образы и откуда их можно скачать или залить туда собственный образ. Регистры бывают публичными и приватными. Публичный регистр — DockerHub (hub.docker.com).
  • Dockerfile — YAML-файл, который описывает Docker Image (конфиг образа).

Как примерно работает Docker и его контейнеры?

  1. Устанавливаем Docker Engine и создаём или скачиваем Dockerfile
  2. Запускаем Build Dockerfile и получаем из него Docker Image
  3. Выполняем Run Docker Image и получаем Docker Container

Установка и настройка Docker Engine на linux (Debian 10):

  1. Выполняем обновление репозиториев и ставим пакет apt-transport-https:
sudo apt update 
sudo apt install apt-transport-https

2. Устанавливаем gpg-ключ от репозитория download.docker.com

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

3. Указываем в параметрах репозитория, что планируем скачивать только стабильные версии

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

4. Далее, снова обновляем список пакетов и устанавливаем docker-ce. CE — community edition — бесплатная версия от Docker.

sudo apt update
sudo apt install docker-ce

5. Проверить, что docker установлен можно командами docker —v или systemctl status docker

vagrant@d10-sysops:~$ docker -v
Docker version 19.03.8, build afacb8b7f0
vagrant@d10-sysops:~$ systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-09-13 17:50:37 GMT; 1min 43s ago
     Docs: https://docs.docker.com
 Main PID: 336 (dockerd)
    Tasks: 13
   Memory: 137.7M
   CGroup: /system.slice/docker.service
           └─336 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
vagrant@d10-sysops:~$

6. На этом установка Docker Engine завершена. Нужно понимать, что Docker, почти на все свои команды требует права администратора, чтобы перед каждой командой не вводить sudo, можно добавить пользователя (с которого вы работаете) в группу Docker. Обратите внимание: пользователь получит права Администратора.

sudo usermod -aG docker $USER

Базовые команды Docker

Самая первая команда для новичков — это docker run hello-world

vagrant@d10-sysops:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:4cf9c47f86df71d48364001ede3a4fcd85ae80ce02ebad74156906caff5378bc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

vagrant@d10-sysops:~$

После ввода данной команды Docker начнёт искать Dockerfile с именем hello-world, если файл с таким именем будет не найден, то Docker начнём искать на DockerHub Docker Image с именем hello-world.

Просмотр всех Docker Images:docker images
Поиск на dockerhub образа с именем tomcat:docker search tomcat
Скачать образ tomcat:docker pull tomcat
Показать запущенные Docker-контейнерыdocker ps
Показать все Вocker-контейнерыdocker ps -a
Удалить Docker Imagedocker rmi <image name>
Удалить Docker Containerdocker rm <container id>
Запустить Docker Containerdocker start <container id>
Остановить Docker Containerdocker stop <container id>

Практический пример

Задача: развернуть веб-сервер nginx через docker, настроить, чтобы веб-страница открывалась на порту 1234, внести изменения на главную страницу, потом, на основе данного контейнера создать новый образ, удалить старый образ и удалить сам контейнер.

  1. Находим Docker Image c помощью команды (выведем только 4 самых популярных образа и шапку таблицы): docker search nginx | head -n 5
Первым в списке как раз будет официальный Docker Image от nginx

2. Скачаем Docker Image nginx к нам: docker pull nginx

Начнётся скачивание Docker Image nginx

3. Далее нам нужно запустить Docker контейнер. Предварительно пробросим порт, по которому будет доступна веб-страница, в нашем случае это порт 1234. Вводим команду для фонового запуска контейнера на основе образа: docker run -d -p 1234:80 nginx

Помимо запуска контейнера в фоновом режиме, его можно запустить в интерактивном (вместо параметра -d указываем параметр -it), тогда в терминале вы увидите много служебной информации, а при нажатии клавиш ctrl+c у вас остановится контейнер.

Для проверки можно ввести команду просмотра всех активны контейнеров: docker ps
Теперь самое время проверить, как работает Docker Container. Зайдём на веб-страницу и посмотрим результат. Отлично, nginx заработал.

4. Если потребуется, то мы можем зайти внутрь Docker контейнера и внести там изменения:

vagrant@d10-sysops:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
74350aa9180c        nginx               "/docker-entrypoint.…"   15 minutes ago      Up 15 minutes       0.0.0.0:1234->80/tcp   quirky_einstein
vagrant@d10-sysops:~$ docker exec -it 74350aa9180c /bin/bash
root@74350aa9180c:/#

5. Изменим содержимое веб-страницы внутри контейнера и перезапустим контейнер:

root@74350aa9180c:~# echo "TEST DOCKER CONTAINER" > /usr/share/nginx/html/index.html
root@74350aa9180c:~# exit
vagrant@d10-sysops:~$
vagrant@d10-sysops:~$ docker stop 74350aa9180c
vagrant@d10-sysops:~$ docker start 74350aa9180c
Проверяем, что страница поменялась.

6. Допустим мы внесли много изменений в контейнер и не хотим его заново настраивать. В таком случае можно просто сохранить изменения в отдельный Docker Image командой: docker commit <container id> <repositiry>:<tag>

vvagrant@d10-sysops:~$ docker commit 74350aa9180c testnginx:v1
ssha256:8d98f8491f4d7b56030f910f3992466f4e83b1ca0312c20c4847d4218e98c07a
vvagrant@d10-sysops:~$ docker images
RREPOSITORY              TAG                 IMAGE ID            CREATED             
ttestnginx               v1                  8d98f8491f4d        8 seconds ago       
nnginx                   latest              7e4d58f0e5f3        4 days ago          1

Теперь, на основе этого образа мы можем сделать ещё несколько независимых контейнеров, которые будут работать на других портах:

vagrant@d10-sysops:~$ docker run -d -p 1235:80 testnginx:v1
362e605e7f9e1ec00837825bdc5d3fe4a6f7f9e5a892283fa617c137ebcbc65b
vagrant@d10-sysops:~$ docker run -d -p 1236:80 testnginx:v1
fe2e1e5d054fd0f3de6cbf9f174c45853c10b9c5b172097ebb266641ddcc34de

На этом основы Dokcer заканчиваются, спасибо, за внимание.

Большую часть информации для этой статьи я взял из данного видео — https://www.youtube.com/watch?v=I18TNwZ2Nqg&t=1931s&ab_channel=ADV-IT

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: