-
Dockerfile构成
:注释
Dockerfile由4部分组成:
1) 基础镜像信息:From :
2)维护者信息:LABEL maintainer="1091173065@qq.com"
3)镜像操作指令:RUN cp -r /var/lib/mysql /var/lib/mysql-no-volume
4)容器启动指令:CMD ["--datadir", "/var/lib/mysql-no-volume"]
注意:基础镜像信息可以写多个FROM指令来构建复杂的镜像
-
Dockerfile指令
-
FROM:指定制作的镜像继承自那个镜像
格式:
FROM <image> FROM <image>:<tag> FROM <image>:<digest>
-
LABEL maintainer:用来指定维护者信息
格式:LABEL maintainer="1091173065@qq.com"
-
RUN:执行shell命令
格式:
1. RUN <command> #后边直接跟shell命令 2. RUN ["executable", "param1", "param2"]#类似于函数调用。
-
EXPOSE:暴露容器中的端口号,也可通过“docker run -p”进行映射。
格式:EXPOSE
[ ......] -
CMD:只存在一个,
1. CMD ["executable","param1","param2"] 2. CMD ["param1","param2"] 3. CMD command param1 param2
-
ENTRYPOINT:Dockerfile只能存在一个该指令,当指定多个时,最后一个有效。
1. ENTRYPOINT ["executable", "param1", "param2"] 2. ENTRYPOINT command param1 param2
-
VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库或需要永久保存的数据。
docke run -v $HostPath:$ContainerPath #常用指令 VOLUME ["/data"]
-
ENV:指定环境变量,会被后续RUN指令使用,并在容器运行时保持。
1. ENV <key> <value> #1个环境 2. ENV <key>=<value> ...#多个环境
-
ADD:复制命令,把文件复制到镜像中。
1. ADD <src>... <dest> 2. ADD ["<src>",... "<dest>"]
-
COPY:复制本地的src(为Dockerfile所在目录的相对路径)到容器中的dest。当使用本地目录为源目录是推荐使用COPY。
1. COPY <src>... <dest> 2. COPY ["<src>",... "<dest>"]
-
-
java-SpringBoot配置Dockerfile,打包镜像全过程。
1、Spring项目打包:IDEA选择右侧的【Maven】-【projectName】-【lifecycle】-【package】,打包好的jar将存储在target下xxxxx.jar
2、编写Dockerfile# 该镜像需要依赖的基础镜像 FROM openjdk:8 # 指定维护者名称 MAINTAINER hcx 1091173065@qq.com # 将targer目录下的jar包复制到docker容器/home/springboot目录下面目录下面 ADD ./target/core242-0.0.1-SNAPSHOT.jar /home/springboot/core242-0.0.1-SNAPSHOT.jar # 声明服务运行在8080端口 EXPOSE 8080 # 执行命令 CMD ["java","-jar","/home/springboot/core242-0.0.1-SNAPSHOT.jar"]
3、将项目上传至服务器,进行docker build
docker build -t containerName(自定义):tag(自定义) . #注意最后的 . 一定要有 #完成构建后可以使用命令dokcer images查看build完的镜像
4、启动构建完成的镜像
docker run -d -p 8080:8080 --name customName containerName:tag #启动后可以使用docker ps -a查看容器状态,是否能够正常使用,如果未正常启动就需要自行检查配置的过程中是否出现失误,例如Dockerfile中的CMD或者ADD的文件路径是否正确等。