1.容器数据卷
容器之间有一个数据共享的技术!Docker容器中产生的数据,同步到本地!这就是卷技术!目录的挂载:将我们的容器内的目录挂载到Linux上面!
容器的持久化和同步操作!容器间也是可以数据共享的!
-v 挂载
docker run -v -it 主机目录:容器目录
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
-e MYSQL_ROOT_PASSWORD= 设置mysql密码
比较并判断,得出结论同步!
2.具名和匿名挂载
匿名挂载
docker run -d -P --name nginx01 -v /etc/nginx nginx
具名挂载
docker run -d -P --name nginx02 -v named:/etc/nginx nginx
注意一些后面会标ro和rw,默认rw
ro: 只读 看到这个说明只能宿主机操作,容器内部无法操作
rw:读写
3.DockerFile
DockerFile:就是用来构建docker镜像的构建文件
测试完挂载的脚本方法
1.在/home 下创建一个目录,并VIM一个文件
2.创建镜像
docker build -f /home/cishi/DockerFile0 -t centos .
4.数据卷容器
实现多个mysql数据同步 --volumes -from 继承
例如: docker run -it --name docker01 centos
docker run -it --name docker2 --volumes -from docker01 centos
实例比较文件的不同,进行创建,删除操作
结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止,但是一旦你持久化到了本地这时候,本地数据是不会被删除的。、
DockerFile基础知识
1.每个保留关键字(指令)都必须是大写字母。
2.执行从上到下顺序执行
3.# 表示注解
4.每个指令都会创建提交一个新的镜像层
4.练习(1)
1.创建一个centos
2.通过这个文件构建镜像
CMD与ENTRYPOINT的区别
CMD是 替换只保留最后一个 例如: CMD ["ls","-a"] 运行这个加-l 不会变成 ls -al 会变成 -l ,只能用ls -al替换ls -a
而ENTRYPOINT是添加会变成 ls -al
5.练习(2)
1.准备镜像文件,tomcat压缩包,jdk压缩包
2.编写dockerfile文件,我所使用的是官方名所以不用定位
3.构建镜像
4.运行镜像
docker run -d -p 9090:8080 --name shuiditomcat -v /home/shuidi/tomcat/test:/usr/local/apache-tomcat-9.0.45/webapps/test -v /home/shuidi/tomcat/logs/:/usr/local/apache-tomcat-9.0.45/logs mytomcat
5.测试访问
6.发布项目(由于放了卷挂载,我们可以直接在本地编写项目)
测试加上/test 注意看下tomcat包中是否有测试这项!