在工作中遇到了需要在docker上运行存在opengl依赖的服务程序,现记录下来。
运行环境:centos 7
拿到的服务器没有xserver,需要先安装界面程序
1、安装Xwindows
yum -y groupinstall "X Windows System"
2、安装GNOME Desktop
yum -y groupinstall "GNOME Desktop"
完成安装后运行startx进入界面。
安装docker服务
1、yum install docker
启动docker服务
1、systemctl start docker
制作dockerfile(参考网上的教程,按自己需要添加修改部分代码)
创建docker目录
#mkdir docker
#cd docker
[root@node5 dockers]# ls
Dockerfile pack
[root@node5 dockers]#
其中pack目录下是docker上自己需要文件
#!/bin/bash
FROM centos:7
RUN yum -y install libpng12.x86_64
RUN yum -y install mesa*
RUN yum -y install cairo.x86_64
RUN export uid=0 gid=0
RUN mkdir -p /home/developer
RUN echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd
RUN echo "developer:x:${uid}:" >> /etc/group
RUN echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN chmod 0440 /etc/sudoers
RUN chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
COPY pack /home
CMD /home/vxMtsTranscode
docker build -t vxMtsTranscde:latest .
[root@node5 kk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
transcode latest 8b6b69d67551 12 days ago 1.349 G
docker image制作好后
运行docker中的程序
docker run -ti --rm -p 9060:9060 -p 8000:22 --privileged -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix transcode /home/vxMtsTranscode/vxMtsTranscode -WorkerID 123 -Port 9060
这种方式是共享宿主机上的显示设备。
如果需要采用远程的xserver,比例192.168.10.233上的显示设备,则需要配置远端的xserver
确认已经远端服务器上X进程已经启动,6000或者6000以上的端口(如果DISPLAY为:0则为6000端口,为:1则为6001以此类推)。
运行xhost +
[root@node5 kk]# xhost +
access control disabled, clients can connect from any host
如上显示,则成功,需要在本机的命令行中运行,ssh中会出错。
运行docker中的程序
docker run -ti --rm -p 9060:9060 -p 8000:22 -e DISPLAY=192.168.10.233:0.0 transcode /home/vxMtsTranscode/vxMtsTranscode -WorkerID 123 -Port 9060
[root@node5 vxMtsTranscode]# docker run -ti --rm -p 9060:9060 -p 8000:22 -e DISPLAY=192.168.10.233:0.0 transcode /home/vxMtsTranscode/vxMtsTranscode -WorkerID 123 -Port 9060
线程[主线程][0x0001(1)]开始
运行成功。