Как установить текущий рабочий каталог для docker exec с внутренней оболочкой bash?

У меня есть изображение докеры разработчика на основе ubuntu: 14.04, которое я использую для разработки приложений для Ubuntu 14.04. Я запускаю этот образ, когда машина загружается с помощью docker start image-name

В моем домашнем каталоге была установлена ​​привязка с помощью --volumes при первоначальном создании.

Чтобы ввести изображение, у меня есть псевдоним, определенный в .bash_aliases

alias d_enter="docker exec -ti ub1404-dev /bin/bash"

Итак, чтобы ввести изображение, я просто набираю d_enter

Но я часто забываю запустить d_enter после ввода длинного пути и хотел бы, чтобы d_enter автоматически переключался на этот внутренний каталог.

Не работает следующее.

docker exec -ti ub1404-dev /bin/bash <(echo ". ~/.bashrc && cd $(pwd)")

Есть ли другой способ достичь желаемого результата?

Например, если мой текущий рабочий каталог: /home/matt/dev/somepath/blabla

И я набираю d_enter, моя текущая рабочая директория в настоящее время становится: /home/matt то, что я хочу сделать для текущей директории после того, как exec будет /home/matt/dev/somepath/blabla

2 ответа

Определенно взлом, но вы можете сделать что-то вроде создания d_enter функции оболочки (может оставаться псевдоним, но это проще в обслуживании):

d_enter() {
 pwd > ~/.docker_initial_pwd
 docker exec -ti ub1404-dev /bin/bash
}

И затем в контейнере в вашей учетной записи пользователя .bashrc добавьте что-то вроде:

if [[ -f "${HOME}/.docker_initial_pwd ]]; then
 cd $(cat "${HOME}/.docker_initial_pwd")
fi


Вы можете добиться этого с помощью: docker exec -it containerName sh -c "cd /var/www && /bin/bash"

licensed under cc by-sa 3.0 with attribution.