一、Dockerfile简介
Dockerfile是我们用来构建Docker镜像的一些命令组合,简单的来说,Dockerfile的作用就是可以让用户个性化定制Docker镜像。
二、Dockerfile常见命令
命令 | 作用 |
FROM image_name:tag | 声明镜像是在哪个镜像基础上生成的 |
MAINTAINER user_name | 声明镜像作者 |
ENV key value | 设置环境变量(可写多条) |
RUN command | 编译镜像时运行的脚本(可写多条) |
CMD | 设置容器的启动命令 |
ENTRYPOINT | 设置容器的入口程序 |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有解压文件,COPY不能解压,ADD会解压 |
WORKDIR path_dir | 设置工作目录 |
ARG | 设置编译镜像时加入的参数 |
EXPOSE | 设置暴露端口号 |
VOLUMN | 设置容器的挂载卷 |
RUN、CMD、ENTRYPOINT的区别?
RUN:用于指定 docker build 过程中要运行的命令,即是创建 Docker 镜像(image)的步骤。
CMD:设置容器的启动命令, Dockerfile 中只能有一条 CMD 命令,如果写了多条则最后一条生效,CMD不支持接收docker run的参数。
ENTRYPOINT:入口程序是容器启动时执行的程序, docker run 中最后的命令将作为参数传递给入口程序 ,ENTRYPOINY类似于 CMD 指令,但可以接收docker run的参数。
三、使用Dockerfile制作微服务镜像
1.先准备了一个简单的测试项目,用的springboot
server.port 设置成12541
启动项目,访问http://localhost:12541/docker/hello,查看项目是否正常启动
2.将项目打包,并上传到服务器,并在同目录下创建Dockerfile文件
3.编写Dockerfile文件
FROM openjdk:8-jdk-alpine
MAINTAINER axiba <axiba@qq.com>
EXPOSE 12541
ADD docker-demo.jar demo.jar
ENTRYPOINT exec java -jar /demo.jar
4.构建docker镜像
#docker build -t 镜像名:版本 .
docker build -t demo .
构建成功过程的打印,看到Successfully说明成功
5.查看构建的镜像
docker images
6.运行容器
docker run -d -p12541:12541 --name=demo demo
7.测试是否成功
http://192.168.253.132:12541/docker/hello
测试结果
好了,Dockerfile的简单使用就到这里了。