docker文件的复制cp、挂载-v、共享VOLUME

复制:

  • 从宿主机复制到容器:docker cp 宿主机本地路径 容器名字/ID:容器路径

docker cp /root/123.txt mycentos:/home/

  • 从容器复制到宿主机:docker cp 容器名字/ID:容器路径 宿主机本地路径

docker cp mycentos:/home/456.txt /root

挂载:

  • 宿主机文件夹挂载到容器里:docker run -itd -v 宿主机路径:容器路径 镜像ID

docker run -itd -v /root/xdclass/:/home centos:7

作用:

  1. 在容器损坏或者删除的情况下,完全可以重新生成一个容器挂载宿主机的mysql数据或日志文件路径从而达到数据不丢失的作用

  2. 不需要进入容器方便操作数据文件,不需要硬复制文件,挂载的方式就可以文件映射

应用:挂载mysql数据库,日志等。

共享:

  • dockerfile

FROM centos:7
VOLUME ["/usr/local"]

注意:在dockerfile里设置volume是无法修改宿主机的挂载路径的

  • 查看容器挂载点:docker inspect 容器ID

  • volume无法更改宿主机路径,要想更改只能重新-v重新设置挂载点

使用volume容器共享创建nginx集群

  • 使用--volumes-from 实现容器与容器之间volume共享

1.创建nginx1

docker run -itd -p 8080:80 -v /usr/local/nginx/html:/usr/local/nginx/html --name nginx1 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

2.创建nginx2

docker run -itd -p 8081:80 --volumes-from nginx1 --name nginx2 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

3.创建nginx3

docker run -itd -p 8082:80 --volumes-from nginx1 --name nginx3 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;

4.对/usr/local/nginx/html/index.html进行修改

5.打开浏览器进行访问测试

6.使用docker inspect 容器ID 可以查看详细的挂载信息

-v与volume区别:

相同点:都是挂载路径达到映射操作的目的

不同点:volume无法修改宿主机路径,是共享的意思,不需要重复的在集群容器-v挂载路径,只需基于需要共享的容器挂载即可。