SSH直接进入docker集装箱

我有一些docker工人,现在我想用ssh访问一个。 那工作我通过ssh连接到docker集装箱。

但是现在我遇到了问题,我不知道用哪个用户可以访问这个容器?

我已经用主机上的两个用户(web和root)尝试过了。 但他们不工作。 做什么知道?

您可以直接放入正在运行的容器中:

 $ docker exec -it myContainer /bin/bash 

你可以在没有运行的容器上获得一个shell:

 $ docker run -it myContainer /bin/bash 

这是在容器上获取​​shell的首选方法。 运行SSH服务器被认为不是一个好的做法,虽然有一些用例,但应尽可能避免。

如果你想直接连接到一个Docker容器,而不连接到Docker主机,你的Dockerfile应该包括以下内容:

 # SSH login fix. Otherwise user is kicked off after login RUN echo 'root:pass' | chpasswd RUN mkdir /var/run/sshd RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] 

然后使用docker运行-p和-d标志。 例:

 docker run -p 8022:22 -d your-docker-image 

你可以连接:

 ssh root@your-host -p8022 

更强大的解决scheme是将nsenter拉到你的服务器,然后摆动并运行docker-enter从那里docker-enter 。 这样你就不需要在容器中运行多个进程(ssh服务器+任何容器),或者担心ssh用户的额外开销(更不用说安全问题了)。