【问题标题】:docker service create interactive modedocker service 创建交互模式
【发布时间】:2019-09-11 09:34:11
【问题描述】:

我的 Dockerfile 如下所示

FROM base-rpi:latest 
USER root
WORKDIR /Pwr/murata/test 
RUN  make
CMD ["./murata_tcp_test"]

Docker 构建

docker build --no-cache --rm -t m-docker .

当我如下运行 docker 时:

docker run  -it --rm --name m-docker m-docker

它向我显示交互式控制台并允许我选择选项

****** Test application **********
Press 1 for connect
Press 2 for add a node
Press 0 for exit
Enter choice
******************************************

但是当我这样做时处于群模式

docker service create --name m-docker  m-docker:latest

无法通过以下消息启动 docker 容器

overall progress: 0 out of 1 tasks
1/1: preparing [=================================>                 ]
verify: Detected task failure

Docker 服务日志显示容器反复启动/停止

docker service logs m-docker -f


m-docker.1.9gwwzx4r0isn@raspberrypi    | ****** Test application **********
m-docker.1.9gwwzx4r0isn@raspberrypi    | Press 1 for connect
m-docker.1.9gwwzx4r0isn@raspberrypi    | Press 2 for add a node
m-docker.1.kpg4fxom4uyw@raspberrypi    | ****** Test application **********
m-docker.1.kpg4fxom4uyw@raspberrypi    | Press 1 for connect
m-docker.1.kpg4fxom4uyw@raspberrypi    | Press 2 for add a node
m-docker.1.9gwwzx4r0isn@raspberrypi    | Press 0 for exit
m-docker.1.9gwwzx4r0isn@raspberrypi    | Enter choice
m-docker.1.kpg4fxom4uyw@raspberrypi    | Press 0 for exit
m-docker.1.kpg4fxom4uyw@raspberrypi    | Enter choice
m-docker.1.tk676t1aabmh@raspberrypi    | ****** Test application **********

如何以交互模式运行 docker service create 。我参考了 docker service create 文档,但它没有提供任何以交互模式运行的选项

【问题讨论】:

    标签: docker dockerfile docker-swarm


    【解决方案1】:

    因为swarm,它默认以分离模式运行容器,所以不会分配tty与容器交互。

    你是否尝试过运行

    docker service create --name m-docker --tty   m-docker:latest
    

    这将分配伪 TTY

    --tty , -t      API 1.25+   Allocate a pseudo-TTY
    

    service_create

    【讨论】:

    • 感谢您的回答。使用 --tty 命令启动 docker 服务,但在服务启动后它没有在控制台中显示选项。但是,我可以在 docker service logs ... 命令中看到这些选项
    • 是的,这在 docker swarm 的情况下是预期的,因为它在后台运行容器,如果你运行 docker run -d --rm --name m-docker m-docker,那么你也将无法交互。
    • 有没有办法交互运行docker服务。 1) 如果我在 swarm 模式下执行 docker run,容器将附加到一个主机
    • 我在文档中没有找到方法,但由于在后台模式下运行,它不会像您期望的那样交互。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多