跟着尚硅谷系统学习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 】查看到默认的宿主机的目录。