docker下安装ubuntu,
每次都要去手动启动ssh,输入命令:service ssh start,然后就可以登录,
有没有办法可以自动启动呢?
有几种方法可以让 docker 下的 ubuntu 自动启动 ssh 服务:
方法一:使用 systemd 来管理 ssh 服务。在 ubuntu 容器中执行以下命令:
sudo systemctl enable ssh.socket
这样就可以让 ssh 服务在容器启动时自动运行。
方法二:使用 update-rc.d 命令来设置 ssh 服务的启动级别。在 ubuntu 容器中执行以下命令:
sudo update-rc.d ssh defaults
这样就可以让 ssh 服务在容器启动时自动运行。
方法三:修改 dockerfile 文件,添加一条 RUN 命令来启动 ssh 服务。例如:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@session\srequired\spam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
RUN service ssh start
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
然后重新构建和运行容器,就可以实现自动启动 ssh 服务。
希望这些方法能对你有所帮助!
方法一:在 Dockerfile 中自动启动 SSH 服务
在您的 Dockerfile 文件中添加以下命令:
apt-get update && \
apt-get install -y openssh-server && \
mkdir -p /run/sshd && \
echo 'root:password' | chpasswd && \
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
service ssh start && \
service ssh stop
上述命令安装了 OpenSSH 服务,并且在最后启动 SSH 服务,并立即停止。这将使 Docker 容器在启动时自动启动 SSH 服务。
方法二:在启动容器时使用参数自动启动 SSH 服务
您可以在启动容器时使用 -d 参数和 --restart 参数自动启动 SSH 服务。例如:
docker run -d --restart=always -p 22:22 --name ubuntu-ssh ubuntu:latest /usr/sbin/sshd -D
上述命令在容器中启动 SSH 服务,并将容器的 22 端口映射到宿主机的 22 端口上。--restart 参数将确保容器在停止或退出后自动重启,并始终处于运行状态。
需要注意的是,在使用此方法时,需要将 SSH 服务的 -D 参数放在容器名称之后。
希望这些方法可以帮助您自动启动 SSH 服务。
参考地址:[http://www.c3389.com/post/4.html]