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

ba37a3ee1060dd0dd8f4270d83e2a74e.gif

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

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

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

8d7d0d5221e1b41ffdb1dbd3c2488bed.png

Docker-OSX 项目是什么?

官方介绍很简单:

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

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

a073cd157928fa8fb56cfc1f75f1b8b5.png
  • 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)。这个我还不清楚,同志们可以去了解下

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

d4155a4ce1c150c4ac29ffee5301c3d5.png

操作

运行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
131beb87743104c64a5bceba2822daac.png

10T 技术资源大放送!包括但不限于:Linux、虚拟化、容器、云计算、网络、Python、Go 等。在 开源Linux 公众号内回复 10T,即可免费获取!

Linux学习指南
有收获,点个在看
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用docker run命令来运行Alpine Linuxdocker容器,并在启动容器时指定您想要连接的端口号。例如,要运行一个名为mycontainer的Alpine Linux容器并将远程端口设置为1234,可以使用以下命令:docker run -p 1234:1234 mycontainer。 ### 回答2: 要在Alpine Linux启动一个可以远程连接的Docker容器,需要执行以下步骤: 1. 首先,确保已经在Alpine Linux安装了Docker。可以运行`apk add docker`命令来安装Docker。 2. 接下来,启动Docker守护进程。可以通过运行`service docker start`来启动守护进程。 3. 在Docker守护进程启动后,可以使用`docker run`命令来创建一个运行在Docker容器的实例。为了使容器可以被远程连接,可以添加`-p`参数来指定要映射的端口。例如,可以运行以下命令: ``` docker run -p <host_port>:<container_port> <image_name> ``` 其,`<host_port>`是宿主机上用于远程连接的端口号,`<container_port>`是容器内部应用程序实际运行的端口号,`<image_name>`是要在容器运行的Docker镜像名称。 4. 在Docker容器运行的应用程序实例启动后,可以使用远程连接工具,如SSH或VNC等,连接到Alpine Linux容器。根据连接工具的不同,可以使用容器的IP地址或者宿主机的IP地址连接到容器。 以上步骤完成后,即可在Alpine Linux启动一个可以远程连接的Docker容器。 ### 回答3: 要在Docker启用远程连接,可以按照以下步骤进行操作: 1. 首先,确保已在Docker主机上安装了Docker Engine。在Alpine Linux,可以使用以下命令进行安装: ``` apk add docker ``` 2. 安装完成后,启动Docker服务: ``` service docker start ``` 3. 接下来,编辑Docker的配置文件`/etc/docker/daemon.json`,添加以下内容: ``` { "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } ``` 这将允许Docker监听来自远程主机的连接请求。 4. 保存并退出编辑器后,重新启动Docker服务以使更改生效: ``` service docker restart ``` 5. 确保防火墙允许连接到2375端口。如果有防火墙配置,请确保允许流量通过。 现在你应该可以远程连接到Docker主机了。可以使用Docker客户端来连接,例如,你可以在另一台主机上运行以下命令: ``` docker -H tcp://<docker-host>:2375 <docker-command> ``` 其`<docker-host>`是Docker主机的IP地址或主机名,`<docker-command>`是你要在Docker主机上执行的命令。 希望这能帮助到你。请注意,在允许远程连接到Docker主机时,请确保采取适当的安全措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值