网站编辑 seo,wordpress方向,建设彩票网站如何盈利,制作自己的网页代码技术主题
Docker作为一个开源的应用容器引擎#xff0c;制作自己的docker镜像文件是使用docker的第一步#xff0c;这样我们能够更好地管理应用程序。
技术原理
技术原理一#xff1a;安装Docker
一般都是在官网下载特定的docker文件#xff0c;然后安装即可
技术原理…技术主题
Docker作为一个开源的应用容器引擎制作自己的docker镜像文件是使用docker的第一步这样我们能够更好地管理应用程序。
技术原理
技术原理一安装Docker
一般都是在官网下载特定的docker文件然后安装即可
技术原理二编写dockerfile文件
Dockerfile的主要组成部分如下 1FROM: 指定所需的基础镜像。 2RUN: 在容器内执行的命令。 3COPY: 将本地文件拷贝到容器中。 4WORKDIR: 设置工作目录。 5CMD: 容器启动时执行的命令。 一简单例子
FROM ubuntu:18.04
RUN apt-get update \apt-get install -y niginx
EXPOSE 80
CMD [nginx, -g, daemon off;]1FROM ubuntu:18.04 这是Dockerfile的第一行它指定了基础镜像。在这里基础镜像是Ubuntu 18.04。Docker将在这个基础镜像的基础上构建你的容器。 2RUN apt-get update apt-get install -y nginx 这一行包含了两个Dockerfile指令使用运算符将它们连接起来。首先apt-get update用于更新Ubuntu操作系统的包列表以确保安装的软件包是最新的。然后apt-get install -y nginx用于安装Nginx Web服务器。 -y标志用于自动应答所有安装过程中的交互式提示以便在非交互式环境中安装软件包。 3EXPOSE 80 这一行指定了容器将会监听的网络端口。在这里容器将监听80端口这是HTTP协议的默认端口用于提供Web服务。但需要注意的是这只是一个声明它告诉Docker容器可以监听80端口但它不会自动将容器的80端口映射到主机的80端口。你需要在运行容器时显式地进行端口映射以便外部可以访问容器内的Nginx服务。 4CMD [“nginx”, “-g”, “daemon off;”] 这一行定义了容器启动时要执行的默认命令。在这里它启动Nginx服务器并使用-g daemon off;参数来告诉Nginx以前台模式运行以便容器保持运行状态。这是因为Docker容器通常在后台运行但Web服务器通常需要前台运行以响应请求。 该Dockerfile以Ubuntu 18.04基础镜像为基础并在其中安装NGINX。然后将端口80公开给外部并在容器启动时启动NGINX
二复杂例子
FROM maven:3.8.5-openjdk-17
ARG userspring
ARG groupspring
ENV SPRING_HOME/home/spring
RUN groupadd -g 1000 ${group} \ useradd -d $SPRING_HOME -u 1000 -g 1000 -m -s /bin/bash ${user} \ mkdir -p $SPRING_HOME/config \ mkdir -p $SPRING_HOME/logs \ chown -R ${user}:${group} $SPRING_HOME/config $SPRING_HOME/logs
# Railway 不支持使用 VOLUME, 本地需要构建时取消下一行的注释
# VOLUME [$SPRING_HOME/config, $SPRING_HOME/logs]
USER ${user}
WORKDIR $SPRING_HOME
COPY . .
#RUN mvn clean package
USER root
RUN mv target/ei-midjourney-2.5.4.jar ./app.jar
#RUN rm -rf target
EXPOSE 8080 9876
ENV JAVA_OPTS -XX:MaxRAMPercentage85 -Djava.awt.headlesstrue -XX:HeapDumpOnOutOfMemoryError \-XX:MaxGCPauseMillis20 -XX:InitiatingHeapOccupancyPercent35 -Xlog:gc:file/home/spring/logs/gc.log \-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port9876 -Dcom.sun.management.jmxremote.sslfalse \-Dcom.sun.management.jmxremote.authenticatefalse -Dlogging.file.path/home/spring/logs \-Dserver.port8080 -Duser.timezoneAsia/Shanghai
ENTRYPOINT [bash,-c,java $JAVA_OPTS -jar app.jar]1FROM maven:3.8.5-openjdk-17 这一行指定了基础镜像基于Maven 3.8.5和OpenJDK 17。这是构建这个容器的起点。 2ARG userspring 和 ARG groupspring 这些行定义了两个构建参数user 和 group它们用于定义容器内的用户和用户组。 3ENV SPRING_HOME/home/spring 这一行定义了一个环境变量 SPRING_HOME它指定了Spring应用程序的安装目录。 4RUN … 这些行包含了一系列命令用于在容器中创建一个用户、创建目录并分配权限。具体来说它们执行以下操作 groupadd -g 1000 ${group}创建一个名为 g r o u p 的用户组 G I D 组 I D 设置为 1000 。 u s e r a d d − d {group} 的用户组GID组ID设置为1000。 useradd -d group的用户组GID组ID设置为1000。useradd−dSPRING_HOME -u 1000 -g 1000 -m -s /bin/bash ${user}创建一个用户 ${user}将其主目录设置为 S P R I N G H O M E U I D 用户 I D 设置为 1000 所属用户组为上面创建的 SPRING_HOMEUID用户ID设置为1000所属用户组为上面创建的 SPRINGHOMEUID用户ID设置为1000所属用户组为上面创建的{group}。 mkdir -p $SPRING_HOME/config 和 mkdir -p S P R I N G H O M E / l o g s 创建两个目录 SPRING_HOME/logs创建两个目录 SPRINGHOME/logs创建两个目录SPRING_HOME/config 和 $SPRING_HOME/logs这些目录用于配置文件和日志。 chown -R u s e r : {user}: user:{group} $SPRING_HOME/config S P R I N G H O M E / l o g s 分配权限确保 SPRING_HOME/logs分配权限确保 SPRINGHOME/logs分配权限确保{user}拥有这两个目录及其内容的访问权限。 USER ${user} 这一行切换容器的执行用户为 ${user}即Spring应用程序的运行用户。 5WORKDIR $SPRING_HOME 这一行将容器的工作目录切换到 $SPRING_HOME即Spring应用程序的安装目录。 6COPY . . 这一行将当前构建上下文中的所有文件复制到容器的工作目录中。这通常包括了你的Spring Boot应用程序的源代码、配置文件等。 7USER root 这一行切换回root用户用于执行后续的命令。 8RUN mv target/ei-midjourney-2.5.4.jar ./app.jar 这一行将应用程序的JAR文件从target目录移动到容器的根目录并将其重命名为app.jar。这通常是Spring Boot应用程序的可执行JAR文件。 9EXPOSE 8080 9876 这一行声明容器将会监听的网络端口分别是8080和9876。 10ENV JAVA_OPTS … 这一行设置了Java应用程序的环境变量 JAVA_OPTS它包括了一系列Java虚拟机参数和应用程序配置参数例如堆内存大小、垃圾回收日志、JMX远程监控等。 11ENTRYPOINT [“bash”,“-c”,java J A V A O P T S − j a r a p p . j a r ] 这一行定义了容器启动时要执行的默认命令。它使用 b a s h 来执行 J a v a 命令传递了 JAVA_OPTS -jar app.jar] 这一行定义了容器启动时要执行的默认命令。它使用bash来执行Java命令传递了 JAVAOPTS−jarapp.jar]这一行定义了容器启动时要执行的默认命令。它使用bash来执行Java命令传递了JAVA_OPTS作为Java应用程序的参数并启动app.jar这将启动Spring Boot应用程序。 综合来说这个Dockerfile用于创建一个包含Spring Boot应用程序的Docker容器配置了用户、目录结构、环境变量和启动命令使其能够运行Spring Boot应用程序并在8080和9876端口上提供服务。容器内的Spring Boot应用程序将以${user}用户的身份运行。
技术原理三构建镜像
使用Docker命令将其构建为可用的容器映像。我们可以使用以下命令构建一个名为“test-nginx”的镜像
docker build -t ceshi .技术原理四运行容器
docker run -p 80:8080 -d --name ei-1.0 ei-midjourney-2:0.1机器的端口是80映射的docker容器的端口8080需要特别注意 –name 是为了区分容器同一个镜像可以起不同的容器