作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道在 docker 容器中使用多个终端很奇怪。
我的目的是测试一些命令并最终用这些命令构建一个dockerfile。所以我需要使用多个终端,比如两个。一个用于运行一些命令,另一个用于测试该命令。
如果我用的是真机,我可以ssh它来使用多个终端,但是在docker中,我该怎么做呢?
也许解决方案是使用 CMD /bin/bash
来运行
docker,并在那个 bash 中使用 screen
?
编辑
在我的情况下,一个 shell 运行服务器程序,另一个运行客户端程序来测试服务器程序。因为服务端程序和客户端程序是一起编译的。所以,docker中默认的link方式是不适合的。
最佳答案
docker 方式是在一个容器中运行服务器,在另一个容器中运行客户端。您可以使用链接使服务器对客户端可见,您可以使用卷使服务器上的文件对客户端可用。如果你真的想有两个终端到同一个容器,没有什么能阻止你使用 ssh。我测试了这个 docker 服务器:
来自:https://docs.docker.com/examples/running_ssh_service/
# sshd
#
# VERSION 0.0.1
FROM ubuntu:14.04
MAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com"
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
您需要将此图像基于您的图像或以其他方式将所有功能整合在一起。构建并启动容器后,您可以使用
获取它的 IPdocker inspect <id or name of container>
您现在可以从 docker 主机使用 root 和来自 docker 文件的密码进行 ssh 登录。现在您可以根据需要生成任意数量的 ssh 客户端。我测试了:
while true; do echo "test" >> tmpfile; sleep 1; done
来自一个客户和
tail -f tmpfile
来自另一个
关于bash - A如何在docker容器中使用多个终端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096798/
我是一名优秀的程序员,十分优秀!