Docker镜像定制

Dockerfile是docker的脚本指令,分层写,每一条指令构建一层

 

以tomcat为例子:

在/usr/local/tomcat   建立tomcat文件夹

vi  Dockerfile   建立文本,在里面写入docker命令即可

 

FROM   tomcat:9-jre8   指定基础镜像

RUN   ehco  "hello  docker"  >   /usr/local/tomcat/webapps/ROOT/index.html

 

写完之后 构建镜像

docker  build  -t   标签名  .     镜像上下文路径

docker  build  -t   myshop   .

 

然后docker  images查询镜像是否被创建

docker  run -p 8080:8080  myshop 启动容器,看是否成功

 

解释一下命令的作用:

from所有镜像必须要有,而且在最开始

run  执行程序命令

workdir   指定路径为工作目录,这个很重要。因为不指定的话run每次都是从默认的目录开始执行,如果两个run有目录变更,就会导致路径衔接不上去

镜像默认工作目录在哪里呢?

容器启动的时候切换到的目录就是工作目录

expose  暴露服务端口,好处是启动后程序员能直接看见这个端口,但不是因为有了这个ecpose这个端口就会被打开,只有本身被打开,才会打开

 

copy  index.html    /usr/local/tomcat/webapps/ROOT   将上下文中的index.html文件拷贝到 镜像的目录下

左边是上下文路径    右边是镜像路径

 

add   和copy类似,但是add  url可以拷贝一个链接     add   *.gz   复制和解压缩

因此add不明白语义

 

 

上下文:

docker build  -t   .     会讲当前目录整个打包压缩发送给docker服务器。服务器解压获得文件,而这个目录就是上下文目录

如果使用copy   ./abc.txt   ./app/    ./abc.txt指的是上下文路径下的abc.txt文件  复制到/app/下

上下文环境中的abc.txt,也就是说你必须把文件放在你构建Dockerfile的目录下,不然没有办法复制到。

 

另外注意虚悬镜像问题:

docker  pull  和  build 都会触发虚悬镜像问题,新旧镜像同名,新的镜像会取代旧的镜像,旧的镜像名字为none

 

 容器启动:

docker  run -p  8080:8080 tomcat    将宿主机的8080端口映射到容器的8080端口上

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值