Init-контейнер — это особый тип контейнера в Kubernetes, который запускается и выполняется перед основными (основными) контейнерами в поде (Pod). Init-контейнеры предназначены для выполнения задач начальной настройки или подготовки среды перед запуском основных контейнеров.
- Init-контейнеры запускаются последовательно, один за другим.
- Основные контейнеры не запускаются, пока все Init-контейнеры не завершат свою работу успешно.
- Init-контейнеры имеют свою собственную файловую систему, независимую от основных контейнеров.
- Могут использоваться для выполнения задач, требующих повышенных привилегий, минимизируя риск для основных контейнеров.
- Init-контейнеры будут перезапускаться до тех пор, пока не завершатся успешно, или до тех пор, пока не выйдет время ожидания.
- Выполнение задач инициализации, таких как настройка конфигураций, загрузка данных, проверка условий перед запуском приложения.
- Перед запуском основного приложения Init-контейнер может проверить наличие необходимых зависимостей или служб.
- Init-контейнер может загружать конфигурационные файлы или секреты из внешних источников.
- Перед запуском основного приложения Init-контейнер может выполнить миграции базы данных.
Пример Pod, который использует Init-контейнер для выполнения миграций базы данных перед запуском основного приложения:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
initContainers:
- name: init-migrate
image: busybox
command: ['sh', '-c', 'echo "Running database migrations"; sleep 5;']
containers:
- name: myapp-container
image: myapp:latest
ports:
- containerPort: 80
В этом примере:
- Init-контейнер
init-migrate
запускается первым и выполняет команду, которая симулирует выполнение миграций базы данных.- После успешного завершения Init-контейнера запускается основной контейнер
myapp-container
.- Разделение задач инициализации и основной логики приложения помогает упростить разработку и поддержку.
- Init-контейнеры можно повторно использовать в разных Pod-ах, если они выполняют общие задачи подготовки.
- Init-контейнеры могут гарантировать, что все необходимые условия выполнены до запуска основного приложения.
Init-контейнеры в Kubernetes — это контейнеры, которые запускаются до основных контейнеров в поде для выполнения задач инициализации и подготовки среды. Они обеспечивают изоляцию, могут перезапускаться до успешного завершения и полезны для выполнения задач, таких как проверка зависимостей, загрузка конфигураций и выполнение миграций базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3👀1
Git — это распределенная система управления версиями, которая позволяет разработчикам отслеживать изменения в коде и работать совместно над проектами. Две ключевые команды в Git, которые часто используются в ежедневной работе — это
git push
и git pull
. Каждая из этих команд имеет свою цель и применяется в разных сценариях.`git push` — это команда, которая используется для отправки локальных изменений на удаленный репозиторий.
-
git push
отправляет коммиты из локального репозитория на удаленный репозиторий.- Обычно используется для публикации локальных изменений и совместной работы с другими разработчиками.
-
git push
обновляет соответствующую ветку на удаленном репозитории, делая ваши изменения доступными для других.# Отправка изменений на удаленный репозиторий
git push origin main
В этом примере команда отправляет коммиты из локальной ветки
main
на удаленную ветку main
репозитория с именем origin
.`git pull` — это команда, которая используется для получения и слияния изменений из удаленного репозитория в локальный репозиторий.
-
git pull
загружает изменения из удаленного репозитория в локальный.- Команда объединяет команды
git fetch
(для получения изменений) и git merge
(для слияния изменений).-
git pull
обновляет локальную ветку последними изменениями из удаленного репозитория, гарантируя, что ваш локальный репозиторий синхронизирован с удаленным.# Получение и слияние изменений из удаленного репозитория
git pull origin main
В этом примере команда получает изменения из удаленной ветки
main
репозитория с именем origin
и сливает их с локальной веткой main
.-
git push
: Отправляет изменения с локального репозитория в удаленный репозиторий.-
git pull
: Получает изменения из удаленного репозитория в локальный репозиторий.-
git push
: Публикация локальных изменений для совместной работы.-
git pull
: Получение и слияние последних изменений для синхронизации с удаленным репозиторием.-
git push
: Простой процесс отправки коммитов.-
git pull
: Комбинирует получение и слияние изменений, что может вызывать конфликты, которые необходимо разрешать вручную.- `git push` используется, когда вы хотите отправить свои изменения на удаленный сервер, чтобы другие разработчики могли видеть и работать с ними. Это важно для совместной работы над проектом.
- `git pull` используется, когда вы хотите синхронизировать свою локальную копию репозитория с последними изменениями из удаленного репозитория. Это помогает убедиться, что ваш локальный репозиторий содержит актуальные данные, особенно перед началом новой работы или перед слиянием своих изменений.
- `git push`: Команда для отправки локальных изменений в удаленный репозиторий. Используется для публикации изменений.
- `git pull`: Команда для получения и слияния изменений из удаленного репозитория в локальный. Используется для синхронизации с удаленным репозиторием.
Обе команды являются неотъемлемой частью работы с Git, обеспечивая эффективное управление и синхронизацию изменений в проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😁4🎉1
Anonymous Quiz
3%
Инструмент для управления конфигурацией
94%
Система мониторинга и оповещения
2%
Инструмент для контейнеризации
1%
Платформа для разработки
🔥1
PostgreSQL — это мощная реляционная база данных с открытым исходным кодом, известная своей расширяемостью и соответствием стандартам SQL. У меня есть значительный опыт работы с PostgreSQL, охватывающий различные аспекты разработки, администрирования и оптимизации баз данных.
- Опыт: Проектирование баз данных с учетом требований приложения, нормализация данных, создание таблиц, индексов и ограничений.
- Пример: Создание схемы базы данных для системы управления заказами с таблицами для пользователей, продуктов, заказов и платежей.
-- Создание таблицы пользователей
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Создание таблицы продуктов
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
- Опыт: Анализ и оптимизация SQL-запросов для повышения производительности, использование индексов, планов выполнения запросов (EXPLAIN), материализованных представлений.
- Пример: Оптимизация запросов для отчетов, использующих большие объемы данных, путем добавления индексов и переписывания запросов для более эффективного выполнения.
-- Пример индексации
CREATE INDEX idx_users_email ON users(email);
-- Пример использования EXPLAIN для анализа запроса
EXPLAIN SELECT * FROM users WHERE email = 'example@example.com';
- Опыт: Настройка и управление PostgreSQL-серверами, создание резервных копий и восстановление, настройка репликации и высокодоступных конфигураций.
- Пример: Настройка потоковой репликации для обеспечения отказоустойчивости и высокой доступности.
# Создание резервной копии базы данных
pg_dump -U username -h localhost -F c mydatabase > mydatabase.backup
# Восстановление базы данных из резервной копии
pg_restore -U username -h localhost -d mydatabase mydatabase.backup
- Опыт: Создание хранимых процедур и функций с использованием PL/pgSQL для автоматизации сложных бизнес-логик на стороне базы данных.
- Пример: Написание функции для расчета общей стоимости заказов для пользователя.
-- Пример хранимой функции
CREATE OR REPLACE FUNCTION get_total_spent(user_id INT) RETURNS DECIMAL AS $$
DECLARE
total DECIMAL;
BEGIN
SELECT SUM(price) INTO total
FROM orders
WHERE user_id = get_total_spent.user_id;
RETURN total;
END;
$$ LANGUAGE plpgsql;
- Опыт: Использование расширений для расширения функциональности PostgreSQL, таких как PostGIS для геопространственных данных или pg_trgm для быстрого поиска текста.
- Пример: Установка и использование расширения PostGIS для работы с геопространственными данными.
-- Установка расширения PostGIS
CREATE EXTENSION postgis;
-- Пример использования PostGIS
SELECT ST_AsText(ST_MakePoint(-71.064544, 42.28787));
- Опыт: Использование различных инструментов для работы с PostgreSQL, включая pgAdmin, psql, DBeaver и другие инструменты для мониторинга и администрирования.
- Пример: Использование pgAdmin для управления базой данных и выполнения запросов, а также настройки пользователей и ролей.
Мой опыт работы с PostgreSQL включает проектирование и создание схем баз данных, оптимизацию запросов, администрирование серверов, написание хранимых процедур и функций, использование расширений и работу с различными инструментами. Этот опыт позволяет эффективно использовать PostgreSQL для создания, управления и оптимизации производительных и надежных баз данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2
Оператор в Kubernetes — это концепция и методика, которая позволяет автоматизировать управление состоянием сложных приложений и ресурсов. Операторы облегчают управление состоянием приложений.
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: postgresqls.postgres.example.com
spec:
group: postgres.example.com
versions:
- name: v1
served: true
storage: true
scope: Namespaced
names:
plural: postgresqls
singular: postgresql
kind: PostgreSQL
shortNames:
- pg
func (r *ReconcilePostgreSQL) Reconcile(request reconcile.Request) (reconcile.Result, error) {
instance := &v1alpha1.PostgreSQL{}
err := r.client.Get(context.TODO(), request.NamespacedName, instance)
if err != nil {
return reconcile.Result{}, err
}
return reconcile.Result{}, nil
}
operator-sdk init --domain example.com --repo github.com/example/postgresql-operator
operator-sdk create api --group postgres --version v1 --kind PostgreSQL --resource --controller
make install
make run
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
GitLab Runner — это приложение с открытым исход кодом, используемое для выполнения задач CI/CD в проектах GitLab. Оно отвечает за выполнение заданий (jobs), определенных в файле
.gitlab-ci.yml
, и за передачу результатов обратно в GitLab.Установка GitLab Runner зависит от операционной системы. Пример для Ubuntu:
GitLab Runner
curl -L --output /usr/share/keyrings/gitlab-runner-archive-keyring.gpg https://packages.gitlab.com/runner/gitlab-runner/gpgkey
echo "deb [signed-by=/usr/share/keyrings/gitlab-runner-archive-keyring.gpg] https://packages.gitlab.com/runner/gitlab-runner/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-runner.list
Runner
sudo apt-get update
sudo apt-get install gitlab-runner
После установки GitLab Runner нужно зарегистрировать его в GitLab для связи с проектом:
sudo gitlab-runner register
Во время регистрации нужно указать:
Пример регистрации
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.com/
Please enter the gitlab-ci token for this runner:
<TOKEN>
Please enter the gitlab-ci description for this runner:
[hostname] my-runner
Please enter the gitlab-ci tags for this runner (comma separated):
docker,aws
Please enter the executor: shell, docker, docker-ssh, ssh, docker+machine, kubernetes, custom:
docker
Конфигурация файла .gitlab-ci.yml: Файл .gitlab-ci.yml определяет этапы (stages) и задания (jobs) пайплайна CI/CD. Пример простого файла:
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Building the project..."
- ./build.sh
test_job:
stage: test
script:
- echo "Running tests..."
- ./test.sh
deploy_job:
stage: deploy
script:
- echo "Deploying the project..."
- ./deploy.sh
.gitlab-ci.yml
.script
). Это может включать сборку, тестирование, деплой и другие задачи.В файле
.gitlab-ci.yml
можно указать Docker Executor для выполнения заданий в контейнерах:build_job:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t myapp:latest .
- docker push myregistry/myapp:latest
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7
Anonymous Quiz
76%
Развертывание приложения с использованием двух идентичных сред
16%
Методика для параллельного тестирования
7%
Автоматизация развертывания в разные облака
2%
Мониторинг и логирование приложения
Kubernetes активно использует стандарты с открытым исходным кодом для обеспечения совместимости и расширяемости. Основные из них включают OCI, CRI, CNI, CSI, SMI и CPI. Эти стандарты определяют интерфейсы и протоколы, которые позволяют Kubernetes взаимодействовать с различными компонентами и инструментами.
Проект Linux Foundation, который определяет стандарты для контейнеров. Основные спецификации OCI:
Kubernetes использует OCI-совместимые образы и среды выполнения, такие как runc, для обеспечения универсальной совместимости контейнеров.
Это интерфейс, который позволяет Kubernetes взаимодействовать с различными средами выполнения контейнеров. CRI определяет набор API, через которые kubelet может запускать и управлять контейнерами.
Это стандарт для настройки сетевых интерфейсов контейнеров и управления их жизненным циклом. CNI обеспечивает гибкость и расширяемость сетевых решений в Kubernetes.
Это стандарт, который позволяет Kubernetes взаимодействовать с различными системами хранения данных. CSI определяет API для создания, удаления, монтирования и управления томами.
Стандартный интерфейс для управления сервисными сетями (service mesh) в Kubernetes. SMI предоставляет набор абстракций для таких функций, как маршрутизация, телеметрия и управление трафиком.
Интерфейс, который позволяет Kubernetes взаимодействовать с различными облачными провайдерами. CPI управляет ресурсами облака, такими как виртуальные машины, сети и хранилища, в контексте Kubernetes-кластера.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Anonymous Quiz
6%
head
75%
tail
15%
less
3%
grep
👍2
- 100 Continue: Сервер получил начальную часть запроса и клиент может продолжать отправку запроса.
- 101 Switching Protocols: Сервер переключается на другой протокол, указанный в заголовке Upgrade.
- 200 OK: Запрос выполнен успешно. Наиболее распространенный код для успешных запросов.
- 201 Created: Запрос успешно выполнен и приведен к созданию ресурса. Используется, например, при отправке данных на сервер для создания новой записи.
- 202 Accepted: Запрос принят для обработки, но обработка еще не завершена.
- 204 No Content: Запрос выполнен успешно, но тело ответа пусто.
- 301 Moved Permanently: Ресурс был перемещен на новый постоянный URL. Клиент должен использовать новый URL для будущих запросов.
- 302 Found: Ресурс временно доступен по другому URL. Клиент должен использовать оригинальный URL для будущих запросов.
- 304 Not Modified: Ресурс не был изменен с момента последнего запроса. Клиент может использовать кэшированную версию.
- 400 Bad Request: Сервер не может обработать запрос из-за ошибки клиента (например, неверный синтаксис запроса).
- 401 Unauthorized: Запрос требует аутентификации. Клиент должен предоставить учетные данные для доступа к ресурсу.
- 403 Forbidden: Сервер понял запрос, но отказывается его выполнять. Клиент не имеет необходимых прав для доступа к ресурсу.
- 404 Not Found: Ресурс не найден. Сервер не может найти запрошенный ресурс.
- 405 Method Not Allowed: Метод, указанный в запросе, не поддерживается для данного ресурса.
- 409 Conflict: Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.
- 429 Too Many Requests: Клиент отправил слишком много запросов за короткий период. Используется для ограничения скорости запросов.
- 500 Internal Server Error: Общая ошибка сервера. Сервер столкнулся с неожиданной ситуацией, которая помешала выполнению запроса.
- 501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
- 502 Bad Gateway: Сервер, выступающий в роли шлюза или прокси, получил недопустимый ответ от вышестоящего сервера.
- 503 Service Unavailable: Сервер временно недоступен, обычно из-за перегрузки или технического обслуживания.
- 504 Gateway Timeout: Сервер, выступающий в роли шлюза или прокси, не получил своевременный ответ от вышестоящего сервера.
1: 200 OK
GET /index.html HTTP/1.1
Host: www.example.com
```http
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head><title>Example</title></head>
<body>Example page</body>
</html>
http
2: 404 Not Found
GET /nonexistent.html HTTP/1.1
Host: www.example.com
http
HTTP/1.1 404 Not Found
Content-Type: text/html
<html>
<head><title>404 Not Found</title></head>
<body>Page not found</body>
</html>
`
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Anonymous Quiz
5%
Контейнеризация приложений
24%
Управление конфигурацией
51%
Обнаружение сервисов и конфигурация
20%
Автоматизация тестирования
Docker — это платформа для разработки, развертывания и запуска приложений в контейнерах. Контейнеры обеспечивают изоляцию приложения и его зависимостей, позволяя запускать их в любой среде, будь то разработка, тестирование или производство. Docker упрощает процесс создания, тестирования и развертывания приложений, предоставляя все необходимые инструменты для работы с контейнерами.
Основные компоненты Docker
Docker daemon (dockerd) — это основной процесс Docker, который управляет контейнерами, образами, сетями и хранилищами. Docker daemon отвечает за выполнение команд, отправляемых через Docker CLI или API, и контролирует все операции, связанные с контейнерами.
Основные функции Docker daemon
- Создание, запуск, остановка, перезапуск и удаление контейнеров.
- Мониторинг состояния контейнеров и их взаимодействия с хостовой системой.
- Загрузка, создание, тегирование и удаление Docker-образов.
- Кэширование слоев образов для оптимизации повторного использования.
- Создание и управление виртуальными сетями для контейнеров.
- Поддержка различных сетевых драйверов (bridge, host, overlay и т.д.).
- Создание и управление томами (volumes) для постоянного хранения данных контейнеров.
Docker daemon работает в фоновом режиме и взаимодействует с Docker CLI и API для выполнения команд. Когда пользователь вводит команду через Docker CLI (например,
docker run
), CLI отправляет эту команду Docker daemon через API. Docker daemon обрабатывает команду, выполняет необходимые действия и возвращает результат через CLI.docker run hello-world
в терминале.hello-world
. Если образ отсутствует, он загружает его из Docker Hub.hello-world
.Результат: Пользователь видит вывод в терминале, подтверждающий успешный запуск контейнера.
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Anonymous Quiz
94%
Единица управления контейнерами в Kubernetes
1%
Система для мониторинга
4%
Инструмент для управления конфигурацией
1%
Платформа для автоматизации CI/CD
В современных операционных системах процессы и потоки (threads) являются основными единицами выполнения. Хотя они имеют много общего, есть несколько ключевых различий, которые определяют их использование и поведение.
Процесс — это экземпляр программы, который выполняется в операционной системе. Процессы имеют свои собственные ресурсы и память.
fork
в Unix-подобных системах) занимает больше времени и ресурсов по сравнению с созданием потоков.Поток (thread) — это более легковесная единица выполнения, которая существует внутри процесса. Потоки одного и того же процесса разделяют его ресурсы и память, что позволяет им эффективно взаимодействовать.
pthread_create
в POSIX-системах) быстрее и требует меньше ресурсов по сравнению с созданием нового процесса.Память и ресурсы:
Создание и управление:
Использование:
Пример создания процесса (на C с использованием fork):
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
printf("Это дочерний процесс\n");
} else if (pid > 0) {
printf("Это родительский процесс\n");
} else {
perror("fork");
return 1;
}
return 0;
}
Пример создания потока (на C с использованием pthreads):
#include <stdio.h>
#include <pthread.h>
void* thread_function(void* arg) {
printf("Это поток\n");
return NULL;
}
int main() {
pthread_t thread;
pthread_create(&thread, NULL, thread_function, NULL);
pthread_join(thread, NULL);
printf("Главный поток\n");
return 0;
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Anonymous Quiz
2%
Управление конфигурацией
97%
Визуализация метрик и логов
1%
Автоматизация развертывания
1%
Контейнеризация приложений
👍1
Systemd стала основной системой инициализации для Unix-подобных ОС, управляя процессами и службами при загрузке и вытеснив традиционные системы, такие как System V init.
init: Выполняет задачи инициализации последовательно, что может замедлять процесс загрузки.
systemd: Поддерживает параллельную загрузку сервисов, что значительно ускоряет процесс загрузки системы.
init: Ограниченные возможности управления зависимостями между сервисами.
systemd: Предоставляет сложное управление зависимостями, автоматически определяя порядок запуска и останова сервисов.
init: Ограниченные возможности мониторинга и автоматического перезапуска упавших сервисов.
systemd: Встроенные функции для мониторинга состояния сервисов и автоматического их перезапуска в случае сбоя.
init: Различные дистрибутивы могут использовать разные форматы и скрипты инициализации.
systemd: Стандартизированный формат конфигурационных файлов (unit-файлов), что упрощает администрирование и переносимость.
init: Использует отдельные инструменты для журналирования, такие как syslog.
systemd: Встроенная система журналирования (journald), которая объединяет логи всех сервисов и предоставляет мощные возможности для их анализа.
init: Ограниченные возможности управления состоянием системы, такими как спящий режим, гибернация и выключение.
systemd: Встроенные команды для управления состоянием системы, такие как
systemctl suspend
, systemctl hibernate
и systemctl poweroff
.Запуск и остановка сервисов:
systemctl start httpd.service
Остановка сервиса:
systemctl stop httpd.service
Проверка статуса сервиса:
systemctl status httpd.service
Включение автозапуска:
systemctl enable httpd.service
Отключение автозапуска:
systemctl disable httpd.service
Пример unit-файла для сервиса Nginx:
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target
[Service]
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s quit
PIDFile=/run/nginx.pid
Restart=always
[Install]
WantedBy=multi-user.target
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24
Anonymous Quiz
4%
Система для управления логами
14%
Инструмент для автоматизации CI/CD
77%
Пакетный менеджер для Kubernetes
5%
Система мониторинга
Ошибки в синтаксисе или логике Dockerfile могут приводить к созданию некорректного образа. Если указаны неверные пути или отсутствуют необходимые файлы, образ может не работать. Если директория
app/
отсутствует, команда COPY
завершится с ошибкой.COPY app/ /usr/src/app
CMD ["python", "/usr/src/app/app.py"]
Если необходимые библиотеки или пакеты не установлены, приложение не сможет запуститься. Если
app.py
требует внешних библиотек, их нужно установить с помощью RUN pip install
.FROM python:3.8
COPY app.py /
CMD ["python", "/app.py"]
Если не указана правильная рабочая директория, команды могут выполняться в неверном контексте. Если не указать
WORKDIR /app
, Node.js не сможет найти index.js
.FROM node:14
COPY . /app
WORKDIR /app
CMD ["node", "index.js"]
Отсутствие или неправильная настройка переменных окружения может приводить к сбоям. Если контейнер слушает на порту, который не открыт, он не будет доступен извне. Если
default.conf
имеет ошибки конфигурации, Nginx не запустится.FROM nginx
COPY default.conf /etc/nginx/conf.d/
Если файлы или директории имеют неправильные права доступа, приложение может не запуститься. Некоторые приложения требуют выполнения от имени определенного пользователя. Если
nobody
не имеет права выполнения скрипта, контейнер не запустится.FROM ubuntu
COPY script.sh /
RUN chmod +x /script.sh
USER nobody
CMD ["/script.sh"]
Недостаток памяти или процессорного времени может привести к сбою при запуске контейнера. Если приложение требует больше памяти, оно не запустится.
docker run -m 256m myapp
Неправильная настройка сетевых интерфейсов или зависимость от внешних сервисов может привести к сбоям. Если приложение требует доступа к сети, оно не запустится без сетевого интерфейса.
docker run --network=none myapp
Используйте команды
docker logs
и docker inspect
для диагностики проблем.docker logs <container_id>
docker inspect <container_id>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10