首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动并附加带有X11转发的码头容器

启动并附加带有X11转发的码头容器
EN

Stack Overflow用户
提问于 2016-01-28 17:10:18
回答 1查看 4.7K关注 0票数 0

有各种各样的文章,如等等,解释了如何使用X11转发在Docker上运行GUI应用程序。我正在使用Centos码头容器。

然而,所有这些方法都使用

docker run

与所有适当的选项,以便可视化的结果。docker run的任何使用都会创建一个新映像并在此之上执行操作。

在同一个容器中工作的一种方法是使用docker start,然后是docker attach,然后在容器的提示符下执行命令。此外,我打算在Docker容器上运行的脚本(假设xyz.sh)驻留在容器根目录中的文件夹MyFiles中,并接受一个参数

那么,是否有一种使用docker start和/或docker attach运行脚本的方法,同时也使用X11转发脚本?

这就是我尝试过的,尽管docker run想要避免使用,而使用 docker start docker attach

代码语言:javascript
复制
sudo docker run -it \
    --env="DISPLAY" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    centos \
    cd MyFiles \
    ./xyz.sh param1
export containerId='docker ps -l -q'

这反过来会引发一个错误,如下所示-

代码语言:javascript
复制
/usr/bin/cd: line 2: cd: MyFiles/: No such file or directory
  1. 如何使用xyz.sh和docker attach在Docker容器上在MyFiles下运行脚本docker start
  2. 另外,由于脚本的位置和名称可能不同,我想知道是否必须在Docker容器的系统路径变量中包含这些路径,还是也可以在运行时完成?
EN

回答 1

Stack Overflow用户

发布于 2016-01-29 22:12:28

在我看来,您的问题不是X11转发,而是一般Docker语法。

你可以很简单地去做:

代码语言:javascript
复制
sudo docker run -it \
    --env="DISPLAY" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    -w MyFiles \
    --rm \
    centos \
    bash -c xyz.sh param1

我补充说:

  • --rm,以避免堆放旧的死容器。
  • -w workdir,明显的含义
  • /bin/bash -c以确保脚本由bash解释。

如何不使用docker run

run实际上就像createstart。如果你愿意的话,你可以分成两步。

如果要附加到容器,它必须首先运行。要使其运行,必须有一个当前正在运行的进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35067711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档