启动并连接带有X11转发的docker容器
有各种各样的文章,如,以及更多,解释了如何使用X11转发在Docker上运行GUI应用程序。我使用的是Centos Docker容器 然而,所有这些方法都使用启动并连接带有X11转发的docker容器,docker,x11,x11-forwarding,Docker,X11,X11 Forwarding,有各种各样的文章,如,以及更多,解释了如何使用X11转发在Docker上运行GUI应用程序。我使用的是Centos Docker容器 然而,所有这些方法都使用 docker运行 使用所有适当的选项,以可视化结果。任何使用docker run的操作都会创建一个新图像,并在此图像上执行操作 在同一容器中工作的一种方法是使用docker start,然后使用docker attach,然后在容器提示下执行命令。此外,我打算在Docker容器上运行的脚本(比如xyz.sh)驻留在容器根目录中的MyFil
docker运行
使用所有适当的选项,以可视化结果。任何使用docker run
的操作都会创建一个新图像,并在此图像上执行操作
在同一容器中工作的一种方法是使用docker start
,然后使用docker attach
,然后在容器提示下执行命令。此外,我打算在Docker容器上运行的脚本(比如xyz.sh)驻留在容器根目录中的MyFiles文件夹中,并接受一个参数
那么,有没有一种方法可以在X11转发脚本时使用docker start
和/或docker attach
运行脚本
这就是我尝试过的,尽管我希望避免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 directory
Docker start
和Docker attach
在Docker容器上的MyFiles下运行脚本xyz.sh
在我看来,您的问题不在于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
以确保脚本由bash解释/bin/bash-c
如果没有
docker run
,该如何操作:
run
实际上就像create
然后start
。如果愿意,可以将其分为两步
如果要附加到容器,必须先运行该容器。要让它运行,必须有一个进程正在运行。谢谢@Herve。将对此进行检查并更新讨论和反馈