为啥写这篇
我们公司有个业务是跑在一个容器里的 , 没错 一个项目! 跑在一个容器里,容器里nginx redis nacos 各种乱七八糟服务全都有 已经相当于一个虚拟机了 一个镜像6个G 还是很久很久之前的。之后有放了乱七八糟的包我也不敢删了重启个容器
由于没做挂载映射,每次更新前端dist文件夹 (和复制文件有区别) 都要先把文件夹放到真机下,然后用docker cp 将容器里/root/dist文件夹替换掉
在操作的过程中对docker cp有了新的感悟 所以就想记录下来 ,可能也是之前学的不好
docker cp命令
**从宿主机复制文件到容器**
docker cp /path/to/local/file.txt my_container:/path/in/container/
将宿主机上的 `file.txt` 文件复制到名为 `my_container` 的容器的指定路径下。
**从容器复制文件到宿主机**
docker cp my_container:/path/in/container/file.txt /path/to/local/
这会将容器 `my_container` 中的 `file.txt` 文件复制到宿主机的指定路径下。
**复制目录**
复制目录时,不需要额外的选项,但路径的末尾需要加上斜杠(`/`)以指示这是一个目录。
docker cp my_container:/path/in/container/directory/ /path/to/local/directory/
这会将容器中的 `directory` 目录及其内容复制到宿主机的指定位置。
**使用归档模式复制**
docker cp -a my_container:/path/in/container/directory/ /path/to/local/archive.tar
这会将容器中的 `directory` 目录及其内容以 tar 归档的形式复制到宿主机的 `archive.tar` 文件中,同时保留文件的元数据。
大概就是这样的用法 但是复杂就在路径 上面
docker cp SCR_PATH DEST_PATH
假设几种情况
这样看是不是就眼花撩乱了 我之前复制/home/wj/dist 替换 容器里的 /root/dist目录
我用的命令是 sudo docker cp /home/wanjia/dist 70:/root/dist 结果是 复制到/root/dist/dist了
就像这样
第二次我改了命令 sudo docker cp /home/wanjia/dist 70:/root
我本以为这样就可以覆盖了 结果就类似于追加覆盖 我只能覆盖掉文件名一样的 如果src 里没有的 那么 dest 里的也不会被覆盖
最后还是把容器里的dist删了
docker exec 70 rm -rf /root/dist
sudo docker cp /home/wanjia/dist 70:/root/dist`