栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

docker Dockerfile

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker Dockerfile

docker Dockerfile
    • Dockerfile常用命令
    • FROM
    • LABEL
    • RUN
    • ADD
    • COPY
    • EXPOSE
    • ENV
    • CMD
    • ENTRYPOINT
    • WORKDIR
    • VOLUME
    • 构建镜像
    • 创建目录
    • 编写 Dockerfile 文件
    • 构建镜像

Dockerfile常用命令 FROM
FROM :
FROM centos:7

指明构建的新镜像基于的镜像,没有选择tag,默认为latest。

LABEL
LABEL = = = ...
LABEL maintainer="oxyay"

为镜像指定标签。可以使用 LABEL 来指定镜像作者。

RUN
RUN 
RUN mkdir -p /usr/local/java

构建镜像时运行的Shell命令

ADD
ADD ... 
ADD jdk-8u162-linux-x64.tar.gz /usr/local/java

拷贝文件或目录到镜像中。src可以是一个本地文件或者是一个本地压缩文件,压缩文件会自动解压。还可以是一个url,如果把src写成一个url,那么ADD就类似于weget命令,然后自动下载和解压。

COPY
COPYY ... 

拷贝文件或目录到镜像中。用法跟ADD一样,但不支持自动下载和解压。

COPY jdk-8u162-linux-x64.tar.gz /usr/local/java
EXPOSE
EXPOSE  [/...]

暴露容器运行时的监听端口给外部,可以指定端口是TCP还是UDP,未指定协议,默认为TCP。

EXPOSE 80 433 8080/tcp
ENV
# 添加单个
ENV   
# 添加多个
ENV   ...

设置容器内环境变量

CMD
CMD ["executable","param1","param2"],比如:CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
CMD ["param1","param2"],比如:CMD ["ehco", "$JAVA_HOME"]
CMD command and param1 param2

启动容器时执行的Shell命令。在Dockerfile中只能有一条CMD指令。如果设置了多条CMD,只有最后一条CMD会生效。

CMD echo $JAVA_HOME

如果创建容器的时候指定了命令,则CMD命令会被体态。

ENTRYPOINT
ENTRYPOINT ["executable","param1","param2"] ,比如:ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
ENTRYPOINT command and param1 param2,比如:ENTRYPOINT ehco $JAVA_HOME
ENTRYPOINT ehco $JAVA_HOME

启动容器时执行的Shell命令,同CMD类似,不会被docker run 命令指定的参数覆盖。只有最后一条ENTRYPOINT指令会生效。

WORKDIR
WORKDIR /path/to/workdir

为RUN、CMD、ENTRYPOINT以及COPY和AND设置工作目录。

WORKDIR /usr/local
VOLUME

指定容器挂载点到宿主机生成的目录或其他容器。

# 容器的 /var/lib/mysql 目录会在运行时自动挂载为匿名卷,匿名卷在宿主机的 /var/lib/docker/volumes 目录下
VOLUME ["/var/lib/mysql"]

一般不会再 Dockerfile 中用到,更常见的还是在 docker run 的时候通过-v指定数据卷。

构建镜像

通过基础镜像 centos:7,在该镜像中安装 jdk 和 tomcat 以后将其制作为一个新的镜像 mycentos:7。

创建目录
mkdir -p /usr/local/dockerfile
编写 Dockerfile 文件
vi Dockerfile

Dockerfile文件内容如下:

# 指明构建的新镜像是来自于 centos:7 基础镜像
FROM centos:7
# 镜像标签
LABEL maintainer="oxyay"
# 设置工作目录
WORKDIR /usr/local
# 创建指定目录
RUN mkdir -p /usr/local/java && mkdir -p /usr/local/tomcat
# 拷贝文件到镜像中并解压
ADD jdk-8u162-linux-x64.tar.gz /usr/local/java
ADD apache-tomcat-9.0.54.tar.gz /usr/local/tomcat
# 暴露容器运行时的 8080 监听端口给外部
EXPOSE 8080
# 设置容器内 JAVA_HOME 环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_162
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH
# 启动容器时启动 tomcat
CMD ["/usr/local/tomcat/apache-tomcat-9.0.54/bin/catalina.sh","run"]
构建镜像
[root@localhost dockerfile]# docker build -f /usr/local/dockerfile/Dockerfile -t mycentos:7 /usr/local/dockerfile/
Sending build context to Docker daemon  201.4MB
Step 1/12 : FROM centos:7
 ---> eeb6ee3f44bd
Step 2/12 : LABEL maintainer="oxyay"
 ---> Running in e7cec4698bff
Removing intermediate container e7cec4698bff
 ---> e1eecf731a0b
Step 3/12 : WORKDIR /usr/local
 ---> Running in 0af6e430f46a
Removing intermediate container 0af6e430f46a
 ---> 41ee046673cb
Step 4/12 : RUN mkdir -p /usr/local/java && mkdir -p /usr/local/tomcat
 ---> Running in f0fb25dd9b1c
Removing intermediate container f0fb25dd9b1c
 ---> 5f1542aa8abf
Step 5/12 : ADD jdk-8u162-linux-x64.tar.gz /usr/local/java
 ---> 77d85fed4092
Step 6/12 : ADD apache-tomcat-9.0.54.tar.gz /usr/local/tomcat
 ---> a778f1fe0d06
Step 7/12 : EXPOSE 8080
 ---> Running in 261e7a4080aa
Removing intermediate container 261e7a4080aa
 ---> 44cf6c8f46c8
Step 8/12 : ENV JAVA_HOME=/usr/local/java/jdk1.8.0_162
 ---> Running in 322c7dde0caf
Removing intermediate container 322c7dde0caf
 ---> 982c59a0d8ba
Step 9/12 : ENV JRE_HOME=${JAVA_HOME}/jre
 ---> Running in eacb7f9a113b
Removing intermediate container eacb7f9a113b
 ---> 4d25d5c79ec5
Step 10/12 : ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 ---> Running in d2e247517ac5
Removing intermediate container d2e247517ac5
 ---> f0d0b28b10d7
Step 11/12 : ENV PATH=${JAVA_HOME}/bin:$PATH
 ---> Running in 7d27d231ce3c
Removing intermediate container 7d27d231ce3c
 ---> aae18378a786
Step 12/12 : CMD ["/usr/local/tomcat/apache-tomcat-9.0.54/bin/catalina.sh","run"]
 ---> Running in f0a7a4e1287e
Removing intermediate container f0a7a4e1287e
 ---> 1e7e950f883d
Successfully built 1e7e950f883d
Successfully tagged mycentos:7
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号