Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:containers [2024/12/07 07:30] admin |
linux:containers [2025/04/16 06:53] (текущий) admin [Volumes] |
||
---|---|---|---|
Строка 255: | Строка 255: | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Появляется похоже только после загрузки в registry | ||
+ | <code bash> | ||
+ | # Почему то не во всех версиях работает | ||
+ | docker images --format ' | ||
+ | |||
+ | # В крайнем случае такой вариант, | ||
+ | docker image inspect --format '{{ .RepoDigests }}' $IMAGE | grep -Po " | ||
+ | |||
+ | </ | ||
+ | </ | ||
Строка 320: | Строка 333: | ||
Сбилженный образ выглядит так: | Сбилженный образ выглядит так: | ||
<code bash> | <code bash> | ||
- | | REPOSITORY | TAG | | + | | REPOSITORY |
| localhost/ | | localhost/ | ||
</ | </ | ||
Строка 331: | Строка 344: | ||
Создается копия образа но уже с другим названием | Создается копия образа но уже с другим названием | ||
<code bash> | <code bash> | ||
- | | REPOSITORY | TAG | | + | | REPOSITORY |
- | | localhost/ | + | | localhost/ |
| registry.ru/ | | registry.ru/ | ||
</ | </ | ||
Строка 420: | Строка 433: | ||
При повторном создании образа (через Dockerfile), | При повторном создании образа (через Dockerfile), | ||
+ | |||
+ | |||
+ | ==== Volumes ==== | ||
+ | Инструкция " | ||
+ | |||
+ | <code bash> | ||
+ | podman volume create < | ||
+ | podman volume ls / inspect < | ||
+ | |||
+ | # Создание контейнера с примонтированным волюмом (можно не запускать) | ||
+ | podman container create --name < | ||
+ | |||
+ | # Копируем из хоста файлы в волюм, через контейнер | ||
+ | podman cp < | ||
+ | |||
+ | # Теперь в волюме есть нужные данные, | ||
+ | podman run -it -v < | ||
+ | </ | ||
+ | |||
+ | |||
+ | Монтирование папки с хоста в контейнер\\ | ||
+ | Только права на нее назначаются рутовые\\ | ||
+ | <code bash> | ||
+ | podman run -d -v / | ||
+ | podman run -d --mount src=/ | ||
+ | |||
+ | # В Compose | ||
+ | services: | ||
+ | my_app: | ||
+ | image: my_app | ||
+ | container_name: | ||
+ | volumes: | ||
+ | - type: bind | ||
+ | source: / | ||
+ | target: / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
Строка 425: | Строка 477: | ||
===== Docker-compose ===== | ===== Docker-compose ===== | ||
+ | Указание версии в файле либо впринципе устарело либо приобрело новый формат - [[https:// | ||
+ | [[https:// | ||
+ | |||
Оркестрация несколькими контейнерами\\ | Оркестрация несколькими контейнерами\\ | ||
<code bash> | <code bash> | ||
Строка 446: | Строка 501: | ||
< | < | ||
< | < | ||
- | |||
Приложение загружается с собственного registry, перед этим нужно выполнить " | Приложение загружается с собственного registry, перед этим нужно выполнить " | ||
Контейнеры объединяются в общую сеть\\ | Контейнеры объединяются в общую сеть\\ | ||
Строка 547: | Строка 601: | ||
* KAFKA_ADVERTISED_LISTENERS - адреса для клиентов, | * KAFKA_ADVERTISED_LISTENERS - адреса для клиентов, | ||
* режим для межброкерного взаимодействия задается в " | * режим для межброкерного взаимодействия задается в " | ||
- | |||
</ | </ | ||
Строка 644: | Строка 697: | ||
+ | ==== Порядок запуска ==== | ||
+ | В итоге хз, порядок запуска есть, но только запуск контейнера, | ||
+ | < | ||
+ | < | ||
+ | **condition: | ||
+ | Такой порядок запуска работает но учитывается только старт контейнера а не сервиса внутри него\\ | ||
+ | Порядок 321 | ||
+ | <code yaml> | ||
+ | version: ' | ||
+ | services: | ||
+ | srv1: | ||
+ | image: " | ||
+ | command: "echo 'this first'" | ||
+ | depends_on: | ||
+ | srv2: | ||
+ | condition: service_started | ||
+ | |||
+ | srv2: | ||
+ | image: " | ||
+ | command: "echo 'this second'" | ||
+ | depends_on: | ||
+ | srv3: | ||
+ | condition: service_started | ||
+ | |||
+ | srv3: | ||
+ | image: " | ||
+ | command: "echo 'this three'" | ||
+ | </ | ||
+ | |||
+ | |||
+ | **condition: | ||
+ | Похоже не совсем завершение контейнера\\ | ||
+ | Кейс: три контейнера запустились сразу, подряд, | ||
+ | На порядок все же влияет, | ||
+ | |||
+ | аа, это короче от обратного: | ||
+ | указывается какой сервис должен быть запущен до этого\\ | ||
+ | или хз, можно юзать так же как и предыдущий ? тут тоже 321 порядок\\ | ||
+ | |||
+ | Но завершения контейнера точно не ждет\\ | ||
+ | <code yaml> | ||
+ | version: ' | ||
+ | services: | ||
+ | srv1: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | depends_on: | ||
+ | srv2: | ||
+ | condition: service_completed_successfully | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv2: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | depends_on: | ||
+ | srv3: | ||
+ | condition: service_completed_successfully | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv3: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | volumes: | ||
+ | - " | ||
+ | </ | ||
+ | |||
+ | |||
+ | Еще вариации: | ||
+ | Второй контейнер завершается с err-code и проверка проходит с err-code\\ | ||
+ | Но первый сервис все равно стартанул, | ||
+ | Да, на порядок влияет и влияет хелс-чек, | ||
+ | Да, если зависимость убрать то в обычном порядке стартует, | ||
+ | |||
+ | <code yaml> | ||
+ | version: ' | ||
+ | services: | ||
+ | srv1: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | depends_on: | ||
+ | srv2: | ||
+ | condition: | ||
+ | - service_healthy | ||
+ | - service_completed_successfully | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv2: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | srv3: | ||
+ | image: " | ||
+ | command: "/ | ||
+ | healthcheck: | ||
+ | test: [" | ||
+ | interval: 15s | ||
+ | timeout: 10s | ||
+ | retries: 10 | ||
+ | volumes: | ||
+ | - " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== PostgreSQL ==== | ||
+ | :!: Примонтировав папку со скриптами в **"/ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Капец, каждую версию управляющие переменные окружения меняются\\ | ||
+ | В 15ой обязательная переменная **POSTGRES_PASSWORD**, | ||
+ | В 17ой все другое\\ | ||
+ | <code bash> | ||
+ | services: | ||
+ | post-db: | ||
+ | image: " | ||
+ | # env_file: .env | ||
+ | environment: | ||
+ | POSTGRES_DB: | ||
+ | POSTGRES_PASSWORD: | ||
+ | ports: | ||
+ | - " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | Монтируем скрипт в директорию **/ | ||
+ | |||
+ | <code bash> | ||
+ | services: | ||
+ | sarm-db: | ||
+ | image: " | ||
+ | # env_file: .env | ||
+ | environment: | ||
+ | # POSTGRES_DB: | ||
+ | POSTGRES_PASSWORD: | ||
+ | POSTGRES_MULTIPLE_DATABASES: | ||
+ | volumes: | ||
+ | - ./ | ||
+ | ports: | ||
+ | - " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Разное ==== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Похоже не переопределяет команду запуска контейнера или какие то нюансы есть\\ | ||
+ | Команду нужно писать либо одну либо **bash -c 'first && second' | ||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||