资讯专栏INFORMATION COLUMN

Docker入门(二) - Dockerfile

tianyu / 1948人阅读

摘要:从复制新文件或目录,并将它们添加到容器的文件系统,路径。允许您配置将作为可执行文件运行的容器。为以守护进程方式运行然后就可以正常访问了

Dockerfile 执行Dockerfile

FROM : 指定镜像

MAINTAINER 维护者

RUN 运行命令

CMD 为容器提供默认值,默认提供给ENTRYPOINT,docker命令添加参数可覆盖原有的

RUN 执行任何指令并提交结果,用于Dockerfile的下一步工作

EXPOSE 暴露端口号

ENV 环境变量

ADD 复制新文件,目录或远程文件URL,并将它们添加到路径的映像文件系统。

COPY 复制新文件或目录,并将它们添加到容器的文件系统,路径

ENTRYPOINT 允许您配置将作为可执行文件运行的容器。docker命令添加参数可覆盖不原有的,如想覆盖需要添加--entrypoint

VOLUME 创建具有指定名称的安装点,并将其标记为从本机主机或其他容器保留外部安装的卷。

USER 指定运行容器的用户名

WORKDIR 为Dockerfile中的任何RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录

vim Dockerfile

FROM centos:latest

MAINTAINER ellis xxx@qq.com

# OS环境配置
RUN yum clean all
RUN yum install -y wget

# 安装JDK
RUN mkdir /var/tmp/jdk
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz

#设置环境变量
ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露端口
EXPOSE 7070

#上传工程包
RUN mkdir -p /test/demo

COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo

ENTRYPOINT ["sh", "-c", "cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar"]

创建test-dockerfile的仓库

➜  docker build -t test_demo .
Sending build context to Docker daemon  51.35MB
Step 1/14 : FROM centos:latest
 ---> a8493f5f50ff
Step 2/14 : MAINTAINER ellis 282390074@qq.com
 ---> Using cache
 ---> c634b5fb0309
Step 3/14 : RUN yum clean all
 ---> Using cache
 ---> 0dd52fc7970b
Step 4/14 : RUN yum install -y wget
 ---> Using cache
 ---> 1f2ff9aa7889
Step 5/14 : RUN mkdir /var/tmp/jdk
 ---> Using cache
 ---> 48a810aafba3
Step 6/14 : RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> 88372ad590d7
Step 7/14 : RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> b415f3947273
Step 8/14 : ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
 ---> Using cache
 ---> 25cf99b2d7e2
Step 9/14 : ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
 ---> Using cache
 ---> cd33c693ec97
Step 10/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
 ---> Using cache
 ---> 8503dab918cd
Step 11/14 : EXPOSE 7070
 ---> Using cache
 ---> e8d866b900d7
Step 12/14 : RUN mkdir -p /test/demo
 ---> Using cache
 ---> a4be88f4d72d
Step 13/14 : COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo
 ---> Using cache
 ---> dc61e44cbd4b
Step 14/14 : ENTRYPOINT sh -c cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> b756a23f0a24
Successfully built b756a23f0a24
Successfully tagged test_demo:latest

执行的时候还是需要-p指定端口映射关系,才能正常访问。-d为以守护进程方式运行

➜  docker run -d -p 7070:7070  test_demo:latest
cf5bd9b29030bbaaf1cc20344dd7489b2bb2aca31ddabd2e0d3414ec6d6589ff

然后就可以正常访问了

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26867.html

相关文章

  • Docker 入门):从实例来看 Dockerfile 和 Compose

    摘要:安装完成后,可以用以下命令查看下版本信息。另外,如果要删除刚运行的两个容器,可以总结本文从数据持久化开始说起,浅谈了和并附送如何用这两种方式分别搭建环境,并在对比中展示了它们各自的特点。 上一文中提到,每次对容器做了改动,如果不把它 commit 成新的镜像,在删除容器后,数据也会丢失,有没有什么更好的办法来保存数据呢?使用数据卷就可以解决这个问题。 另外,相对于用 commit 容器...

    xingqiba 评论0 收藏0
  • Docker入门学习

    摘要:一核心组件客户端和服务端镜像容器二关键概念以镜像为基础,在镜像的基础上创建运行容器,可以简单的理解为容器是镜像运行时的表现。 一、docker核心组件 docker客户端和服务端 docker镜像 registry docker容器 二、关键概念 docker以镜像为基础,在镜像的基础上创建、运行容器,可以简单的理解为容器是镜像运行时的表现。 三、docker基本命令 容器相关 1、d...

    Carl 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 30 分钟快速入门 Docker 教程 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系...

    LucasTwilight 评论0 收藏0
  • Docker极简入门:使用Docker运行Java程序

    摘要:完成之后运行命令你的输出可能会像这样和都为,这是因为刚刚在编写时没有指定它们。多阶段构建镜像多阶段构建镜像其实运行程序只需要就行,我们没有必要使用作为基础镜像。但把程序打包成包,然后再交给的方式太麻烦了。运行简单的Java程序先在当前目录创建App.java文件public class App{ public static void main(String[] args){ ...

    番茄西红柿 评论0 收藏2637
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    Binguner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<