有各种各样的文章,如这、这和这等等,解释了如何使用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。
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'这反过来会引发一个错误,如下所示-
/usr/bin/cd: line 2: cd: MyFiles/: No such file or directorydocker attach在Docker容器上在MyFiles下运行脚本docker start发布于 2016-01-29 22:12:28
在我看来,您的问题不是X11转发,而是一般Docker语法。
你可以很简单地去做:
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实际上就像create和start。如果你愿意的话,你可以分成两步。
如果要附加到容器,它必须首先运行。要使其运行,必须有一个当前正在运行的进程。
https://stackoverflow.com/questions/35067711
复制相似问题