社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

想不到吧?Docker 中也能跑 Mac OS 拉!

运维 • 2 年前 • 386 次点击  
来自公众号:民工哥技术之路

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

相信大家对 Docker 并不陌生,有时候想把玩一些开源项目,如果对应的项目提供 Docker 的启动方式的话,你可以非常容易的将对应项目跑起来。所以,你有没有想过使用 Docker 运行一个 Mac OS 系统呢(当然自己买一个 Mac 电脑也是可以的)?

使用我们今天推荐的开源项目 Docker-OSX 可以帮助你快速的使用 Docker 启动一个 Mac OS。

Docker-OSX 项目是什么?

官方介绍很简单:

Run Mac in a Docker container! Run near native OSX-KVM in Docker! X11 Forwarding!
特性

目前 Docker-OSX 的最新版本 2.6 支持如下特性:

  • CI/CD weaponization thru vnc and xdotool。可以自动化跑CI/CD。
  • OSX-KVM。本质上还是在KVM上运行OSX
  • X11 Forwarding。使用X11通信协议转发数据。
  • SSH on localhost:50922。可以SSH连接到OS。
  • QEMU
  • VNC on localhost:8888。可以使用VNC远程连接到OS,图形化操作
  • Create an ARMY using docker commit。这个就厉害了,能用已有的容器做成一个镜像。
  • XFVB HEADLESS (use vnc)。这个我还不清楚,同志们可以去了解下

使用项目制作好的镜像,非常简单就能完成。

操作

运行Docker-OSX

拉取镜像

docker pull sickcodes/docker-osx:latest

启动容器

docker run \
    --device /dev/kvm \
    --device /dev/snd \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    sickcodes/docker-osx:latest

现在mac os已经跑起来了,但是怎么连呢?

可以允许SSH连上OSX!
docker run \
    --device /dev/kvm \
    --device /dev/snd \
    -e RAM=4 \
    -p 50922:10022 \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    sickcodes/docker-osx:latest 

然后就可以ssh连接了。但是前提是mac os开启了ssh连接的功能。




    
ssh fullname@localhost -p 50922
如何使用VNC可视化操作

需要先构建VNC版本的docker-osx镜像,Dockerfile地址是

https://github.com/sickcodes/Docker-OSX/blob/master/vnc-version/Dockerfile,构建命令:docker build -t docker-osx-vnc

启动容器:

# docker run --device dev/kvm --device dev/snd -p 8888:5999 -p 50922:10022 -d --privileged docker-osx-vnc:latest

然后就可以通过VNC连接了

  • 本地VNC连接:localhost:8888
  • 远程连接:remotehost:8888

如何查看密码:

docker ps

# copy container ID and then
docker exec abc123fgh456 tail vncpasswd_file
---END---


推荐↓↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/150702
 
386 次点击