Dockerfile的使用

1.Dockerfile是什么?

Docker镜像的描述文件,是由一系列命令和参数构成的脚本。

        定义:镜像的描述文件

2.Dockerfile的作用?

        作用:通过Dockerfile文件构建一个属于自己的镜像

3.为什么使用Dockerfile构建镜像
        官方镜像确实足够好了,足够适用于大多数应用程序,但是如果我们想自定义属于我们自己的镜像,这个时候必须自定义镜像

4.如何通过Dockerfile构建自己的镜像?

a. 在指定位置创建一个dockerfile文件

    编写dockerfile相关语法

b.通过Dockerfile构建镜像

docker build -t aa:1.0 .(指定Dockerfile文件所在的位置)

-t:指定的镜像是谁

aa:1.0 名字:版本号

5.Dockerfile构建镜像流程

6、Dockerfile相关指令。

保留字作用
from从哪里来
MAINTAINER(早期有,后来废弃)镜像的作者和邮箱
RUN构建镜像时运行哪些指令
EXPOSE自定义的镜像允许暴露哪些端口
WORKDIR镜像的工作目录
ENV构建镜像时设置的环境变量 
ADD往镜像里面添加一些自定义的文件
COPY拷贝文件或者目录到镜像
VOLUME暴露镜像有哪些数据卷
CMD指定一个容器启动时要运行的命令
ENTRYPOINT指定一个容器启动时要运行的命令

7.步骤,基于哪个镜像进行创建

 查看镜像

docker images

1.新建一个Dockerfile文件

注意:

每条指令都必须大写,且后面都要跟至少一个参数
指令按照从上往下,顺序执行
#表示注释
每条指令都会创建一个新的镜像层,并对镜像进行提交

2.编辑内容(基于mysql,docker images查询出来的)

 3. docker build -t zspsql:01 .

 4.查询一下,已经创建出来了

 

另外的:

run就是在上一步的基础之上再做一些命令,第二种方式不经过缓存(临时镜像)

EXPOSE 声明服务端口,除了第一行以外写 

WORKDIR 指定落脚点,也就是你进入某个容器的某个服务之后首先到的是哪个位置,可以指定这个位置

 重新build一下

 查询容器:docker images

运行容器:

mysql独有的启动 docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name zzzsql --restart=always -v /root/data:/var/lib/mysql -d zspsql:02

一般启动 docker run -it (Repository):(TAG)
 

查询docker中运行的服务:docker ps

进入服务:docker exec -it (CONTAINER ID) bash

可以看到落脚点为apps

 

ADD 拷贝文件或者目录到当前容器,先测试一个a.txt

 

 

add 也可以写url地址 直接下载地址所对应的文件

ADD http://...tar .

 可以跟RUN连用,下载完直接解压

 

 下载完直接解压并删除压缩包,并改名为zsp-tomcat-9

 ENV 设置变量

VOLUME 数据卷 声明用的

 告诉使用者容器中可以挂载这个目录到宿主机中 

CMD&ENTRYPOINT

1.CMD&ENTRYPOINT作用:都是用来指定容器启动时默认执行的指令

注意:CMD指令可以存在多个,但是只有最后一个指令生效

2.使用语法:

直接命令方式: java -jar zsp.jar

json数据方式:["java","-jar","zsp.jar"]   推荐 支持传参

运行这个容器,默认执行 查看apps文件夹下的文件 ,把CMD换成ENTRYPOINT也可以实现同样的效果

3.CMD&ENTRYPOINT区别

        a.CMD里面的命令如果在运行容器的时候进行覆盖:

                docker run 镜像:版本号 覆盖自定义的命令 ls /

                docker run mysql:03 ls /

        b.ENTRYPOINT里面的命令如果在运行容器的时候进行覆盖:

               docker run --entrypoint=覆盖指令 镜像:版本号 传递参数

               docker run --entrypoint=ls mysql:03 /

4.如何使用

ENTRYPOINT用来书写容器固定的指令

CMD用来给ENTRYPOINT传递参数

使用配合的方式时,必须使用json数组的语法

本章结束。

下一章,通过Dockerfile构建项目 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值