初始DockerFile
Dockerfile是用来构建docker镜像的构建文件!命令脚本!通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,就是镜像的一层。
- dockerfile文件的名字可以随机,但是建议用dockerfile
- 文件中的内容指令参数用大写
- dockerfile是一个文本文件,每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像。
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过dockerfile文件构建一个想你的镜像开始工作
- 对于运维人员:在部署时,可以实现应用的无缝移植
例子:
这里的-y尽量不要省,因为安装过程遇到命令输入可能会失败,
from centos:7这个镜像是有的,如果没有会自动下载,但是版本号得对.
这里要记住,除关键字大写,其他全部小写,否则执行时报错.
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
项目构建指令
docker build -f /wj/dockerfile -t wj/filetomcat:1.0
-f 是指定dockerfile存在的根路径位置
-t 指定新镜像的REPOSITORY信息
:1.0是新镜像的TAG信息
这里的最后边有一个点,代表寻址路径
启动新镜像
docker run -t e78d4dbec2b4 /bin/bash
进入新起的容器内,查看新生成的两个文件夹
退出到宿主机,查看当前容器挂载的文件路径地址
docker inspect 7e5001e673e8
我们写的是匿名挂载,两边创建文件测试,发现可同步,搞定!
看一下官网的代码
CMD["/bin/bash"]:这就是为什么创建时可以省略的原因!
not a regular file
linux 下scp传文件时错误 scp: /usr/tools: not a regular file 不能成功传送 解决方案
1:有可能没权限 chmod 777
2: 在使用scp时加上-r 参数
scp -r root@192.168.16.5:/usr/tools/xxxx
例子:scp -r /Users/wangjun/JAVA/WangJunDemo/gxs-sms/target/gxs-sms-1.0.0.jar root@119.23.108.107:/root/tomcat/java-project
容器间的数据同步
一、启动使用dockerfile创建的镜像
docker run -it --name test1 wj/filecentos:1.0
进入启动的容器查看挂载的文件夹是否存在
docker exec -it 容器ID /bin/bash
docker exec -it a27f1a6fe9 /bin/bash
在volume01和volume02分别创建文件,返回到宿主机
docker inspect 容器ID #查看容器信息
docker inspect a27f1a6fe923
在Mounts中查看挂载的文件位置,进入文件查看容器内的文件是否同步。
二、在test1的基础上启动test2
docker run -it --name test2 --volumes-from test1 wj/filecentos:1.0
进入新生成的容器查看文件挂载
在挂载文件夹中创建文件看是否能同步出去,一个是宿主机文件夹,一个是test1挂载的文件夹。
总结:
- 容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
- 但是一旦持久化到了本地,这个时候,本地的数据是不会删除的。
三、 CMD和ENTRYPOINT区别
cmd:指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令。