0%

DockerFile

DockerFile

Dockerfile就像是一个镜像的说明书

  • FROM基础镜像,先下载这个基础镜像,然后从这个镜像启动一个容器,并且登陆到容器里面,第一条指令必须是FROM
  • MAINTAINER 指定镜像作者
  • RUN运行一个命令,在容器中运行该命令
  • CMD 执行镜像中的应用程序,文件中只能有一个CMD命令,如果有多个,只执行最后一个
  • COPY/ADD将一些文件添加到容器中,add除了copy功能外还有解压功能
  • 设置启动命令ENTRYPOINT,在容器运行的时候作为主程序执行
  • EXPOSE 暴露端口
  • VOLUME 指向一个目录,用来关联宿主机目录和容器目录

Dockerfile示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 获取基础镜像,仓库名:标签名
FROM centos:latest
# 将文件添加到容器中,ADD命令可以自动解压压缩包,第一个参数是宿主机的来源路径(相对路径),第二个参数是容器的目标路径(绝对路径)
ADD jre-8u311-linux-x64.tar.gz /opt
# 指定工作目录,相当于cd,后续的RUN、CMD都在该工作目录中执行
WORKDIR /opt
# 在Docker容器中运行shell命令,等价于 docker run <image> <command>
RUN pwd
# 设置镜像制作时执行的命令
RUN ln -s /opt/jre1.8.0_311 /opt/java
# 设置环境变量
ENV JAVA_HOME /opt/java
ENV PATH $JAVA_HOME/bin:$PATH
# Docker容器和Docker主机的端口映射关系
EXPOSE 8080
# 设置容器启动时执行的命令
CMD java -version

执行Dockerfile创建镜像

1
2
# -t  setjava为镜像的名称  .表示Dockerfile在当前目录
docker build -t setjava .

执行完之后可以使用docker images来查看是否生成了名为setjava的镜像

欢迎关注我的其它发布渠道