Docker容器--Dockerfile

Dockerfile

    • 什么是 Dockerfile?
    • Dockerfile的构建步骤:
    • Dockerfile命令解析
    • Dockerfile部署实战
      • 制作tomcat镜像
    • 发布镜像到DockerHub和阿里云服务

什么是 Dockerfile?

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成docker 镜像.
通俗的讲dockerfile就是为了满足我们日常生产环境中各式各样的需求而编写的一个文本文件。
Docker容器--Dockerfile_第1张图片

Dockerfile的构建步骤:

1.编写一个dockerfile 文件
2.docker build 构建成为一个镜像
3.docker run 运行镜像
4.docker push 发布镜像
Docker容器--Dockerfile_第2张图片

使用 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

类似于触发器,当这个被构建的镜像被另外的子镜像继承的时候,就会触发这个命令
Docker容器--Dockerfile_第3张图片

Dockerfile部署实战

制作tomcat镜像

下载apache-tomcat-8.5.16.tar.gz,jdk-8u221-linux-x64.tar.gz两个安装tomcat必要的压缩包,将其放置在有dockerfile文件的tomcat目录下(根据自己定制)。

FROM centos
MAINTAINER boonya 
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

打开浏览器访问
Docker容器--Dockerfile_第4张图片
发布婚纱项目
由于做了卷挂载,我们直接在本地编写项目就可以发布了,将自己的网页放入/home/tomcat/hs测试
Docker容器--Dockerfile_第5张图片

发布镜像到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

下图表示成功
Docker容器--Dockerfile_第6张图片

发布镜像到阿里云服务
1.登录阿里云
2.找到容器镜像服务
Docker容器--Dockerfile_第7张图片

3.创建命名空间
Docker容器--Dockerfile_第8张图片
Docker容器--Dockerfile_第9张图片

4.创建容器镜像仓库
在这里插入图片描述
5.创建完后点到自己的仓库,提交下载镜像阿里云里面都有详细的教程
Docker容器--Dockerfile_第10张图片
付出不在于多少,只要值得就好。加油!陌生人。所有的努力都是为了更好的相遇。

你可能感兴趣的