Docker exec linux терминал создает псевдоним - PullRequest
0 голосов
/ 21 января 2019

У меня есть работающий и отсоединенный контейнер.Я хочу создать псевдоним команды перед подключением к этому контейнеру.

Когда я присоединяюсь к контейнеру и набираю:

alias bar='foo'

, псевдоним создается и может быть проверен:

alias

команда.

но если я хочу сделать то же самое с помощью команды docker exec , то есть таким образом

docker exec -it <container-name> /bin/bash -c "alias bar='foo'"

, она делаетне работает, вероятно потому что когда я присоединяюсь к контейнеру и печатаю в его терминале

/bin/bash -c "alias bar='foo'"

, он тоже не работает.

Вы знаете, как изменить alias bar='foo'он работает вместе с командой docker exec, примененной к отдельному контейнеру?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

добавьте в свой Dockerfile что-то вроде
RUN echo alias bar='foo' >> ~/.bashrc
На самом деле, если вы запускаете свой контейнер под пользователем, отличным от root, вам нужно поместить эту команду в правильный .bashrc

0 голосов
/ 15 февраля 2019

Псевдоним в вашем файле bashrc не принимает параметры напрямую.Хотя в вашем случае вам нужно будет создать функцию и псевдоним, который.

Вы можете добавить следующее в ~ / .bashrc

dexec() {
    docker exec -it "$1" /bin/bash
    echo "$1"
}

и не забудьте сделать

source ~/.bashrc

в идеале вы можете сделать что-то вроде этого

dexec <container_id>
0 голосов
/ 22 января 2019

Встроенный alias создает псевдоним в текущей оболочке. Псевдонимы, как и переменные окружения, не сохраняются, а только загружаются. Вам нужно обновить ваш .bashrc или что-то еще внутри контейнера, чтобы иметь желаемый псевдоним, чтобы он мог загружаться при каждом запуске bash.

...