一、前期准备
1. 概述
本次教程主要使用到的设备: 一台 1G 2 核 云服务器(捡漏的)、一台 本地服务器(闲置的电脑),由于设备简陋,本地服务器没有公网 IP,而云服务器性能又太差,所以必须使用特殊方式构建服务器环境 ---- frp 内网穿透
2. 什么是内网穿透?
- 内网穿透:是指将内网服务器的端口映射到外网,使得外网用户可以通过外网访问内网服务器。
3.主要原理:
主要使用流程如图所示:
本次教程主要使用到的设备: 一台 1G 2 核 云服务器(捡漏的)、一台 本地服务器(闲置的电脑),由于设备简陋,本地服务器没有公网 IP,而云服务器性能又太差,所以必须使用特殊方式构建服务器环境 ---- frp 内网穿透
主要使用流程如图所示:
FRP 官方文档: FRP 官方文档
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
搭建 frp 服务,需要一台有公网 IP 的机器,核心原理就是 公网服务器(frp 服务端)监听对应配置端口流量转发到本地服务器(frp 客户端)对应的端口
| 概念 | 说明 | 比喻 |
|---|---|---|
| 镜像 (Image) | 一个只读的模板,用于创建容器。相当于面向对象中的 类。 | 一个软件的安装包(.exe) |
| 容器 (Container) | 镜像运行时的实体。容器可以被创建、启动、停止、删除。相当于类的 实例。 | 一个正在运行的软件进程 |
| 仓库 (Registry) | 集中存放镜像的地方。官方仓库是 Docker Hub。 | 应用商店(App Store) |
Docker 是一个开源的容器化平台,可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。Docker 的主要目标是通过容器化技术实现应用程序的快速部署、可移植性和可扩展性,从而简化应用程序的开发、测试和部署过程。
容器化是一种虚拟化技术,它通过在操作系统层面隔离应用程序和其依赖的运行环境,使得应用程序可以在一个独立的、封闭的环境中运行,而不受底层操作系统和硬件的影响。
与传统的虚拟机相比,容器化具有以下优势:
V1 和 V2 的区别 是 v2 版本中么有 - 线
| 功能 | docker-compose (V1) | docker compose (V2) | 说明 |
|---|---|---|---|
| 启动服务 | docker-compose up -d |
docker compose up -d |
后台启动所有服务 |
| 停止服务 | docker-compose down |
docker compose down |
停止并移除容器 |
| 查看状态 | docker-compose ps |
docker compose ps |
查看服务状态 |
| 查看日志 | docker-compose logs -f |
docker compose logs -f |
实时查看日志 |
| 构建镜像 | docker-compose build |
docker compose build |
构建服务镜像 |
| 执行命令 | docker-compose exec service sh |
docker compose exec service sh |
在容器内执行命令 |
| 重启服务 | docker-compose restart |
docker compose restart |
重启所有服务 |
| 缩放服务 | docker-compose up --scale service=3 |
docker compose up --scale service=3 |
扩展服务实例数量 |
| 查看配置 | docker-compose config |
docker compose config |
验证和查看配置 |
| 暂停服务 | docker-compose pause |
docker compose pause |
暂停服务容器 |
| 恢复服务 | docker-compose unpause |
docker compose unpause |
恢复暂停的服务 |
Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像的指令。通过 Dockerfile,我们可以自动化地构建出包含应用程序及其运行环境的镜像。
Dockerfile 的基本结构如下:
指定基础镜像: FROM <image>[:<tag>] [AS <name>]
Nginx 是一款高性能的开源 HTTP 服务器和反向代理服务器,由俄罗斯程序员 Igor Sysoev 于 2004 年首次发布。它以其高并发、低内存消耗和稳定性著称,被广泛应用于互联网领域。
Nginx 最初是为了解决 C10K 问题(即同时处理 10000 个并发连接)而设计的,如今它已经成为全球最流行的 Web 服务器之一,据统计,全球约 34% 的网站使用 Nginx 作为 Web 服务器。
Nginx 配置文件采用层级结构,由指令(Directive)和块(Block)组成:
# 全局块 - 影响 Nginx 整体运行
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# events 块 - 影响 Nginx 与用户的网络连接
events {
worker_connections 1024;
use epoll;
}
# http 块 - HTTP 服务器相关配置
http {
# http 全局块
include /etc/nginx/mime.types;
default_type application/octet-stream;
# server 块 - 虚拟主机配置
server {
# server 全局块
listen 80;
server_name example.com;
# location 块 - URL 匹配配置
location / {
root /var/www/html;
index index.html;
}
location /api {
proxy_pass http://backend;
}
}
# 可以有多个 server 块
server {
listen 80;
server_name another.com;
# ...
}
}
# stream 块 - TCP/UDP 代理配置(可选)
stream {
server {
listen 3306;
proxy_pass mysql_cluster;
}
}