三、初识Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件!是一段命令脚本

新建一个dockerfile1文件:vim dockerfile
通过这个脚本来生成镜像:
#文件中的内容,指令都是大写的


FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end-----" 

CMD /bin/bash

然后通过: docker build -f dockerfile -t wch/centos .

-f  代表镜像的地址及dockerfiles01
-t  target生成名称为wch/centos的centos镜像
记得最后有一个    .    ()

构建镜像

在这里插入图片描述这个卷和外部一定有一个同步的目录!
查看卷挂载路径:docker inspect 1c7bbe007566
在这里插入图片描述``

dockerfile是用来构建docker镜像的文件,构建步骤如下:

1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

查看官方是怎么做的?
在这里插入图片描述在这里插入图片描述很多官方镜像都是基础包,很多功能都是没有的,我们通常会搭建自己的镜像。

DockerFile构建过程

基础知识:
1、每个保留关键字(指令)都必须是大写字母
2、执行顺序是从上到下顺序执行
3、# 表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交

在这里插入图片描述

步骤:开发、部署、运维
DockerFile:构建文件,定义了一切的构建步骤、源代码。
DockerImages:通过DockerFile构建生产的镜像,最终发布和运行的产品。
Docker容器:容器就是镜像运行起来的样子,即运行提供的服务器。

DockerFile的指令

FROM			# 基础镜像,一切从这里开始构建
MAINTAINER 		# 镜像是谁写的,姓名+邮箱
RUN				# 镜像构建的时候需要运行的命令
ADD				# 步骤,添加tomcat等镜像
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 对外暴露的端口
CMD				# 指定容器启动时,要运行的命令,该指令只能在文件中存在一次,如果有多个,则只执行最后一条,可被替代
ENTRYPOINT		# 指定容器启动时,要运行的命令,可以追加命令
ONBUILD			# 当构建一个被继承的 DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY			# 类似ADD,将我们文件拷贝到镜像中
ENV				# 构建的时候设置环境变量(如设置mysql密码!!!)

在这里插入图片描述

CMD 和 ENTRYPOINT 的区别

CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	# 指定这个容器启动的时候要运行的命令,可以追加命令

构建一个最简单的 dockerfile-cmd-test:

FROM centos
CMD ["ls","-a"]

构建镜像:

docker build -f dockerfile-cmd-test -t cmdtest .

执行进入镜像:

docker run f55d10e02520(自己的镜像id)

可以看到,进入镜像后,直接执行了cmd命令 ls -a
在这里插入图片描述
试一下追加一个 -l 命令,希望返回ls -al,返回列表的详细数据,但是结果如下

[root@VM-0-16-centos dockerfiles]# docker run f55d10e02520 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.

cmd的情况下,-l 替换了 CMD[“ls”,"-a"] 命令,但是 -l 不是命令,所以报错

试一下构建一个 dockerfile-entrypoint-test:

FROM centos
ENTRYPOINT ["ls","-a"]

构建镜像:

docker build -f dockerfile-entrypoint-test -t entrypointtest .

执行进入镜像:

docker run 3f2f94ab5d75(自己的镜像id)

在这里插入图片描述
再试一下 -l,可以发现,这样是行得通的!!
在这里插入图片描述

实战测试

# 编写Dockerfile的文件
FROM centos
MAINTAINER wch<631730809@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim 
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

# 通过这个文件构建镜像
命令:docker build -f dockerfiles01 -t wch_centos01 .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值