这个docker容器把copy命令执行几遍?

图片说明

copy是把本地机器的代码复制到docker容器中,然后运行docker容器后,我本地机器这个路径的代码改动了,docker容器的代码要自动更新吗?也就是说这个copy命令。。你要是改动啥它就自动再copy一次吗?还是要重启docker容器才可以用保持代码同步?谢谢!

图片里一共拷了两次,只要你的宿主机里面的路径改变了,就需要重新拷一次,不会自动copy。只会丢失不会自动保持同步

老哥,这个** copy几次** 的问题根本不存在.

  1. 首先, 这是一个dockerfile,其作用是指定一组规则用来生成docker镜像.

  2. 其次, docker容器和docker镜像是完全不同的两个概念. 镜像通过cgroup和namespace创建一个隔离环境运行起一个进程, 这个进程是容器.
    镜像是文件, 容器是依镜像文件运行的进程. 为什么你会认为进程反过来还会改变自己的执行文件呢?

  3. 最后, 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