用文本文件做网站,t想学网站建设,会员管理软件,h5界面设计Docker根据Dockerfile文件构建镜像
在实际生产中#xff0c;常常使用Dockerfile构建企业级生产环境镜像,然后再部署在我们的生产环境中#xff0c;本文将从从零开始介绍Dockerfile如何使用#xff0c;构建镜像。
Dockerhub官网地址#xff1a;https://registry.hub.docke…Docker根据Dockerfile文件构建镜像
在实际生产中常常使用Dockerfile构建企业级生产环境镜像,然后再部署在我们的生产环境中本文将从从零开始介绍Dockerfile如何使用构建镜像。
Dockerhub官网地址https://registry.hub.docker.com
1、Dockerfile语法详解
Dockerfile是一个用于定义Docker镜像的文本文件它包含了一系列的指令和参数用于指示Docker在构建镜像时应该执行哪些操作例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等等。通过Dockerfile开发人员可以将应用程序和其所有依赖项打包在一起创建出一个可移植的Docker镜像使得这应用程序可以在任何Docker环境中都能够快速部署和运行。
1.1、Dockerfile常用指令 命令 用途 FROM 基础镜像文件 RUN 构建镜像阶段执行命令 ADD 添加文件从src目录复制文件到容器的dest其中 src可以是 Dockerfile所在目录的相对路径也可以是一个 URL,还可以是一个压缩包 COPY 拷贝文件和ADD命令类似但不支持URL和压缩包 CMD 容器启动后执行命令 EXPOSE 声明容器在运行时对外提供的服务端口 WORKDIR 指定容器工作路径 ENV 指定环境变量 ENTRYPOINT 容器入口 ENTRYPOINT和 CMD指令的目的一样都是指定 Docker容器启动时执行的命令可多次设置但只有最后一个有效。 USER 该指令用于设置启动镜像时的用户或者 UID,写在该指令后的 RUN、 CMD以及 ENTRYPOINT指令都将使用该用户执行命令。 VOLUME 指定挂载点该指令使容器中的一个目录具有持久化存储的功能该目录可被容器本身使用也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在 Dockerfile中使用该指令。格式为 VOLUME[/data]。
2、Dockerfile构建镜像步骤
1. 创建dockerfile文件
vim Dockerfile
FROM nginx
RUN echo Hello Nginx /usr/share/nginx/html/index.html
2. 在Dockerfile所在路径执行以下命令构建镜像
docker build -t nginx:hello .
-t: 指定镜像名字命令最后的点.表示Dockerfile文件所在路径
3. 运行镜像
docker run -p 9900:80 -d
3、实例
编写dockerfile文件在镜像中安装nginx, 构建镜像文件并根据此镜像创建容器
[rootzch01 ~]# mkdir -p dockerfile/1
[rootzch01 ~]# cd dockerfile/1
[rootzch01 1]# vi dockerfile 3.1、命令解释
FROM基础镜像必须是可以下载下来的定制的镜像都是基于 FROM 的镜像这里的 centos就是定制需要的基础镜像。后续的操作都是基于centos镜像
MAINTAINER指定镜像的作者信息
RUN指定在当前镜像构建过程中要运行的命令
包含两种模式Shell模式、exec模式
Shell模式
RUN (shell模式这个是最常用的)
RUN echohello
exec模式
RUN[“executable”“param1”“param2”](exec模式)
RUN[“/bin/bash”,”-c”,”echo hello”]
等价于/bin/bash-c echo hello
RUN yum install wget -y 等价于 RUN[“/bin/bash”,”-c”,”yum install wget -y”]
COPY:常用用于把宿主机上的文件拷贝到镜像中
EXPOSE声明端口帮助镜像使用者理解这个镜像服务的守护端口以方便配置映射在运行时使用随机端口映射时也就是 docker run -P 时会自动随机映射 EXPOSE 的端口可以是一个或者多个端口也可以指定多个EXPOSE
CMD类似于 RUN 指令用于运行程序但二者运行的时间点不同CMD在docker run 时运行
CMD[“executable”“param1”“param2”]exec模式
CMD command shell模式
CMD [“param1”,”param2”](作为ENTRYPOINT指令的默认参数)
3.2、构建镜像
语法如下
docker build -t ImageName:TagName dockerfilePath
选项
-t - 提到镜像的标签ImageName -镜像指定的名称TagName - 这是您要为镜像指定的标签dockerfilePath - Dockerfile所在的目录,如果是在当前目录使用.就可以
[rootzch01 1]# docker build -tzch/test:v3 .
查看镜像是否创建成功
[rootzch01 1]# docker images 3.3、使用订单服务构建镜像
订单服务order-app.jar
编写dockerfile文件:
[rootzch01 order]# vi dockerfile
FROM openjdk:8-jdk-oracle #基础镜像
RUN mkdir /app #创建目录用于存放jar
ENV SERVER_PORT9981 #环境变量应用服务端口
JAVA_AGENT-javaagent:/opt/agent/skywalking-agent.jar #接入skywalking
JVM_GC #配置GC参数
JVM_OPTS #配置jvm参数如限制内存
COPY target/order-app.jar /app/order-app.jar 在实际开发过程中开发编译打包好的jar 常常放在target目录下拷贝jar包到指定目录
EXPOSE $SERVER_PORT #声明服务端口
ENTRYPOINT [sh,-c,java ${JAVA_AGENT} ${JVM_XMS} ${JVM_XMX} ${JVM_XMN} ${JVM_OPTS} ${JVM_GC} -jar /app/order-app.jar] #指定容器创建启动后需要执行的命令
构建镜像:
[rootzch01 order]# docker build -tzch/order:v1 .
下篇博客将继续分享根据构建的镜像创建容器