java做网站的版本/网络营销方案设计

java做网站的版本,网络营销方案设计,西安网站开发招聘,asp网站源码说明1.什么是Dockerfile Dockerfile 是一个用于指导 Docker 镜像构建过程的脚本文件。它通过一系列指令来详细描述了构建镜像所需的步骤和配置细节。利用 Dockerfile,我们可以精确地设定容器的运行环境,安装必要的软件,复制项目文件,…

1.什么是Dockerfile

Dockerfile 是一个用于指导 Docker 镜像构建过程的脚本文件。它通过一系列指令来详细描述了构建镜像所需的步骤和配置细节。利用 Dockerfile,我们可以精确地设定容器的运行环境,安装必要的软件,复制项目文件,以及配置环境变量等。

Dockerfile 的优势在于其可重复性和自动化,使得应用程序的容器化过程既高效又可靠。通过将构建过程代码化,我们能够对构建步骤进行版本控制,并在不同的环境中复现相同的镜像。

Dockerfile 的组成通常包括以下几个方面:指定基础镜像、提供维护者信息、执行镜像构建指令以及定义容器启动时要运行的命令。

在 Dockerfile 中,指令是按照从上到下的顺序执行的,且首个非注释指令必须是 FROM,用以指定基础镜像。Dockerfile 中的注释以“#”开头。

Dockerfile 支持多种指令,例如 RUN、CMD、FROM、EXPOSE、ENV 等,这些指令帮助我们定义镜像的操作系统、安装软件、设置环境变量等。

编写完 Dockerfile 后,我们可以通过执行 docker build 命令并指定 Dockerfile 的位置来构建镜像。Docker 引擎将按照 Dockerfile 中的指令逐步构建,最终生成一个新的镜像。

综上所述,Dockerfile 是一个关键工具,它通过简洁明了的文本指令,帮助我们自动化和标准化 Docker 镜像的构建过程,从而简化了容器化应用程序的部署工作。

2.Dockerfile 中常用的指令

指令说明
FROM指定基础镜像
MAINTAINER设置维护者信息
RUN在镜像中执行命令
CMD指定容器启动时要执行的命令
ENTRYPOINT与 CMD 类似,但不会被 docker run 命令行参数覆盖
COPY复制文件或目录到镜像中
ADD复制文件或目录到镜像中,支持远程 URL 和解压缩功能
ENV设置环境变量
ARG定义构建时的变量,可以通过 --build-arg 参数传递
WORKDIR设置工作目录
USER指定运行容器时的用户名或 UID
EXPOSE声明容器运行时需要监听的端口
HEALTHCHECK定义容器的健康检查命令
VOLUME声明容器中的挂载点
LABEL为镜像添加元数据

注意事项:

FROM

  • 尽量使用官方镜像作为基础镜像,以确保稳定性和安全性。
  • 指定镜像时,最好使用具体标签(例如 ubuntu:20.04 而不是 ubuntu:latest),以避免构建时的不一致性。

MAINTAINER(已废弃,推荐使用 LABEL)

  • 请注意,MAINTAINER 指令已被废弃,现在推荐使用 LABEL 指令来设置维护者信息。

RUN

  • 为了保持 Dockerfile 的可读性和可维护性,尽量使用 && 来链式执行命令,并使用 \ 来换行。
  • 尽可能使用 RUN apt-get clean 来清理缓存,减少镜像大小。

CMD

  • CMD 指令的目的是为执行容器提供默认值,如果 docker run 指定了命令,CMD 会被覆盖。
  • 当 Dockerfile 中有多个 CMD 指令时,只有最后一个 CMD 会生效。

ENTRYPOINT

  • ENTRYPOINT 与 CMD 结合使用可以设置容器启动时要执行的默认命令和参数。
  • 使用 ENTRYPOINT ["executable", "param1", "param2"] 的形式可以确保 docker run 的参数被追加到 param1param2 后面。

COPY 和 ADD

  • 尽可能使用 COPY 而不是 ADD,除非你需要 ADD 的额外功能(如解压缩)。
  • 为了提高可读性,请明确指定源路径和目标路径。

ENV

  • 使用 ENV 来设置环境变量,可以在后续的指令中使用这些变量。
  • 尽量将环境变量设置在 Dockerfile 的顶部,以便于其他指令引用。

ARG

  • ARG 指令定义的变量只在构建时有效,容器运行时不可用。
  • 使用 ARG 定义的变量可以在 docker build 时通过 --build-arg 传递。

WORKDIR

  • 使用 WORKDIR 而不是多个 RUN 指令中的 cd,以确保路径的清晰性和一致性。

USER

  • 使用 USER 指令来指定运行容器的用户,以减少安全风险。

EXPOSE

  • EXPOSE 指令只是声明容器将监听指定的端口,并不会自动映射端口到宿主机。

HEALTHCHECK

  • 使用 HEALTHCHECK 来检测容器的健康状态,这对于自动重启失败的容器很有用。

VOLUME

  • 使用 VOLUME 来管理容器的数据持久化,避免数据丢失。

LABEL

  • 使用 LABEL 来添加元数据,便于组织镜像和记录版本信息。

这些指令可以根据需要灵活组合,构建出符合需求的 Docker 镜像。请注意,Dockerfile 中的指令顺序很重要,因为每个指令都会创建一个新的镜像层,而后续的指令将基于前面的镜像层进行操作。

更详细的指令说明和用法,请参考 Docker 官方文档:

Dockerfile reference | Docker Docs

3.dockerfile基本结构和构建镜像原则

3.1 基本结构

3.2 构建基本原则

dockerfile构建镜像需要遵循一下原则:

  • 单一职责:每个层级只做每个层级的事
  • 提供注释信息:最好提供注释信息,以便他人理解
  • 保持容器最小化
  • 合理选择基础镜像:基础镜像的选择很重要,尽量选择成熟易用的基础镜像版本
  • 最小化镜像层数:镜像层数不宜过多,尽量精简,否则容易出错,也可能会影响加载速度

通过上面的示例图可以看出,每多一行命令,镜像的内容就多一层。

其他注意事项:

  • 尽量减少镜像层数,可以通过合并 RUN 指令来实现。
  • 使用 .dockerignore 文件排除不必要的文件和目录,减少构建上下文的大小。
  • 保持 Dockerfile 的简洁性,避免在其中执行复杂的操作,尽可能在构建上下文中准备数据。
  • 定期更新基础镜像以包含最新的安全补丁。

4.Dockerfile使用示例

4.1 基于centos8镜像构建nginxWeb服务镜像

以下是一个简单的 Dockerfile示例,以构建一个基于 centos 的配置web服务的镜像:

1.创建构建上下文目录:

[root@open-Euler3 ~]# mkdir dockerfile_test

2.本地添加nginx测试界面用于COPY

[root@open-Euler3 ~]# echo "nginx test" > dockerfile_test/index.html

3.编写Dockerfile文件

[root@open-Euler3 dockerfile_test]# cat Dockerfile
# 1. 第一行必须指定基础镜像信息
ARG VER=8
FROM centos:${VER}# 2. 作者信息
LABEL maintainer="openlab <openlab@123.com>"# 3. 安装 nginx
RUN mkdir -p /etc/yum.repos.d/bak_repo && \mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak_repo/ 2>/dev/null || true && \curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo && \dnf clean all && \dnf makecache && \dnf install -y nginx# 4. 复制静态文件
COPY index.html /usr/share/nginx/html# 5. 暴露端口
EXPOSE 80 443# 6. 启动服务
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]

4.docker build 构建镜像

注意:-t  选项指定构建出镜像的标签 最后的 "." 指定的是当前目录,也就是构建上下文目录,Dockerfile所在的目录

5.查看构建的镜像

[root@open-Euler3 dockerfile_test]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
centos_nginx                 latest    7ca95c53855e   2 minutes ago   342MB
ubuntu                       18.04     f9a80a55f492   21 months ago   63.2MB
reg.yym.com/openlab/ubuntu   18.04     f9a80a55f492   21 months ago   63.2MB
centos                       8         5d0da3dc9764   3 years ago     231MB

6.启动容器并进行测试:

4.2 基于ubuntu镜像配置SSH服务

要求:
    1、基础镜像ubuntu:18.04。
    2、替换为国内的安装源(比如阿里或163)。
    3、安装openssh-server。
    4、允许root用户远程登录。
    5、暴露端口22。
    6、服务开机自启动。

1.创建构建上下文目录:

[root@open-Euler3 dockerfile_ssh]# pwd #这是我的构建上下文位置
/root/dockerfile_ssh

2.文件准备

1)apt源:

[root@open-Euler3 dockerfile_ssh]# cat 163.list
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse

2)客户端公钥文件

[root@open-Euler3 dockerfile_ssh]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q #生成公私钥
[root@open-Euler3 dockerfile_ssh]# cp ~/.ssh/id_rsa.pub ./authorized_keys

3)准备启动脚本文件

[root@open-Euler3 dockerfile_ssh]# cat run.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@open-Euler3 dockerfile_ssh]# chmod +x run.sh

4)编写Dockerfile文件

[root@open-Euler3 dockerfile_ssh]# vim Dockerfile
FROM ubuntu:18.04MAINTAINER "kongd <kongd@11.com>"RUN mv /etc/apt/sources.list /etc/apt/sources.bak
COPY aliyun.list /etc/apt/sources.list.d/aliyun.list
RUN apt update && apt install -y openssh-server && mkdir -p /var/run/sshd
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/' /etc/pam.d/sshd
COPY run.sh /run.sh
RUN chmod +x /run.sh
RUN mkdir /root/.ssh
COPY authorized_keys /root/.ssh/authorized_keysEXPOSE 22/tcpCMD ["/run.sh"]

docker build 构建镜像)

查看镜像:

[root@open-Euler3 dockerfile_ssh]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
ssh1_image                   latest    98ea77f917f0   4 minutes ago   248MB
centos_nginx                 latest    fb1d61ed3b60   3 hours ago     342MB
ubuntu                       18.04     f9a80a55f492   21 months ago   63.2MB
reg.yym.com/openlab/ubuntu   18.04     f9a80a55f492   21 months ago   63.2MB
centos                       8         5d0da3dc9764   3 years ago     231MB

通过构建的镜像启动一个容器:

[root@open-Euler3 dockerfile_ssh]# docker run -itd --name ssh1_c1 -p 10022:22 ssh1_image
cfec71666b634dfbfea43427cf1846d9516bcc3a9806f923a6391e560a721319
[root@open-Euler3 dockerfile_ssh]# docker ps -a
CONTAINER ID   IMAGE        COMMAND     CREATED         STATUS         PORTS                                     NAMES
cfec71666b63   ssh1_image   "/run.sh"   3 seconds ago   Up 3 seconds   0.0.0.0:10022->22/tcp, :::10022->22/tcp   ssh1_c1

测试ssh免密登录:

可以看到直接通过映射后的宿主机IP+端口登录到容器的shell上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大脑宏观结构中的富集俱乐部:图论分析视角

摘要 大脑是一个高度复杂的网络。越来越多的证据支持大脑网络中一组重要脑区的关键作用&#xff0c;这些脑区通常被称为大脑的“核心”或“枢纽”区域。这些区域不仅能量消耗较高&#xff0c;而且在神经信息传递方面的效率也极高&#xff0c;因此被称为“富集俱乐部”。富集俱乐…

Redis7——进阶篇(五)

前言&#xff1a;此篇文章系本人学习过程中记录下来的笔记&#xff0c;里面难免会有不少欠缺的地方&#xff0c;诚心期待大家多多给予指教。 基础篇&#xff1a; Redis&#xff08;一&#xff09;Redis&#xff08;二&#xff09;Redis&#xff08;三&#xff09;Redis&#x…

光谱相机检测肉类新鲜度的原理

光谱相机通过分析肉类样本在特定波长范围内的光谱反射特性&#xff0c;结合化学与生物指标的变化规律&#xff0c;实现对其新鲜度的无损检测。其核心原理可概括为以下方面&#xff1a; 一、光谱特征与物质成分的关联性 ‌物质特异性吸收/反射‌ 不同化学成分&#xff08;如水分…

c#面试题整理9

1.遍历xml文档 2.解释一下这段 String s new String("xyz"); 这段在C#平台中&#xff0c;编译失败 3.说明一下抽象类 抽象类可以有构造函数 抽象类不能是静态和密封的类&#xff0c;密封的类表示无法继承&#xff0c;抽象类本身就不可实例化&#xff0c;加不好…

《React 属性与状态江湖:从验证到表单受控的实战探险》

属性初识 属性能解决两个大问题&#xff1a;通信和复用 props.js: import React, { Component } from react import Navbar from ./Navbarexport default class App extends Component {state {a:100}render() {return (<div><div><h2>首页</h2>&l…

Qwen/QwQ-32B 基础模型上构建agent实现ppt自动生成

关心Qwen/QwQ-32B 性能测试结果可以参考下 https://zhuanlan.zhihu.com/p/28600079208https://zhuanlan.zhihu.com/p/28600079208 官方宣传上是该模型性能比肩满血版 DeepSeek-R1&#xff08;671B&#xff09;&#xff01; 我们实现一个 使用Qwen/QwQ-32B 自动生成 PowerPoi…

[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传

文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点&#xff1a; 面向连接&#xff0c;可靠性高&#xff0c;全双工&#xff0c;面向字节流udp特点&#xff1a;无连接&#xff0c;不…

Matlab中快速查找元素索引号

1、背景介绍 在算法设计过程中&#xff0c;有时候需要从一维/二维数组中&#xff0c;快速查找是否某个元素&#xff0c;以及该元素所在的位置。如一维矩阵[1 2 3 4 5 6 6 7 8]所示&#xff0c;元素6所在的位置为6 7。 2、函数测试 matlab中函数find()可以快速查找到指定元素所…

【DuodooTEKr 】多度科技 以开源之力,驱动企业数字化转型

多度科技 背景 / Background 在全球产业链重构与国内经济双循环的浪潮下&#xff0c;中国制造业与贸易企业正面临数字化升级的迫切需求。开源技术作为数字化转型的基石&#xff0c;不仅能打破技术壁垒、降低企业成本&#xff0c;更能通过协作创新加速产业智能化进程。 多度科技…

【HarmonyOS Next】鸿蒙应用故障处理思路详解

【HarmonyOS Next】鸿蒙应用崩溃处理思路详解 一、崩溃问题发现后定位 1. 崩溃现象&#xff1a; 常见的崩溃问题表现为&#xff0c;应用操作后白屏闪退&#xff0c;或者应用显示无响应卡死。 2.定位问题&#xff1a; 发现崩溃后&#xff0c;我们首先需要了解复现步骤&#x…

linunx ubuntu24.04.02装libfuse2导致无法开机进不了桌面解决办法

osu.appimage运行需要libfuse2 然后我就下了fuse,打了两把第二天无法开机 这样是不能开机的 这样是可以开机的 解决办法一&#xff1a;玩星火商店的osu&#xff0c;好了问题解决 解决办法二&#xff1a; 在这个页面 ctrl alt f2进入tty6 sudo apt install ubuntu-desktop 进…

C++蓝桥杯基础篇(十一)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来学习C蓝桥杯基础篇&#xff08;十一&#xff09;&#xff0c;学习类&#xff0c;结构体&#xff0c;指针相关知识&#xff0c;准备好了吗&#xff1f;咱们开始咯~ 一、类与结构体 类的定义&#xff1a;在C中&#x…

css中实现border距离视图左右两侧有距离

首先看效果图 再看css是如何实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.main {background-color: aqua;display: block;width: 300px;padding: 0px 32px;box-sizing: border-box;}/…

Tweak Power:全方位电脑系统优化的高效工具

在日常使用电脑时&#xff0c;系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行&#xff0c;许多人会选择系统优化工具。然而&#xff0c;国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时&#xff0c;…

深入浅出Bearer Token:解析工作原理及其在Vue、Uni-app与Java中的实现Demo

目录 前言1. 基本知识2. Demo3. 实战 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. 基本知识 Bearer Token是一种基于Token的认证机制&#xff0c;用于在HTTP请求中传递用户的身份信息 应用于RESTful A…

kubernetes——part3-5 核心概念 Service

一、 service作用 使用kubernetes集群运行工作负载时&#xff0c;由于Pod经常处于用后即焚状态&#xff0c;Pod经常被重新生成&#xff0c;因此Pod对应的IP地址也会经常变化&#xff0c;导致无法直接访问Pod提供的服务&#xff0c;Kubernetes中使用了Service来解决这一问题&am…

从零开始 | C语言基础刷题DAY1

❤个人主页&#xff1a;折枝寄北的博客 DAY1[2025.3.11] 1. 求两个数的较大值2.从键盘输入的两个数的大小关系3.一个整数的奇偶性&#xff0c;请判断4. 考试分数是否通过5.考试成绩是否完美&#xff0c;请判断 1. 求两个数的较大值 题目&#xff1a; 写一个函数求两个整数的较…

《苍穹外卖》SpringBoot后端开发项目核心知识点整理(DAY1 to DAY3)

目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功&#xff1a; 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具&#xff1a;Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…

大数据hadoop课程笔记

1.课程导入 柯洁 Alpha Go是人工智能领域的里程碑。 深度学习 大模型deepseek chatgpt 大模型 和 大数据 之间有着非常紧密的关系。可以说&#xff0c;大数据是大模型发展的基石&#xff0c;而大模型是大数据价值挖掘的重要工具。 https://youtu.be/nN-VacxHUH8?sifj7Ltk…

架构学习第八周--Kubernetes博客搭建

目录 一、整体架构 二、部署MySQL主从 三、部署Redis哨兵 四、部署WordPress 五、注意事项 一、整体架构 本项目为在一主三从的Kubernetes集群上部署WordPress博客。因为WordPress部分容器版本自行集成Apache和PHP服务&#xff0c;因此在Kubernetes上部署WordPress只需提供…