进入 docker 容器,exec 丢失 PATH 环境变量

mag*_*ged 6 environment-variables ros docker

这是我的 Dockerfile:

FROM ros:kinetic-ros-core-xenial
CMD ["bash"]
Run Code Online (Sandbox Code Playgroud)

如果我运行docker build -t ros . && docker run -it ros,然后从容器内运行echo $PATH,我会得到:

/opt/ros/kinetic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

如果我exec进入容器(docker exec -it festive_austin bash)并运行echo $PATH,我会得到:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

为什么环境变量不同?如何在具有相同初始环境的容器上获得新的 bash 进程?

Oli*_*rth 4

ENTRYPOINT命令仅在 上调用docker run,而不在 上调用docker exec

我假设这个/ros_entrypoint.sh脚本负责向PATH. 如果是这样,那么你可以这样做docker exec

docker exec -it <CONTAINER_ID> /ros_entrypoint.sh bash
Run Code Online (Sandbox Code Playgroud)