gpt4 book ai didi

bash - A如何在docker容器中使用多个终端?

转载 作者:行者123 更新时间:2023-11-29 09:21:38 33 4
gpt4 key购买 nike

我知道在 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"]

您需要将此图像基于您的图像或以其他方式将所有功能整合在一起。构建并启动容器后,您可以使用

获取它的 IP
docker 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com