docker 简单使用

docker

  • docker 的简单是用,以 mitsuba0.6 的使用为例,以 ears 的仓库为例

目标

  • 在 windows 上实现一个 mitsuba0.6 的环境,在外部修改代码以后,仍然能够在环境中编译运行

docker 安装

  • 我使用的是 docker-desktop
  • 具体忘了,应该比较简单,需要把 docker 加入到环境变量中(命令行使用)
  • 成功后,能在命令行启动
1
2
3
C:\Users\admin>docker --version

Docker version 25.0.3, build 4debf41

docker 基本使用

准备工作

  • 提供一个 mitsuba0.6 的 docker file(文件

  • 下载 ears代码

  • ears 代码中的 Dockerfile 替换成提供的 Dockerfile

    • 源代码中的 Dockerfile,知识提供了一个运行环境,无法编译
    • 同时为了加速,把镜像源修改成了国内源
  • 进入到 Dockerfile 所在目录,开始工作

docker 使用

  • 新建一个 docker 镜像
    • 这一步比较耗时,但是只会执行一遍
1
2
docker build -t ears:v1 .
# docker build -t 名称:标记 Dockerfile 目录
  • 可以看到我们新建的镜像
1
2
3
4
C:\Users\admin>docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
ears v1 40ef7587d173 About an hour ago 1.36GB
  • 根据镜像,新建一个容器(如下命令同时启动了这个容器)
    • 因为我们需要使用到 windows 上的文件,因此需要在 docker 中挂载
      • -v:挂载点,windows路径:docker路径
1
docker run -it --name ears-dev -v D:/Code/dhh/ears:/mitsuba/ears -p 8808:80 ears:v1 /bin/bash
  • 可以看到我们新建的容器
1
2
3
4
docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99c3445da1b9 ears:v1 "/bin/bash" 2 hours ago Up 45 minutes 0.0.0.0:8808->80/tcp ears-dev
  • 启动一个已经存在的容器
    • 通过上面的 ID 启动
    • 不需要重新挂载
    • -i:交互式
1
docker start -i 99c3445da1b9

docker 内部

  • docker 内部就和 linux 一样,可以设置环境变量,省的每次启动都需要加
    • .bashrc 的最后加上如下代码(bash 启动的时候会自动执行)
1
2
3
export MITSUBA_DIR=/mitsuba/ears/mitsuba
export PATH=$MITSUBA_DIR/dist:$PATH
export LD_LIBRARY_PATH=$MITSUBA_DIR/dist:$LD_LIBRARY_PATH

mitsuba 编译

  • 进入 mitsuba 目录
1
cp build/config-linux-gcc.py config.py
1
python2 config.py -j $(nproc)