Docker-Dockerfile1

Posted fanfan-90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-Dockerfile1相关的知识,希望对你有一定的参考价值。

Dockerfile:由一系列脚本和参数构成的脚本,这些命令应用于基础镜像,并最终创建一个新镜像

命令:

FROM image_name:tag     定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name      镜像的创建者
EXPOSE            容器需要暴露的端口,容器启动时通过-p进行映射绑定
VOLUME             挂载点,创建一个从本地主机或其他容器的挂载点
ENV key value           设置环境变量
RUN command          Dockerfile的核心部分,Build时执行(可以写多条)
ADD source_dir/file desc_dir/file   将宿主机的文件复制到容器内,(自动解压)
COPY source_dir/file        和ADD类似,当目标路径不存在时,自动创建,但是如果有压缩文件并不能解压
WORKDIR path_dir        设置工作目录
CMD              容器的启动命令,只允许有一条,当容器启动时指定运行命令时,会覆盖掉Dockerfile中的CMD命令
ENTRYPOINT            容器的启动命令,值允许有一条,可被docker run提供的–entrypoint参数覆盖

CMD、RUN的区别:
RUN是镜像Build的时候执行,用来预装软件和做配置使用;
CMD是镜像启动的时候执行的命令,
每个Dockerfile文件只能有一条CMD命令,如果有多条,只执行最后一条命令

ENTRYPOINT指令:

也是只能有一条.不和CMD一起使用。如果启动容器时不指定容器参数,则CMD和ENTRYPOINT指令无区别,如果有容器参数。CMD指定的命令会被docker run传递的容器参数覆盖,而ENTRYPOINT会将容器参数作为ENTRYPOINT指令的参数执行。

 

Dockerfile案例1:构建jdk1.8镜像

1、创建目录
mkdir /usr/local/dockerjdk8
cd /usr/local/dockerjdk8
2、上传jdk压缩包jdk-8u171-linux-x64.tar.gz
rz
3、创建Dockerfile
vim Dockerfile
FROM centos:7
MAINTAINER fanwenjian
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
4、使用Dockerfile创建镜像
docker build -t=‘jdk1.8’ . -- -t:指定镜像名 后面的点表示在当前文件夹中找Dockerfile文件
5、

FROM centos:7
MAINTAINER fanwenjian
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/

ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

 

构建Core镜像
FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /app
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "FAN.Core2.dll"]

构建镜像:
docker build -t CorePublishImage .

运行容器:
docker run -it -p 5001:5001 CorePublishImage

以上是关于Docker-Dockerfile1的主要内容,如果未能解决你的问题,请参考以下文章

Docker-Dockerfile学习

Docker-Dockerfile格式

docker-dockerfile使用

docker-dockerfile

Docker-Dockerfile1

Docker-dockerfile文件