已经做好的 docker 容器,如何在 docker start 容器时,里面的 ssh 服务也跟随启动?

2023-02-27 17:55:17 +08:00
 qazwsxkevin

刚学习和用上 docker 几天,用 hub.docker 的公共镜像,创建了自己的容器(testrq),配好了实验环境,正确弄好 sshd 服务,操作机也能 ssh 上来了,
请教的问题是,我每次退出了这个 test 容器( exit code 139),再开启这个容器的时候,我是以:

docker start testrq

开启容器,这样开启 docker 容器,里面的 ssh 服务不能自动启动,
我在网上看到的例子,是改 bashrc 的判断启动,但未能成功,是不是不适合我这周启动方式?
请教正确的启动内部 ssh 服务方法? 谢谢!

1897 次点击
所在节点    Linux
11 条回复
piku
2023-02-27 17:58:47 +08:00
不理解你在说什么。
请检查容器启动时启动的究竟是什么命令,EXEC=?
还有一种可能是你的宿主机占用了 22 端口,容器也配的 22 端口
riggzh
2023-02-27 18:01:25 +08:00
没这个需求-。-,你是用什么作为基础启动的,那就去用什么系统的启动脚本。至于端口能不能映射出来,是你的容器设置
qazwsxkevin
2023-02-27 18:07:51 +08:00
我是用
docker run -d --name testrq -p 65001:22 testos:v1
创建容器的,
在容器里启动 ssh 服务的时候,外机是能 ssh 上来的
但容器退出后,再 docker start 容器,ssh 服务不会自动起来
benzalus
2023-02-27 18:19:16 +08:00
设置容器启动命令为开启 sshd 。这样得到容器后就有 sshd 服务
疑问:为啥要用 sshd 呢,不能通过 docker exec 达成类似效果吗
SbloodyS
2023-02-27 18:21:34 +08:00
可以通过--init 的方式将启动脚本和主进程绑定起来

https://docs.docker.com/engine/reference/run/
lovelylain
2023-02-27 18:29:52 +08:00
看下 entrypoint 是什么,一层层排查,docker 本身应该没什么区别,可能容器内残留文件影响了
tyrantZhao
2023-02-27 18:38:00 +08:00
需要写个 dockerfile
huangmingyou
2023-02-28 08:45:42 +08:00
用容器就要转换思路,不能当成一个随时要登陆的系统来用。
julyclyde
2023-02-28 08:57:50 +08:00
1 容器不是虚拟机,而是“用后即弃”的应用程序
2 不要在容器里运行多个服务
3 搞明白 bashrc 是在什么场景被调用的
bai4246464
2023-02-28 09:10:45 +08:00
看看镜像是不是自带 sshd 的,带的话排查端口
不带的话自己用 dockerfile 打个镜像
piku
2023-03-01 15:13:19 +08:00
看起来是 entrypoint 的问题

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

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

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

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

© 2021 V2EX