dockerfile 是用来构建docker镜像的文件!命令行参数脚本
构建步骤
- 编写一个dockerfile文件
- dockerbuild 构建成为一个镜像
- docker run 运行镜像文件
- docker push发布镜像(DockerHub,阿里云镜像仓库)
基础知识:
- 每个保留关键字都必须是大写字母
- 执行从上倒下的顺序
- #表示注释
- 每个指令都会创建提交一个新的镜像,并提交
dockerfile是面向开发的,我们以后要发布项目,做镜像,就要编写dockerfile文件,这个文件十分简单
Docker镜像逐渐成为了企业交付的标准
Dockerfile:构建文件,定义了一切步骤,源代码
DockerImages:通过Dockerfile构建生成的镜像,最终发布和运行的产品
Docker容器:容器就是镜像运行起来的提供服务器
Dockerfile命令FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像作者,姓名+邮箱
RUN #镜像构建运行的命令
ADD #步骤:添加内容例:tomact镜像,这个就是tomact压缩包
WORKDIR #镜像的工作目录 例:/bin/bash
VOLUME #挂载目录
EXPOSE #指定暴露端口
CMD #指定容器启动时要运行的命令,只有最后一个会生效,且会被替代
ENTERPOINT #指定这个容器启动是运行的命令,可以追加命令
ONBUILD #当构建一个被继承Dockerfile这个时候就会运行ONBUILD命令,触发指令
COPY #类似ADD,将我们的文件拷贝到镜像中
EVN #构建时候设置环境变量
实战测试
创建一个自己的centos
CMD/ENTRYPOINT区别1.构建自己的dockerfile文件
vim mydockerfile-contos #创建dcoekrfile文件
FROM centoss
MAINTAINER Florenza<773815862@qq.com>ENV MYPATH /user/local
WORKDIR $MYPATH
RUN yum -y install vim
RUM yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash2.通过这个文件构建镜像
#命令 docker build -f dockerfile 文件路径 -t 镜像名:[tag]
[root@iZ2z2222e3mgup8rrtkhrsdxxsZ dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 5e60270dde9d 2 minutes ago 337MB
test/centos latest 0edd7173368c 37 hours ago 231MB
tomcatweb latest 1f7cffccf751 2 days ago 684MB
tomcat 9.0 43e421a14aec 12 days ago 680MB
tomcat latest b0e0b0a92cf9 12 days ago 680MB
mysql 5.7 938b57d64674 2 weeks ago 448MB
mysql latest ecac195d15af 2 weeks ago 516MB
nginx latest 87a94228f133 3 weeks ago 133MB
hello-world latest feb5d9fea6a5 5 weeks ago 13.3kB
centos latest 5d0da3dc9764 6 weeks ago 231MB
3.测试运行
docker run mycentos:0.1
启动成功~~
4.查看镜像是如何生成
docker history 镜像id
例:
docker history ecac195d15af
CMD #指定容器启动时要运行的命令,只有最后一个会生效,且会被替代
ENTERPOINT #指定这个容器启动是运行的命令,可以追加命令
测试CMD
#编写dockerfile文件 vim dockerfile-cmd-test #创建dockerfile文件 FROM centos CMD ["ls","-a"] docker run build -f dockerfile-cmd-test -t cmdtest . docker images #查找镜像 [root@iZ2222222ze3mgup8rrtkhrsdxxsZ dockerfile]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE cmdtest latest 609dfee9868d 3 minutes ago 231MB mycentos 0.1 5e60270dde9d 3 hours ago 337MB test/centos latest 0edd7173368c 40 hours ago 231MB tomcatweb latest 1f7cffccf751 2 days ago 684MB tomcat 9.0 43e421a14aec 12 days ago 680MB tomcat latest b0e0b0a92cf9 12 days ago 680MB mysql 5.7 938b57d64674 2 weeks ago 448MB mysql latest ecac195d15af 2 weeks ago 516MB nginx latest 87a94228f133 3 weeks ago 133MB hello-world latest feb5d9fea6a5 5 weeks ago 13.3kB centos latest 5d0da3dc9764 6 weeks ago 231MB docker run cmdtest #执行镜像 . .. .dockerenv bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var #可以执行,但是如果执行 docker run cmdtest -l docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown. ERRO[0000] error waiting for container: context canceled #报错无法执行 无法追加命令测试 ENTRYPOINT
#创建文件 vim dockerfile-cmd-entory #编写指令 FROM centos ENTRYPOINT ["ls","-a"] #编译镜像 docker build -f dockerfile-cmd-entory -t entoryponit-test . #运行镜像 docker run entorypoint-test #结果 . .. .dockerenv bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var #追加命令 docker run entoryponit-test -l #结果 total 56 drwxr-xr-x 1 root root 4096 Nov 3 06:46 . drwxr-xr-x 1 root root 4096 Nov 3 06:46 .. -rwxr-xr-x 1 root root 0 Nov 3 06:46 .dockerenv lrwxrwxrwx 1 root root 7 Nov 3 2020 bin -> usr/bin drwxr-xr-x 5 root root 340 Nov 3 06:46 dev drwxr-xr-x 1 root root 4096 Nov 3 06:46 etc drwxr-xr-x 2 root root 4096 Nov 3 2020 home lrwxrwxrwx 1 root root 7 Nov 3 2020 lib -> usr/lib lrwxrwxrwx 1 root root 9 Nov 3 2020 lib64 -> usr/lib64 drwx------ 2 root root 4096 Sep 15 14:17 lost+found drwxr-xr-x 2 root root 4096 Nov 3 2020 media drwxr-xr-x 2 root root 4096 Nov 3 2020 mnt drwxr-xr-x 2 root root 4096 Nov 3 2020 opt dr-xr-xr-x 110 root root 0 Nov 3 06:46 proc dr-xr-x--- 2 root root 4096 Sep 15 14:17 root drwxr-xr-x 11 root root 4096 Sep 15 14:17 run lrwxrwxrwx 1 root root 8 Nov 3 2020 sbin -> usr/sbin drwxr-xr-x 2 root root 4096 Nov 3 2020 srv dr-xr-xr-x 13 root root 0 Nov 3 06:46 sys drwxrwxrwt 7 root root 4096 Sep 15 14:17 tmp drwxr-xr-x 12 root root 4096 Sep 15 14:17 usr drwxr-xr-x 20 root root 4096 Sep 15 14:17 var
Dockerfile中很多命令都十分相似我们需要了解它们的区别最好的学习方式就是测试!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)