在 Windows 和 Mac 上进行 Linux 开发,过去一般通过 SSH 到开发机,或者本地启动虚拟机。现在用 Docker 更容易维护开发环境的统一,推荐使用。 本文完全针对 docker 小白,由于本人 docker 也用的不太多,因此如果有错误欢迎指教。
Linux 一般自带,如果没有,可以通过包管理安装。 Mac 和 Windows 10 下可以安装 Docker Desktop。 Windows 10 之前的版本,比如 Windows 7,则只能安装 Docker ToolBox。
需要注意的是 Mac 和 Windows 下是通过虚拟化方式运行的,性能明显低于 Linux,特别是访问卷方式加载文件系统时。
安装后还需要登录等,在此不表。
在本目录下执行 ./build.sh
在任意目录下执行 start.sh
。
我的共享卷目录放在 /Volumes/code
下,因此 hardcode 了其路径。
如果不同,需要修改路径。
启动后,代码下载到 /code
下,即可在容器内可见。
需要注意在 docker 容器内的任何修改,在退出后都会丢失。因此永久性修改都要放在挂接的 /code/
下。
很多时候一个终端可能不够用,我们希望再登录更多的终端,比如 top
查看编译进程运行情况等。
首先列出当前有哪些活动的容器:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09b93464c2f7 ubuntu-devbox "/bin/bash" 12 hours ago Up 12 hours laughing_northcutt
然后输入以下命令,就能再起一个 shell:
$ docker exec -it 09b93464c2f7 /bin/bash
# exit
由于容器退出后内容会丢失,因此需要安装的软件,需要修改 Dockerfile
,重新 build。安装新的包等时,建议不要动原来的 CMD
,而是增加新的 CMD
。
这看起来和 docker 的最佳实践违背,不过由于我们不是生产环境,这样做有利于利用以前缓存的镜像层,大大加快构建速度。
Mac 文件系统默认是不区分大小写的,如果主要在 Linux 下开发,建议创建大小写敏感的文件系统卷(不需要分区),
挂接到 mac 下,我是挂接到 /Volumns/code/
目录下。