понедельник, 1 апреля 2024 г.

Docker. Первые контейнеры

Источник: php.dragomano.ru

Структура каталогов:

~/develop/web/project/

                 nginx/      - сервис web-сервера

               php-fpm/      - сервис php8.2

                 mysql/      - сервис mysql


I. Создание сервиса Nginx

i.1. Узнаем версию docker compose:

$ docker compose version

Docker Compose version v2.25.0


i.2. В каталоге сервиса nginx создаем docker-compose.yml-файл следующего содержания:

version: '2.25.0'

# Services

    services:

        # Nginx Service

        nginx:

            image: nginx:1.21

            ports:

                - 80:80


i.3. Переходим  каталог `~/develop/web/project/nginx`:

$ cd ~/develop/web/project/nginx


i.4. Запускаем наш контейнер на выполнение в фоновом (`-d`) режиме:

$ docker compose up -d


i.5. Просматриваем контейнеры запущенные в данный момент:

$ docker compose ps


i.6. Проверяем работу нашего сервиса:

$ wget http://localhost:80

В результате выполнения в каталоге */nginx появится файл index.html, его можно прочитать любым текстовым редактором nano, vim или др.

i.7. Для остановки контейнера выполняем:

$ docker compose stop


P.S. Разница между контейнером и сервисом следующая, сервис — один из компонентов приложения, перечисленных в docker-compose.yml. Каждый сервис ссылается на образ, который используется для запуска и остановки контейнеров на основе этого образа.


i.8. Доступ к оболочке командной строки выполняемого контейнера:

$ docker compose exec nginx bash


II. Создание сервиса Nginx + PHP-FPM

ii.1. Перейдите в каталог `project/php-fpm`:

$ cd ~/develop/web/project/php-fpm

... и создайте docker-compose.yml - файл, следующего содержания:


Docker. Подсказки по работе с контейнерами

Источник: www.ruanyifeng.com


Место хранения образов Docker и данные контейнеров:

/var/lib/docker


Проверка состояния работы сервиса Docker:

$ systemctl status docker


Перечислить образы docker на устройстве:

$ docker image ls


Удалить файл образа с устройства:

$ docker image rm [image-name]


I. Пример использования Docker

1. Переносим образ в локальное хранилище:

$ docker image pull library/hello-world

library - группа, в которой находится образ `hello-world`, её можно опустить:

$ docker image pull hello-world


2. Просмотр образа в локальном хранилище:

$ docker image ls


3. Сгенерировать работающий экземпляр контейнера из файла образа (запуск образа):

$ docker container run hello-world

, в случае, если к этому шагу docker image pull - не был выполнен, то имя указанного образа будет скопировано из хранилища Docker.

, если запуск контейнера произойдёт успешно, мы увидим на экране:

Hello from Docker!

This message shows that your installation appears to be working correctly.

...

После вывода на экран, работа контейнера завершится. В случае, если в контейнере выполняется служба, то контейнер не будет завершен.

4. Для тех контейнеров, которые автоматически не завершаются, можно выполнить команду:

$ docker container kill


5. При запуске запуске файла образа получаем выполняемый контейнер, т.е. на устройстве имеем два файла.

# Перечислить контейнеры, запущенные на устройстве

$ docker container ls

# Перечислить контейнеры, запущенных и остановленных на устройстве

$ docker container ls --all


6.  При остановке контейнера, его файл образ занимает место на диске, для удаления образа с диска устройства:

$ docker container rm [container-id]


7. Проверить удаленный файл образа можно с помощью команды:

$ docker container ls --all


II. Файл Dockerfile

Dockerfile - файл, используемый для настройки образа. Docker генерирует двоичный файл образа на основе этого файла.

...

GNU\Linux. Debian. Установка Docker

Источник: docs.docker.com

Источник: help.reg.ru

Источник: www.ruanyifeng.com


1. Обновляем пакеты:

$ sudo apt update


2. Установите пакеты, которые необходимы для работы пакетного менеджера apt по протоколу HTTPS:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common


3. Добавьте GPG-ключ репозитория Docker:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


4. Добавьте репозиторий Docker:

$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb\_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


5. Снова обновляем пакеты:

$ sudo apt update


6.  Переключитесь в репозиторий Docker, чтобы его установить (docker-community edition):

$ apt-cache policy docker-ce


7. Установить Docker:

$ sudo apt install docker-ce


8. Проверяем работоспособность Docker:

$ sudo systemctl status docker


9. Чтобы использовать утилиту docker, нужно добавить ваше имя пользователя в группу Docker. Для этого введите в терминале команду:

$ sudo usermod -aG docker ${user}

Где user — имя пользователя.


10. Переходим в учётную запись пользователя:

$ su - ${user}

Где user — имя пользователя.


11. После завершения установки выполняем проверку версии Docker:

sudo docker version

$ sudo docker info


12. Выполняем проверку работоспособности Docker:

$ sudo docker run hello-world


13. Для обработки командной строки, необходимо выполнить проверку работы службы Docker:

$ sudo systemctl status docker


P.S. ? Дополнительно, возможно, имеет смысл установить docker-compose (пока не изучил для чего он) 

GNU\Linux. Debian. Обновление golang

Источник: тут

1. Подготавливаем каталог для скачивания новой версии языка:

# mkdir -p ~/distrib/golang && cd ~/distrib/golang

2. На официальном сайте "https://golang.org/dl/ " определяемся с номером последней версии языка go и скачиваем её:

wget https://golang.org/dl/go1.<VERSION_NUMBER>.linux-amd64.tar.gz

... в моём случае последняя версия "1.22.1":

# wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz

3. Если скачивание выполнено успешно, имеет смысл удалить прежнюю версию языка Golang:

# rm -rf /usr/local/go
# rm -rf /usr/bin/go

Проверяем есть ли еще пути, которые могут содержать каталог "go":

# which go

если найден каталог, убедитесь, что он принадлежит языку программирования "go" и удалите его тоже

4. Распаковка новой версии языка go:

# tar -C /usr/local -xzf ~/distrib/go/go1.22.1.linux-amd64.tar.gz

5. Установка переменных окружения:

# echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile
# echo "export GOPATH=~/.go" >> ~/.profile

6. Перезагрузка переменных окружения

# source ~/.profile

7. Проверяем версию "go":

# go version
go version go1.22.1 linux/amd64

Docker. Первые контейнеры

Источник:  php.dragomano.ru Структура каталогов: ~/develop/web/project/                  nginx/      - сервис web-сервера                php...