В Dockerfile можно указать как
ENTRYPOINT
, так и CMD
. Они оба определяют, какая команда будет выполнена при запуске контейнера, но имеют разные цели и взаимодействие между собой. Устанавливает основную команду и аргументы, которые не могут быть переопределены во время запуска контейнера с помощью
docker run
, за исключением явного использования опции --entrypoint
.Устанавливает команду и аргументы по умолчанию для запуска контейнера. Эти параметры могут быть переопределены при запуске контейнера, если передать другие аргументы в
docker run
.Когда в Dockerfile указаны оба,
ENTRYPOINT
и CMD
, они работают совместно. CMD
предоставляет аргументы по умолчанию для команды, указанной в ENTRYPOINT
. Таким образом, CMD
будет использоваться в качестве аргументов для ENTRYPOINT
, если при запуске контейнера не указаны другие аргументы.FROM ubuntu:latest
ENTRYPOINT ["echo"]
CMD ["Hello, World!"]
ENTRYPOINT
используется для фиксированной команды, которую контейнер должен всегда выполнять, а CMD
для указания аргументов по умолчанию.CMD
используется для задания аргументов по умолчанию для команды, указанной в ENTRYPOINT
.ENTRYPOINT
, то команда и аргументы из ENTRYPOINT
будут выполнены при запуске контейнера.CMD
, то команда и аргументы из CMD
будут выполнены при запуске контейнера.ENTRYPOINT
будет выполнена с аргументами из CMD
по умолчанию. Если при запуске контейнера указать дополнительные аргументы, они заменят аргументы из CMD
.FROM python:3.9
ENTRYPOINT ["python", "-m"]
CMD ["http.server"]
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔2
Unix и Linux — это две операционные системы, которые часто сравнивают из-за их схожести и общего происхождения. Однако у них есть значительные различия, касающиеся их истории, лицензирования, архитектуры и использования.
Unix: Большинство версий Unix являются коммерческими и проприетарными. Для их использования требуется лицензия. Некоторые версии, такие как BSD (Berkeley Software Distribution), являются открытыми и лицензируются по лицензии BSD.
Linux: Распространяется по лицензии GNU General Public License (GPL), что означает, что он бесплатен и открыт для использования, модификации и распространения. Исходный код доступен всем, что позволяет пользователям вносить изменения и улучшения.
Unix: Часто имеют монолитное ядро, где основные системные службы интегрированы в одно ядро. Обеспечивает многозадачность, многопользовательский режим и защищенную память. Включает стандартные утилиты и шеллы, такие как Bourne Shell (sh).
Linux: Также имеет монолитное ядро, но с модульной архитектурой, что позволяет загружать и выгружать модули в ядро без перезагрузки системы. Включает широкий набор утилит и инструментов GNU, таких как Bash (Bourne Again Shell).
Unix: Следуют стандартам POSIX (Portable Operating System Interface), что обеспечивает совместимость между различными версиями Unix. Существует несколько проприетарных версий Unix.
Linux: Также совместим с POSIX, что обеспечивает высокую степень совместимости с Unix-системами. Существует множество дистрибутивов Linux (Debian, Ubuntu, CentOS, Fedora и т.д.), каждый из которых имеет свои особенности и наборы пакетов, но все они основаны на общем ядре Linux.
Unix: Используется в крупных корпоративных и научных средах. Часто применяется в критически важных системах благодаря своей надежности и стабильности.
Linux: Широко используется в серверах, суперкомпьютерах, встраиваемых системах, настольных ПК и мобильных устройствах (например, Android). Популярен среди разработчиков и энтузиастов благодаря своей открытости, гибкости и сообществу.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6
Коды ответа (HTTP status codes) от веб-сервера представляют собой числовые коды, которые отправляются клиенту (обычно веб-браузеру) в ответ на его запрос. Эти коды помогают клиенту понять, что произошло с его запросом: был ли он успешен, произошла ли ошибка, требуется ли дополнительное действие и т.д.
Запрос принят, продолжается обработка.
100 Continue: Сервер получил начальную часть запроса, и клиент должен продолжать.
101 Switching Protocols: Сервер принимает запрос на изменение протокола.
Запрос успешно обработан.
200 OK: Запрос успешно обработан, и сервер возвращает запрошенные данные.
201 Created: Запрос успешно выполнен, и в результате создан новый ресурс.
202 Accepted: Запрос принят для обработки, но обработка еще не завершена.
204 No Content: Запрос успешно выполнен, но сервер не возвращает никакого содержимого.
Для завершения обработки запроса требуется дальнейшее действие со стороны клиента.
301 Moved Permanently: Запрашиваемый ресурс был перемещен на новый постоянный URL.
302 Found: Запрашиваемый ресурс временно доступен по другому URL.
304 Not Modified: Запрашиваемый ресурс не изменился со времени последнего доступа (кэширование).
307 Temporary Redirect: Запрашиваемый ресурс временно доступен по другому URL. Клиент должен использовать исходный метод для нового запроса.
Ошибка в запросе клиента.
400 Bad Request: Сервер не может обработать запрос из-за неверного синтаксиса.
401 Unauthorized: Запрос требует аутентификации.
403 Forbidden: Сервер понял запрос, но отказывается его выполнять.
404 Not Found: Запрашиваемый ресурс не найден на сервере.
405 Method Not Allowed: Метод, указанный в запросе, не разрешен для запрашиваемого ресурса.
409 Conflict: Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.
Ошибка на стороне сервера при попытке обработки запроса.
500 Internal Server Error: Общая ошибка сервера. Сервер не может выполнить запрос.
501 Not Implemented: Сервер не поддерживает функциональность, необходимую для выполнения запроса.
502 Bad Gateway: Сервер, действуя как шлюз или прокси, получил неверный ответ от вышестоящего сервера.
503 Service Unavailable: Сервер временно недоступен, обычно из-за перегрузки или технического обслуживания.
504 Gateway Timeout: Сервер, действуя как шлюз или прокси, не дождался ответа от вышестоящего сервера.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1😁1
Конфликты зависимостей или поврежденные пакеты.
sudo apt-get install -f
sudo apt-get clean
sudo apt-get update
Нет доступа к интернету или неправильная настройка сети.
ip a
sudo systemctl restart NetworkManager
cat /etc/resolv.conf
Недостаточно прав для выполнения команды или доступа к файлу.
sudo
для выполнения команд с привилегиями суперпользователя. sudo <command>
sudo chmod 755 /path/to/directory
sudo chown user:user /path/to/file
Система не загружается или застревает на экране загрузки.
sudo grub-install /dev/sda
sudo update-grub
sudo fsck /dev/sda1
Недостаточно места на диске для выполнения операций.
df -h
sudo apt-get clean
sudo rm -rf /var/cache/apt/archives/*
Нет доступа к файловой системе NFS.
sudo systemctl status nfs-server
sudo systemctl status nfs-client
sudo systemctl restart nfs-server
sudo systemctl restart nfs-client
Проблемы с установкой пакетов Python из-за конфликтов версий.
Использование виртуальных окружений для изоляции зависимостей.
python3 -m venv myenv
source myenv/bin/activate
pip install <package>
Блокировка доступа к файлам или портам из-за правил SELinux.
sudo ausearch -m avc -ts recent
sudo setenforce 0
Модуль ядра не загружается или вызывает ошибку.
lsmod
sudo modprobe <module>
Неправильные правила фаервола блокируют трафик.
sudo iptables -L
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤯1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Эти утилиты показывают информацию о системных процессах в реальном времени, включая использование CPU, памяти и дискового ввода-вывода.
top
htop
Показывает список активных процессов.
ps aux
Показывают сетевые соединения, таблицы маршрутизации, интерфейсы и другую сетевую информацию
netstat -tuln
ss -tuln
Показывает открытые файлы и порты.
lsof
lsof -i :80
Показывают информацию о дисковом пространстве.
df
показывает общий объем использования диска, а du
- использование дискового пространства отдельными файлами и директориями. df -h
du -sh /var/log/*
Используются для диагностики сетевых проблем.
ping
проверяет доступность хоста, а traceroute
показывает путь пакетов к хосту. ping google.com
traceroute google.com
Используются для отправки HTTP-запросов и загрузки файлов с веб-серверов. Полезны для проверки доступности веб-сервисов.
curl -I https://www.example.com
wget https://www.example.com/file.zip
Используется для просмотра системных журналов, управляемых systemd.
journalctl -xe
journalctl -u nginx.service
Показывает сообщения ядра. Полезно для диагностики аппаратных и загрузочных проблем.
dmesg | grep error
Трассирует системные вызовы и сигналы. Полезно для диагностики проблем с приложениями.
strace -p <PID>
Анализатор сетевых пакетов. Полезно для диагностики сетевых проблем.
tcpdump -i eth0
vmstat
показывает статистику виртуальной памяти, процессов и CPU. iostat
показывает статистику ввода-вывода на устройстве. vmstat 1
iostat 1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤔1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔3🔥2
df
disk freе показывает объем свободного и используемого пространства на файловой системе.
df -h
-h
: Показывает информацию в человекочитаемом формате (например, 1K, 234M, 2G). Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% /
tmpfs 1.9G 1.2M 1.9G 1% /dev/shm
du
disk usage показывает использование дискового пространства файлами и директориями. Это полезно для поиска крупных файлов и директорий.
du -sh /var/log/*
-s
: Показывает общий размер каждой аргументированной директории.-h
: Человекочитаемый формат. 12M /var/log/apache2
4.0K /var/log/boot.log
56M /var/log/kern.log
lsblk
Показывает информацию о блочных устройствах, включая диски и их разделы.
lsblk
Вывод команды
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 50G 0 part /
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part /mnt/data
ncdu
NCurses Disk Usage — интерактивная командная утилита для анализа дискового пространства.
ncdu /
Вывод команды
--- / ---
. 16.0 GiB [##########] /usr
. 8.0 GiB [##### ] /var
. 4.0 GiB [## ] /home
btrfs filesystem df
Используется для файловых систем Btrfs и показывает использование дискового пространства.
sudo btrfs filesystem df /mnt
Вывод команды
Data, single: total=10.00GiB, used=8.54GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.00GiB, used=532.25MiB
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥5❤1
Это может быть связано с тем, что файлы все еще открыты каким-либо процессом. В таких случаях система не освобождает пространство до тех пор, пока процесс не завершится. Вот шаги для диагностики и решения этой проблемы:
Используйте команду
df
для проверки использования дискового пространства.df -h
Проверьте, сколько места занимают файлы в проблемной директории.
du -sh /path/to/directory
Найдите процессы, которые держат открытыми удаленные файлы.
lsof | grep deleted
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
myprocess 1234 user 10r REG 8,1 12345678 567890 /path/to/deleted/file (deleted)
Найдите процесс, держащий файл открытым, по PID (идентификатор процесса) из вывода
lsof
. Завершите процесс, чтобы освободить место на диске. kill -9 <PID>
kill -9 1234
После завершения процесса, повторно проверьте использование дискового пространства.
df -h
Убедитесь, что место в директории освободилось.
du -sh /path/to/directory
Поиск удаленных файлов
lsof | grep deleted
Завершение процесса
kill -9 <PID>
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤2🤯1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥6
Это команда в Linux, которая используется для изменения размера файла. С ее помощью можно как увеличивать, так и уменьшать размер файла. При уменьшении размера файла данные, находящиеся за новой границей, будут потеряны, а при увеличении — файл будет дополнен нулями.
Если указанный файл не существует, команда
truncate
создаст его с нулевым размером или с заданным размером. При уменьшении размера файла данные, находящиеся за новой границей, будут потеряны.
При увеличении размера файла он будет дополнен нулями до указанного размера.
Синтаксис команды
truncate
truncate [OPTIONS] FILE...
Создание файла размером 1 МБ
truncate -s 1M myfile
Создание файла размером 512 байт
truncate -s 512 myfile
Увеличение файла до 2 ГБ
truncate -s 2G myfile
Уменьшение файла до 100 КБ:
truncate -s 100K myfile
Установка размера файла
myfile
на размер файла referencefile
truncate -r referencefile myfile
Создаст пустой файл с именем
emptyfile
.truncate -s 0 emptyfile
Увеличит размер файла
logfile
на 500 МБ.truncate -s +500M logfile
Уменьшит размер файла
largefile
на 100 КБ.truncate -s -100K largefile
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥7
Деплой в OpenShift выполняется через контейнерное изображение, которое загружается в репозиторий. Затем приложение разворачивается с помощью команд
oc
или через веб-интерфейс, после чего OpenShift управляет контейнерами, обеспечивая масштабирование и обновления без простоя.Установите OpenShift CLI (oc), чтобы взаимодействовать с кластером OpenShift.
# Скачать и установить OpenShift CLI
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz
tar -xvf openshift-client-linux.tar.gz
sudo mv oc /usr/local/bin/
Создайте новый проект в OpenShift, который будет использоваться для развертывания вашего приложения.
# Войти в OpenShift
oc login https://<openshift-cluster-url> --token=<your-token>
# Создать проект
oc new-project my-project
Создайте Dockerfile для вашего приложения или используйте S2I для автоматической сборки образов.
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]
Создайте BuildConfig для сборки вашего образа Docker.
# Создать BuildConfig из Dockerfile
oc new-build --strategy=docker --binary --name=my-app
# Запустить билд
oc start-build my-app --from-dir=. --follow
Если вы используете S2I
# Создать BuildConfig с использованием S2I
oc new-app nodejs:14~https://github.com/username/my-app.git --name=my-app
Создайте DeploymentConfig для развертывания вашего приложения.
# Создать DeploymentConfig из ранее созданного BuildConfig
oc new-app my-app
# Или, если используется S2I
oc new-app nodejs:14~https://github.com/username/my-app.git --name=my-app
Создайте Route для доступа к вашему приложению извне.
# Создать маршрут
oc expose svc/my-app
# Проверить созданный маршрут
oc get routes
Пример деплоя с полным процессом
# Вход в OpenShift
oc login https://<openshift-cluster-url> --token=<your-token>
# Создание проекта
oc new-project my-project
# Создание билда
oc new-build --strategy=docker --binary --name=my-app
oc start-build my-app --from-dir=. --follow
# Развертывание приложения
oc new-app my-app
# Настройка маршрута
oc expose svc/my-app
# Проверка статуса маршрута
oc get routes
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3
Это команда и настройка в Unix-подобных операционных системах, которая определяет права доступа по умолчанию для новых файлов и каталогов, создаваемых пользователем.
umask
устанавливает маску, которая определяет, какие разрешения будут отключены для вновь создаваемых файлов и каталогов.Для файлов: 666 (чтение и запись для всех). Для каталогов: 777 (чтение, запись и выполнение для всех).
Значение
umask
указывается в восьмеричной системе счисления и вычитается из базовых прав доступа для определения окончательных прав доступа.Когда создается новый файл или каталог, операционная система сначала применяет базовые права доступа, а затем вычитает значение
umask
из этих прав.Базовые права доступа: 666
Значение
umask
: 022Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)
Базовые права доступа: 777
Значение
umask
: 022Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)
umask
umask 027
Проверка текущего значения
$ umask
0022
Установка нового значения. После выполнения этой команды новые файлы будут создаваться с правами
640
(rw-r-----), а новые каталоги с правами 750
(rwxr-x---).$ umask 027
Новый файл
myfile
будет создан с правами 644
.$ umask 0022
$ touch myfile
$ ls -l myfile
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
Создание каталога с umask 0027. Новый каталог
mydir
будет создан с правами 750
.$ umask 0027
$ mkdir mydir
$ ls -ld mydir
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
Чтобы задать значение umask для всех команд в скрипте, можно указать его в начале скрипта.
#!/bin/bash
umask 027
# Все команды ниже будут создавать файлы и каталоги с правами, определенными umask 027
touch file1
mkdir dir1
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍8
Права доступа по умолчанию зависят от базовых прав доступа и значения
umask
. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask
.Это означает, что по умолчанию все пользователи могут читать и записывать в файл.
Это означает, что по умолчанию все пользователи могут читать, записывать и выполнять (заходить) в каталог.
Это маска, которая определяет, какие права будут отключены при создании нового файла или каталога. Значение
umask
указывается в восьмеричной системе счисления. Базовые права доступа: 666
Значение
umask
: 022Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)
Базовые права доступа: 777
Значение
umask
: 022Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)
umask 0022
touch myfile
ls -l myfile
Вывод
Права доступа: 644 (rw-r--r--)
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
umask 0027
mkdir mydir
ls -ld mydir
Вывод
Права доступа: 750 (rwxr-x---)
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
Вы можете установить umask в скрипте для задания прав доступа по умолчанию для всех создаваемых файлов и каталогов.
#!/bin/bash
umask 027
touch file1
mkdir dir1
Для файлов: По умолчанию права доступа 666 минус umask.
Для каталогов: По умолчанию права доступа 777 минус umask.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9