• MAC的docker中运行GUI程序


    如何在MAC的docker中运行GUI程序

    1、下载docker

    2、下载XQuartz

    3、设置XQuqrtz参数,“允许从网络连接连接”

    4、重新启动XQurtz 2.7.11( MacOS 10.15版本,需要2.7版本支持)

    5、运行xhost并允许本机连接(在终端输入如下两行命令)

    ```
    export IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
    xhost + $IP
    ```

    5.5、如果出现xhost失败:xhost: unable to open display “”,尝试重启电脑(还是不行就没办法了)

    6、执行docker,run命令或者exec命令都可以(-e DISPLAY=$IP:0参数是必须的,-it可选,具体命令请另行查找),例:下图

    docker exec -it -e DISPLAY=$IP:0 containerName /bin/bash
    ————————————————
    版权声明:本文为CSDN博主「whu_swh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_40037872/article/details/103248552

    #!/bin/bash
    # -----------------------------------------------------------------
    # FileName: conf.cnf
    # Date: 2020-01-09
    # Author: jiftle
    # Description:
    # -----------------------------------------------------------------
    DockerKey="dev-env"
    DockerVer="latest"

    # ------- 处理GUI显示的问题,原理:x11共享 -------
    IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')



    #!/bin/bash
    # -----------------------------------------------------------------
    # FileName: exec.sh
    # Date: 2020-01-09
    # Author: jiftle
    # Description:
    # -----------------------------------------------------------------
    . ./conf.cnf

    echo "  |--> 当前主机IP: $IP"

    xhost + $IP

    # docker exec -it ${DockerKey} bash
    docker exec -it -e DISPLAY=$IP:0 dev-env bash

    #!/bin/bash
    # -----------------------------------------------------------------
    # FileName: run.sh
    # Date: 2020-01-09
    # Author: jiftle
    # Description:
    # -----------------------------------------------------------------
    . ./conf.cnf

    echo "  |--> 当前主机IP: $IP"
    # --------------- 定义变量 ------------------
    GitPath="${HOME}/tg-git"
    HostIp="$IP"

    echo "------------- 运行[${DockerKey}:${DockerVer}]镜像的容器 ------------"

    echo "---> 开始启动[${DockerKey}:${DockerVer}] Docker"

    # -e GDK_SCALE
    # -e GDK_DPI_SCALE
    # ----------- 运行容器 ------------
    docker run -itd
    `# 注释请忽略,----------- 设置名称 -------------`
    --name="${DockerKey}"
    `# 注释请忽略,----------- 工作目录映射 -------------`
    -w /root `# 默认工作目录`
    -v ${HOME}:/home/john `# 默认工作目录,映射`
    -v ${GitPath}:/home/john/git `# git仓库目录`
    `# 注释请忽略,----------- 用户密钥 -------------`
    -v ${HOME}/.ssh:/root/.ssh `# .ssh密钥`
    `# 注释请忽略,----------- 端口映射 -------------`
    -p 8022:22 `# ssh端口`
    -p 8001:8001 `# 日志仓库,预览服务`
    -p 8080:8080 `# web程序调试端口`
    -h "${DockerKey}" `# 机器名`
    --restart=always `# 自启动,容易导致挂载的分区,晚于docker`
    `# 注释请忽略,----------- 图形界面 -------------`
    -v /tmp/.X11-unix:/tmp/.X11-unix
    -e DISPLAY=${HostIp}:0
    `# 镜像名`
    ${DockerKey}:${DockerVer}
    echo "---> 启动[${DockerKey}:${DockerVer}] Docker完毕"





  • 相关阅读:
    Linux基础命令---sudo
    Linux基础命令---yes
    Linux基础命令---shutdown
    Divide Two Integers
    java 判断两个数是否异号
    字节顺序的详细解释(转)
    java无符号移位(>>>)和有符号移位(>>)
    java 参数化类型
    c++事件内核对象(event)进程间激活(转)
    windows多线程编程(一)(转)
  • 原文地址:https://www.cnblogs.com/jiftle/p/12904397.html
Copyright © 2020-2023  润新知