Docker 如何配置环境变量,使得 SSH 后可以使用?

2018-07-14 15:21:08 +08:00
 dunhanson
如题所述,百度 google 好久,都没有找到解决办法,网上说写入 /etc/profile,但是无效
7762 次点击
所在节点    程序员
28 条回复
dunhanson
2018-07-14 21:45:00 +08:00
@ETiV 嗯 好的
singer
2018-07-14 21:48:16 +08:00
楼主可能思维错了。
传东西,你可以把目录挂到宿主机,在宿主机里改,容器内就会更改
如果你要进入容器,远程服务器的话,你 ssh 进宿主机,然后 docker exec -it 容器名 bash(如果你的容器没有 bash,就用 sh)

查看容器名的方法是 docker ps,最后一个参数就是容器名

多个服务需要同时起,建议使用 docker-compose
singer
2018-07-14 21:55:47 +08:00
上面我没回答到点子上,环境变量在你 dockerfile 阶段最好都定义好。
有些程序在构建镜像的时候,就会把环境变量放进去,所以后面改环境变量也没有任何作用

还有的是在容器启动得时候,加载环境变量的,这个时候,修改环境变量的。

还有一种情况就是,构建的时候,读取环境变量,写入到文件,写死。然后在 enterpoint 文件里写的脚本,在容器启动的时候,读取环境变量,然后再一次覆盖文件。这样,环境变量也会生效。

至于你的环境变量配置后,用不了,我想应该是这个变量在构建的时候,用到了,然后写入了文件。然后在容器启动得时候,没有重新读取覆盖的问题。
dunhanson
2018-07-14 22:12:05 +08:00
@jptx 按照你的方法试了下,确实可行
dunhanson
2018-07-14 22:15:27 +08:00
@singer 嗯 我试试
Reficul
2018-07-15 10:57:08 +08:00
容器即进程,重启 tomcat 和重启容器是一样的😬
xuexb
2019-01-06 22:29:45 +08:00
我也遇到这个问题了,场景是需要 SSH 登录到容器里去部署代码、启动服务,而我配置了个环境变量用来区分当前是哪个环境 ENV_LABEL,发现也没生效,然后使用了在 Dockerfile 入口文件里去向 ~/.bashrc 里写入 export 变量,如: https://github.com/xuexb/DevOps/blob/8f902cb8c4d6c682b2085a657965e625ef958091/jenkins-node/node/env.sh
NoBeeBee
2019-04-10 18:40:44 +08:00
在布置好 ssh 服务之前,需要启动容器之前,即 docker run 的时候把容器内部的 ssh 服务的 22 端口映射到寄主机上面你指定的端口,例如 2022,参数如下:
-p 2022:22

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX