自动生成runc的config.json文件

有时候编写runc的config.json确实是蛋疼的一件事,后来发现可以直接生成,睿智了。

拿postgresql举例子吧,首先先用docker运行它的镜像。
docker run -d postgres:10.7-alpine

然后去/run/docker下面去查找config.json

$ sudo find /run/docker -iname "config.json"
/run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/5f07822f92ebf2c485a6dfac8771de4b4fc8fdc4dcabab23adb1337fc847b665/config.json

5f07822f92ebf2c485a6dfac8771d这一串东西就是上面那个容器的id。

之后可以把镜像打包成tgz
docker export $(docker create postgres:10.7-alpine) | tar -C rootfs -xvf -
然后把rootfs下的所有东西直接打包
tar -czf postgres.tar.gz rootfs

!!!如果不打包rootfs这个文件夹的话,而是打包里面的文件,有时会出现runc运行容器提示里面的命令权限不足的问题,这是个很蛋疼的问题,很不好察觉

如果要在其他地方运行这个容器的话,需要改一改config.json里面的一些配置信息,比如里面的

{
"root" : {
      "path" : "/var/lib/docker/overlay2/containerID/merged",
      "readonly": false
}
}

path需要改成/you-path/rootfs

也可以在mounts下加上挂载,

  {
            "destination": "/var/lib/postgresql/data",
            "type": "bind",
            "source": "/data",
            "options": [
                "rbind",
                "rprivate"
            ]
}

你可能感兴趣的:(自动生成runc的config.json文件)