Dockerfile
什么是 Dockerfile?
Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成docker 镜像.
通俗的讲dockerfile就是为了满足我们日常生产环境中各式各样的需求而编写的一个文本文件。
Dockerfile的构建步骤:
1.编写一个dockerfile 文件
2.docker build 构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像
使用 Dockerfile 定制镜像
这里仅讲解如何运行 Dockerfile 文件来定制一个镜像,具体 Dockerfile 文件内指令详解,将在下一节中介绍,这里你得知道构建的流程。
Dockerfile命令解析
FORM
基础镜像,当前新镜像是基于哪个镜像的,例如我要建立一个centos的镜像,我要拉取父镜像 FROM centos
MAINTAINER
镜像的作者,一般是姓名+邮箱地址
RUN
容器构建时运行的命令
EXPOSE
暴露新建的镜像对外服务的端口号
WORKDIR
创建容器后的工作目录,如果没有指定的话,默认为容器的根目录
ENV
设置镜像的环境变量,后续可以在其他指令中引用,例如定义ENV url = ‘一串很长的链接地址 ’,在后续其他命令中可以直接通过$url 引用该变量值
ADD
将宿主机的文件拷贝到镜像目录下并且解压文件(如果文件是为压缩类型的一般采用add命令)
COPY
将宿主机的文件拷贝到镜像目录下
VOLUME
容器数据卷,用于保存数据,持久化数据和共享数据
CMD
指定一个容器启动时需要运行的命令,dockerFile可以有多个CMD命令,但是只有最后一个才会生效
ENTRYPOINT
指定一个容器启动时需要启动的命令,当在docker run 后面加CMD 和 ENTRYPOINT命令时,前者会被覆盖,后者则是追加
ONBUILD
类似于触发器,当这个被构建的镜像被另外的子镜像继承的时候,就会触发这个命令
Dockerfile部署实战
制作tomcat镜像
下载apache-tomcat-8.5.16.tar.gz,jdk-8u221-linux-x64.tar.gz两个安装tomcat必要的压缩包,将其放置在有dockerfile文件的tomcat目录下(根据自己定制)。
FROM centos
MAINTAINER boonya <boonya@sina.com>
RUN yum -y install vim
RUN yum -y install net-tools
# now add java and tomcat support in the container
ADD jdk-8u221-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
# configuration of java and tomcat ENV
ENV JAVA_HOME /usr/local/jdk1.8.0_221
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.16
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.16
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# container listener port
EXPOSE 8080
# startup web application services by self
CMD /usr/local/apache-tomcat-8.5.16/bin/catalina.sh run
创建镜像
docker build -t mytomcat .
Successfully built d02031863791
Successfully tagged mytomcat:latest
启动容器
docker run -d -p 9090:8080 --name mytomcat -v /home/tomcat/:/usr/local/apache-tomcat-8.5.16/webapps diy2tomcat
测试
curl localhost:9090
打开浏览器访问
发布婚纱项目
由于做了卷挂载,我们直接在本地编写项目就可以发布了,将自己的网页放入/home/tomcat/hs测试
发布镜像到DockerHub和阿里云服务
发布镜像到DockerHub
首先在docker官方网站注册自己的账号
登陆账号
[root@localhost ~]# docker login -u 账号
输入密码
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/con
fig.json.Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential
s-store
Login Succeeded
将自己的镜像打包
docker tag d0549ebe86ba yuanyang134218/tomcat02:1.0
docker push yuanyang134218/tomcat02
下图表示成功
发布镜像到阿里云服务
1.登录阿里云
2.找到容器镜像服务
3.创建命名空间
4.创建容器镜像仓库
5.创建完后点到自己的仓库,提交下载镜像阿里云里面都有详细的教程
付出不在于多少,只要值得就好。加油!陌生人。所有的努力都是为了更好的相遇。