LINUX.ORG.RU

Как сделать приветствие в контейнере?

 


0

1

Всем дорого времени суток! Хочу сделать приветствие в контейнере пробовал это делать через CMD, но контейнер благополучно выполняет команду и завершает работу, а я хотел бы в нём ещё поработать. Подскажите, пожалуйста, как это сделать, если кто знает. Пробовал через motd, благополучно не работает.

upd: решил с помощью .bashrc



Последнее исправление: SmilePlz (всего исправлений: 2)

Правильного способа не существует. Контейнеры Docker не для этого, они должны запускать один сервис. Сделать вывод приветствия и запуск сервиса не получится, т.к. тогда главным процессом в контейнере останется shell.

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

Или использовать не докер, а systemd-nspawn или lxc.

emorozov
()

а я хотел бы в нём ещё поработать

В кубах можно войти в контейнер и что-то в нем делать, например, так:

kubectl run mc --image=minio/mc --rm -it --command -- bash

В твоем случае что-то вроде:

docker exec -it b5d116ad83cc bash

где b5d116ad83cc — идентификатор твоего контейнера.

Zhbert ★★★★★
()
Ответ на: комментарий от emorozov

Кстати, если сделать что-то типа скрипта:

#!/bin/bash

echo Hello, world!
exec my_service

И вставить его в CMD, то всё вомзожно даже будет работать правильно. Но всё равно, вопрос оставляет стойкое ощущение применения инструмента не по назначению.

emorozov
()
Ответ на: комментарий от emorozov

да мне просто нужно отладить скрипт и у меня есть файл с командами для тестирования. Мне просто надоело каждый раз писать cat … После того как скрипт отработал мне нужно посмотреть какие переменные в окружении, где и какие файлы лежат. на виртуалке получается геморно в контейнере быстрее. Если использовать CMD после того как команда отработает контейнер закрывается

SmilePlz
() автор топика
Ответ на: комментарий от Zhbert

спасибо. я попробовал bash -c ‘cat …. && bash’ работает, но переменные окружения которые я передаю в контейнер не передаются. Решил с помощью .bashrc

SmilePlz
() автор топика
Последнее исправление: SmilePlz (всего исправлений: 1)
Ответ на: комментарий от Zhbert
FROM almalinux:latest
RUN ["dnf", "upgrade", "-y"]
RUN ["dnf", "install", "-y", "gettext", "vim", "git", "tmux"]
RUN ["useradd", "-m", "rat"]
RUN ["mkdir", "/home/rat/ocs-setting"]
COPY bashrc /root/.bashrc
COPY bashrc /home/rat/.bashrc
# USER rat
ENV PS1 '\[\033[1;34m\]┌─[\[\033[1;33m\]\u@\H\[\033[1;34m\]]─[\[\033[1;33m\]\w\[\033[1;34m\]]\[\033[0m\]\n\[\033[1;34m\]└─$\[\033[0m\] '
WORKDIR /home/rat/ocs-setting
SmilePlz
() автор топика
Ответ на: комментарий от SmilePlz

Вообще даже не, не надо.

  1. Создай файл с переменными окружения env_file.env, закинь туда нужное построчно:
ENV1=SDFASGDSAG
ENV2=SGSDGSDG
  1. Передай этот файл при запуске в виде ключа --env-file=./env_file.env.
Zhbert ★★★★★
()
Ответ на: комментарий от SmilePlz
RUN ["dnf", "install", "-y", "gettext", "vim", "git", "tmux"]

Здесь намного проще написать

RUN dnf install -y gettext vim git tmux

Это в CMD или ENTRYPOINT имеет большое значение, как именно запускаются команды, но не в RUN.

emorozov
()
Ответ на: комментарий от Zhbert

на данный момент у меня выдаёт такую ошибку:

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "--env-file=./env_file.env": stat --env-file=./env_file.env: no such file or directory: unknown.

при таком конфиге:

cat Dockerfile
FROM almalinux:latest
RUN dnf upgrade -y && \
        dnf install -y gettext vim git tmux     && \
        useradd -m rat && \
        mkdir /home/rat/ocs-setting
WORKDIR /home/rat/ocs-setting

cat run_stend.sh
docker build -t ocs-setting .
docker run --rm -it -v $HOME/develop/ocs-setting:/home/rat/ocs-setting ocs-setting --env-file=./env_file.env bash -c 'cat run_install.txt & bash'

cat env_file.env
PS1='\[\033[1;34m\]┌─[\[\033[1;33m\]\u@\H\[\033[1;34m\]]─[\[\033[1;33m\]\w\[\033[1;34m\]]\[\033[0m\]\n\[\033[1;34m\]└─$\[\033[0m\] '

быстрый гуглёшь показал что вроде всё правильно написал, но наверное есть какие-то нюансы. Я отложу пока это дело, потому что хочется скрипт закончить. Но я к нему вернусь, спасибо теперь я знаю ещё один способ как указать переменные окружения =)

SmilePlz
() автор топика