刚学习和用上 docker 几天,用 hub.docker 的公共镜像,创建了自己的容器(testrq),配好了实验环境,正确弄好 sshd 服务,操作机也能 ssh 上来了,
请教的问题是,我每次退出了这个 test 容器( exit code 139),再开启这个容器的时候,我是以:
docker start testrq
开启容器,这样开启 docker 容器,里面的 ssh 服务不能自动启动,
我在网上看到的例子,是改 bashrc 的判断启动,但未能成功,是不是不适合我这周启动方式?
请教正确的启动内部 ssh 服务方法? 谢谢!
1
piku 2023-02-27 17:58:47 +08:00 via Android
不理解你在说什么。
请检查容器启动时启动的究竟是什么命令,EXEC=? 还有一种可能是你的宿主机占用了 22 端口,容器也配的 22 端口 |
2
riggzh 2023-02-27 18:01:25 +08:00
没这个需求-。-,你是用什么作为基础启动的,那就去用什么系统的启动脚本。至于端口能不能映射出来,是你的容器设置
|
3
qazwsxkevin OP 我是用
docker run -d --name testrq -p 65001:22 testos:v1 创建容器的, 在容器里启动 ssh 服务的时候,外机是能 ssh 上来的 但容器退出后,再 docker start 容器,ssh 服务不会自动起来 |
4
benzalus 2023-02-27 18:19:16 +08:00
设置容器启动命令为开启 sshd 。这样得到容器后就有 sshd 服务
疑问:为啥要用 sshd 呢,不能通过 docker exec 达成类似效果吗 |
5
SbloodyS 2023-02-27 18:21:34 +08:00
|
6
lovelylain 2023-02-27 18:29:52 +08:00 via Android
看下 entrypoint 是什么,一层层排查,docker 本身应该没什么区别,可能容器内残留文件影响了
|
7
tyrantZhao 2023-02-27 18:38:00 +08:00
需要写个 dockerfile
|
8
huangmingyou 2023-02-28 08:45:42 +08:00
用容器就要转换思路,不能当成一个随时要登陆的系统来用。
|
9
julyclyde 2023-02-28 08:57:50 +08:00
1 容器不是虚拟机,而是“用后即弃”的应用程序
2 不要在容器里运行多个服务 3 搞明白 bashrc 是在什么场景被调用的 |
10
bai4246464 2023-02-28 09:10:45 +08:00
看看镜像是不是自带 sshd 的,带的话排查端口
不带的话自己用 dockerfile 打个镜像 |
11
piku 2023-03-01 15:13:19 +08:00
看起来是 entrypoint 的问题
|