跟着尚硅谷系统学习Docker-【day04】

day04-20200716
 
p18.docker容器数据卷
 
docker容器中的数据,做持久化。
容器关闭以后容器内的数据就没有了。
保存到数据库或者服务器宿主机里面。
 
作用:容器间可以有共享数据,容器间继承。容器持久化。
 
卷就是目录或者文件,存在一个或者多个容器中。
 
【docker cp】就是把容器中的数据拷贝到主机上面
 
如何从主机到容器?数据卷就可以实现
 
p19.docker容器数据卷命令-v
 
法1.命令添加,挂载成功
 
【docker run -it -v  /宿主机的绝对路径:/容器内的目录 容器 id】
可以发现数据开始共享
【docker run -it  -v /tmp/mydata:/tmp/dockerdata $(docker ps -qa)】
 
容器内会自动创建/tmp/dockerdata文件夹,在文件夹中添加文件,会发现宿主机和文件夹都有。
容器停止后,宿主机修改文件,再次启动的时候还是会共享文件。
 
要删两边都删了 要保存两边都保存了。
 
【docker inspect 容器id 】查看详细信息,会出现:
"Binds": [
                "/tmp/mydata:/tmp/dockerdata"
            ],
 
linux时间同步:
设置时区:timedatectl set-timezone Asia/Shanghai
查看是否同步:timedatectl | grep "NTP synchronized"
设置时间同步:systemctl start chronyd
 
【docker run -it -v  /宿主机的绝对路径:/容器内的目录:ro 容器 id】
ro 设置为read only 只读权限,容器内部没有可以操作这个文件夹的权限。
 
"Binds": [
                "/tmp/mydata/:/tmp/dockerdata:ro"
            ],
 
法2.dockerfile
 
p20.docker容器数据卷命令-dockerfile
 
dockerfile是什么?后面描述。
 
hello.java -->hello.class
image --> dockerfile
 
相当于镜像模板的的源码标识,用dockerfile 创建镜像,类似于shell脚本。
 
第一、file文件编写
DockerFile:
  1 #volume test
  2 FROM centos
  3 VOLUME ["/datadocker1","/datadocker2"]
  4 CMD echo "成功!"
  5 CMD /bin/bash
 
相当于命令的
【docker run -it  -v /tmp/mydata1:/tmp/datadocker1-v /tmp/mydata2:/tmp/datadocker2  $(docker ps -qa)】
 
第二步、build
 
【docker build -f /tmp/mydockerfile/DockerFile -t fyr/centos .】
 
生成新的镜像
 
第三步、运行
【docker run -it fyr/centos】
 
宿主机的目录没有指定,可以通过【docker inspect 】查看到默认的宿主机的目录。
原文地址:https://www.cnblogs.com/Merge-1126/p/13330757.html