copy是把本地机器的代码复制到docker容器中,然后运行docker容器后,我本地机器这个路径的代码改动了,docker容器的代码要自动更新吗?也就是说这个copy命令。。你要是改动啥它就自动再copy一次吗?还是要重启docker容器才可以用保持代码同步?谢谢!
图片里一共拷了两次,只要你的宿主机里面的路径改变了,就需要重新拷一次,不会自动copy。只会丢失不会自动保持同步
老哥,这个** copy几次** 的问题根本不存在.
首先, 这是一个dockerfile,其作用是指定一组规则用来生成docker镜像.
其次, docker容器和docker镜像是完全不同的两个概念. 镜像通过cgroup和namespace创建一个隔离环境运行起一个进程, 这个进程是容器.
镜像是文件, 容器是依镜像文件运行的进程. 为什么你会认为进程反过来还会改变自己的执行文件呢?
最后, copy命令只是把主机文件拷贝到镜像的文件结构中而已, 当且仅当你每次使用docker build指令生成一个镜像时, 这条copy命令才会执行.
dockerfile你可以类比makefile, 若你不执行make命令, makefile存在与否都没有区别, 更不存在makefile作用几次的问题.
所以, copy几次的答案是任意, 取决于docker build的执行. 想要保持代码同步, 依靠dockerfile是不可能的.
推荐如下方式:
$ docker run -v $your_project_path:/usr/src/app image-name cmd arg1 arg2
-v $your_project_path:/usr/src/app 会将主机的$your_project_path挂载到容器内部的/usr/src/app目录,也就是你在容器/usr/src/app内看到的文件
就是主机$your_project_path目录内的文件, 主机或容器对其中文件的修改都会同时被二者感知,即完全同步.
图片里一共拷了两次,只要你的宿主机里面的路径改变了,就需要重新拷一次,不会自动copy。只会丢失不会自动保持同步
只会丢失不会自动保持同步,图片里一共拷了两次,只要你的宿主机里面的路径改变了,就需要重新拷一次,不会自动copy