DockerFileDockerFile介绍docfile是用来构建docker镜像的文件(命令参数脚本)
构建步骤 编写一个dockerfile文件 docker build 构建成为一个镜像 docker run 运行镜像 docker push 发布镜像 DockerHub 阿里云镜像仓库
会发现很多官方的镜像都是基础包,很多功能都没有,我们通常自己搭建自己所需要的镜像 DockerFile的构建过程基础知识: 每个保留字(指令)都必须是大写字母 执行的顺序是从上到下 #表示注释 每一个指令都会创建提交一个新的镜像层,并提交
DockerFile是面向开发的,我们以后要发布项目,做镜像就需要编写dockerfile文件,十分简单~ Docker镜像逐渐成为了企业交付的标准,必须要掌握! DockerFile:构建镜像的文件、定义了一切步骤、源代码 DockerImages:通过DockerFile构建生成的一个镜像,最终要发布和运行的产品 DockerContainer:容器就是镜像运行起来提供服务的
DockerFile的指令FROM #基础镜像,一切从这里开始构建MAINTAINER #镜像作者,姓名+邮箱RUN #镜像构建的时候需要运行的命令ADD #添加镜像所要的文件WORKDIR #镜像的工作目录VOLUME #挂载的目录EXPOSE #暴露端口配置(和-p是一个道理)CMD #指定这个容器启动的时候要运行的命令(只有最后一个会生效,可被替代)ENTRYPOINT #指定这个容器启动的时候要运行的命令(可以追加命令)ONBUILD #当构建一个被继承Dockerfile 这时候就会运行ONBUILD的指令(触发指令)COPY #类似ADD,将我们的文件拷贝到镜像中ENV #构建的时候设置环境变量
实战测试:构建自己的centOS DockerHub中99%的镜像都是从FROM scratch这个基础镜像开始的,然后配置添加所需要的文件和配置来进行构建的 创建一个自己的centos
#编写dockerfile文件[root@server home]# mkdir dockerfile[root@server home]# cd dockerfile/[root@server dockerfile]# vim mydockerfile-centos[root@server dockerfile]# cat mydockerfile-centos FROM centos
MAINTAINER liyan<81442990@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATHCMD echo '-------end-------'CMD /bin/bash#通过这文件,构建镜像#命令:docker build -f dockerfile文件路径 -t 镜像名:版本号 .[root@server dockerfile]# docker build -f mydockerfile-centos -t mycentos:1.0 .Successfully built 247573ccd8d4
Successfully tagged mycentos:1.0#测试运行[root@server dockerfile]# docker run -it mycentos:1.0[root@741b91824561 local]# pwd/usr/local #进来的目录为dockerfile内设置的工作目录#并且添加的vim以及net-tools命令也可以使用了[root@741b91824561 local]# ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #查看当前镜像的构建历史[root@server dockerfile]# docker history 247573ccd8d4IMAGE CREATED CREATED BY SIZE COMMENT
247573ccd8d4 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' '/bin… 0B f7a28350697b 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' 'echo… 0B 3ff8f723a31e 11 minutes ago /bin/sh -c #(nop) CMD ['/bin/sh' '-c' 'echo… 0B a9a89c508953 11 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B 6c976f6dc66e 11 minutes ago /bin/sh -c yum -y install net-tools 24MB
58cbcd04b65d 11 minutes ago /bin/sh -c yum -y install vim 59.8MB
5311c677a6c5 11 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B 28e696f53720 11 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B c5f8aebdbe3b 11 minutes ago /bin/sh -c #(nop) MAINTAINER liyan<81442990… 0B 470671670cac 4 months ago /bin/sh -c #(nop) CMD ['/bin/bash'] 0B <missing> 4 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:aa54047c80ba30064… 237MB
实战测试2: 制作Tomcat镜像 准备镜像文件: Tomcat压缩包 jdk压缩包 编写dockerfile文件 官方命名Dockerfile ,build时会自动寻找这个文件,就不需要-f制定了! FROM centos
MAINTAINER liyan<81442990@qq.com>COPY readme.txt /usr/local/readme.txt
ADD jdk-8u202-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.35.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_202
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.35/logs/catalina.out 构建镜像 [root@server tomcat]# docker build -t tomcat_ly .
启动镜像 docker run -d -p 9090:8080 --name liyanTomcat -v /home/tomcat/mouny_test:/usr/local/apache-tomcat-9.0.35/webapps/test -v /home/tomcat/logs:/usr/local/apache-tomcat-9.0.35/logs tomcat_ly 访问测试 发布项目(由于做了卷挂载,我们可以直接在本地写项目就可以发布了)
发布自己的镜像DockerHub发布: [root@server tomcat]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username=============================================[root@server tomcat]# docker login -u lidongyu0816Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs./engine/reference/commandline/login/#credentials-storeLogin Succeeded #登陆成功
登陆完毕就可以提交镜像了 #push自己的镜像到DockerHub[root@server tomcat]# docker push tomcat_liyan:1.0The push refers to repository [docker.io/library/tomcat_liyan]5c912d14cdcd: Preparing
6aa1323ed74d: Preparing
d2b4f469bfa6: Preparing
d924484dbba3: Preparing
0683de282177: Preparing 阿里云镜像发布: 小结:
|