UnionFs (联合文件系统)
Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是 Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
Commit 镜像
docker run -it -d --name tomcat1 -p 4200:8080 tomcat#运行容器 docker exec -it tomcat1 /bin/bash #进入正在运行的容器 cp -r webapps.dist/* webapps #copy tomcat 容器中的问价 docker commit -a="yu" -m="tomcat1" tomcat1 tomcat1:02 #提交容器 exit #退出容器 docker ps#查看容器 docker run tomcat:02#运行提交的容器
数据卷容器
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性,卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。数据卷可在容器之间共享或重用数据并且卷中的更改可以直接实时生效,数据卷的生命周期一直持续到没有容器使用它为止。
docker run -v 镜像名#-v 主机目录:容器目录
mysql同步数据
docker run -d -p 3310:3306 -v /www/server/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.5
然后测试SQLyog连接远程服务器3310端口测试成功。然后在数据库中创建表test_q数据库
查看容器内部文件如图
具名挂载和匿名挂载
具名挂载就是挂载的同时指定一个有具体含义的名字,方便后续和容器对应以及后续的运维,便于查找挂载目录,匿名挂载就是指定容器内路径,dockers run 每挂载一个目录就会宿主主机自动创建一个随机字符串的目录。目录/var/lib/docker/volumes/随机字符串。
docker run -d -p 8000:80 --name nginxtest -v /etc/nginx nginx #匿名挂载 docker run -d -p 8001:80 --name nginxtest02 -v nginxtest02:/etc/nginx nginx #具名挂载 docker volume ls#查看容器数据卷