问题一:发布环节,你的应⽤是怎样发布在服务器上的
- 选择合适的服务器:评估所需的服务器资源,包括CPU、内存、存储和带宽等。
- 准备服务器环境:安装操作系统,配置网络,安装必要的软件和库
- 上传应用文件:文件传输协议(如FTP、SCP),将开发好的应用文件上传到服务器上。
- 配置应用环境:安装和配置数据库、Web服务器、缓存服务器。配置应用的配置文件,如数据库连接信息、服务器地址、端口号等。
- 部署应用:在Web服务器上配置虚拟主机或站点,将应用的目录指向服务器上的相应位置。
- 测试应用:用浏览器或其他工具访问应用的URL,检查应用的各个功能模块是否正常工作并进行功能测试、性能测试、安全测试
- 监控和优化:设置监控系统来收集应用的运行数据,如访问量、响应时间、错误日志等
问题二:HTTP请求的协议栈过程,结合OSI七层⽹络模型,使⽤到了操作系统的哪些部分,⽹卡?浏览器?驱动程序?
2.6.1 OSI七层⽹络模型:
应用层(HTTP) 构建HTTP请求报文。请求报文包括请求行、请求头和请求体 |
---|
传输层(TCP)请求报文被封装成TCP报文段,并添加TCP头部信息,如源端口号、目的端口号 |
网络层(IP)将TCP报文段封装成IP数据包,并添加IP头部信息,如源IP地址、目的IP地址 |
数据链路层 被封装成数据帧,并添加帧头部信息,通过物理链路(如以太网)传输到下一个节点 |
物理层 将数据帧中的比特流通过物理介质(如双绞线、光纤等)传输到目的端 |
2.6.2 操作系统
浏览器 HTTP请求的发起者,它负责构建HTTP请求报文,并通过操作系统的网络协议栈发送请求 |
---|
操作系统内核 内核中网络协议栈负责处理网络数据包的接收、发送和转发。 它包括TCP/IP协议栈的实现,以及与其他网络协议的交互。 |
驱动程序 操作系统与网络硬件之间的接口 将网络数据包从操作系统的网络协议栈传输到网络接口卡 (或反向转换) |
网卡(网络接口卡) 计算机与网络之间的物理连接设备。将数字信号转换为模拟信号(或反向转换),并通过物理介质传输数据 |
问题三:dockerfile
怎样部署⼀个项⽬
1.编写Dockerfile
[root@docker-server nginx]# vim Dockerfile
FROM centos:7
MAINTAINER hugo 2763743788@qq.com
RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
ADD nginx-1.20.1.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.20.1 \
&& ./configure --prefix=/usr/local/nginx --with-http_sub_module \
&& make \
&& make install \
&& cd /usr/local/nginx
&& rm -rf /usr/local/src/nginx-1.20.1* # 清理源代码和压缩包以节省空间
# ADD nginx.conf /usr/local/nginx/conf/nginx.conf
RUN useradd -s /sbin/nologin nginx \
&& ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx \
&& echo 'test nginx !' > /usr/local/nginx/html/index.html
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
注意:ADD特性:自动解压tar文件与支持从URL下载文件
2.构建Docker镜像
[root@docker-server nginx]# docker build -t nginx:v1 .
[root@docker-server nginx]# docker images | grep v1
nginx v1 fbd06c1753c0 8 seconds ago 581MB
3.运行Docker容器
[root@docker-server nginx]# docker run -d -it -p 80:80 nginx:v1
4.(可选)使用Docker Compose
问题四: dockerfile
与docker-compose
区别
- Dockerfile:主要用于定义单个容器镜像的创建过程,确保镜像的一致性和可重复性。
- Docker-Compose:主要用于定义和协调多个容器服务的部署和服务之间的依赖,简化多容器应用的管理和部署流程。
两者结合使用,可以实现从单个服务的构建到整个多服务应用部署的全链条自动化,是现代容器化应用开发和部署中不可或缺的工具。
问题五:Dockerfile中的cmd和run的区别
RUN
指令在构建镜像的过程中执行。每当Dockerfile被用来构建镜像时,RUN
指令指定的命令都会在构建环境中执行,主要用于安装软件包、下载文件、编译应用等,以便为镜像创建所需的文件系统更改。每次RUN
执行后,都会创建一个新的镜像层。因此,如果可能的话,最好将多个命令合并为一个RUN
指令,以减少镜像的层数和大小。
CMD
指令在容器启动时执行。当使用docker run
命令运行一个容器时,如果docker run
后面没有跟任何额外的命令,那么CMD
中指定的命令就会在容器的主进程中执行,主要目的是为容器提供默认的执行命令。它告诉容器在启动时应该运行什么程序。