linux + docker 域名访问网站

本文详细介绍了如何在Linux中创建文件夹、配置Nginx、设置PHP容器,以及实现代码与配置文件的挂载,并通过反向代理实现不同项目间的URL映射。涉及docker运行、nginx配置和多站点部署技巧。

1: 在home目录里面分别建立 3个文件夹   mkdir www;   mkdir logs ; mkdir -p conf/conf.d 

2: 在www 文件夹里面新建index.php; 存放程序代码

3: 在conf/conf.d 文件夹里面新建 test.conf 文件 ,默认配置就可以

 server {
    listen       80;
    server_name  localhost;

    location / {
         root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}
4:建立容器 

     a)第一个项目

       1)代码容器挂载 : docker run --name  test1-php -v /home/project/test1/www:/www  -d php:7.3-fpm

        2)nginx配置容器挂载:docker run --name  test1-php-nginx -p 8083:80 -d \
    -v /home/project/test1/www:/usr/share/nginx/html:ro \
    -v /home/project/test1/conf/conf.d:/etc/nginx/conf.d:ro \
    --link test1-php:php \
    nginx

       3)输入ip+端口验证下  http://123.56.9.233:8083/

    b) 第二个项目

       1)代码容器挂载:docker run --name  test2-php -v /home/project/test2/www:/www  -d php:7.3-fpm 

        2)nginx配置容器挂载:docker run --name  test2-php-nginx -p 8082:80 -d \
    -v /home/project/test2/www:/usr/share/nginx/html:ro \
    -v /home/project/test2/conf/conf.d:/etc/nginx/conf.d:ro \
    --link test2-php:php \
    nginx 

         3)输入ip+端口验证下  http://123.56.9.233:8082/

5:配置nginx 反向代理

注意:本地的80端口不能被占用,要杀死

netstat -anltp | grep 80

kill  140936;结束进程

1) 新建 proxy_nginx文件夹 ,包括  mkdir www;   mkdir logs ; mkdir -p conf/conf.d 

2)配置反向代理容器:docker run --name  proxy_nginx -p 80:80 -d \
    -v /home/project/proxy_nginx/log/:/var/log/nginx \
    -v /home/project/proxy_nginx/www:/usr/share/nginx/html:ro \
    -v /home/project/proxy_nginx/conf/conf.d:/etc/nginx/conf.d:ro \
    nginx

3)conf/conf.d 文件夹新建 反向代理配置文件.conf

server {
    listen       80;        
    server_name  test1.xxx.cn;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://123.56.9.233:8083;
    }
}


server {
    listen       80;        
    server_name  test2.xxx.cn;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://123.56.9.233:8082;
    }
}

目录结构

 

6: 查看结果,到此结束

<think>我们正在处理用户的问题:在Windows Server 2012 R2系统中使用小皮面板(这里可能指的是phpstudy或者类似的面板,但根据上下文,用户提到“小皮面板”,通常是指phpstudy)来配置和管理Docker。 然而,需要注意的是,Windows Server 2012 R2并不直接支持Docker for Windows,因为Docker for Windows需要Windows 10或Windows Server 2016及以上版本,且需要Hyper-V。因此,我们只能使用Docker Toolbox。 根据引用[1]:其他Windows系统使用Docker Toolbox,所以Windows Server 2012 R2需要Docker Toolbox进行安装。 步骤: 1. 安装Docker Toolbox 2. 配置小皮面板(这里假设用户已经安装了小皮面板,即phpstudy)与Docker Toolbox的协作。 但是,小皮面板(phpstudy)主要是一个PHP集成环境,它本身并不直接管理Docker容器。因此,我们需要在Windows Server 2012 R2上安装Docker Toolbox,然后通过Docker命令行或Portainer等工具来管理Docker。小皮面板可以用于管理Web服务(如Apache/Nginx、PHP、MySQL等),而Docker容器则独立运行。 所以,用户可能希望在小皮面板中管理的网站能够与Docker容器中的服务进行交互,或者希望将小皮面板中的某些服务迁移到Docker容器中?但问题描述不够具体。 考虑到用户的问题:“使用小皮面板管理Docker”,这可能意味着用户希望在小皮面板中能够方便地操作Docker(如启动/停止容器等)。但小皮面板本身没有集成Docker管理功能,因此我们需要寻找替代方案。 另一种思路:在小皮面板中,我们可以通过配置反向代理将请求转发到Docker容器中运行的服务。这样,用户可以通过访问小皮面板搭建的网站来间接访问Docker容器中的服务。 具体步骤: 第一步:安装Docker Toolbox 1. 下载Docker Toolbox,安装地址:https://github.com/docker-archive/toolbox/releases 2. 运行安装程序,按照提示安装。注意:安装过程中会安装VirtualBox(因为Docker Toolbox使用VirtualBox来运行一个Linux虚拟机,Docker守护进程运行在这个虚拟机中)。 3. 安装完成后,桌面上会出现“Docker Quickstart Terminal”快捷方式,运行它将会启动一个配置好的shell环境(使用Git Bash),并启动Docker虚拟机。 第二步:验证Docker安装 在打开的Docker Quickstart Terminal中,输入: docker run hello-world 如果能够下载并运行hello-world容器,说明安装成功。 第三步:安装小皮面板(如果尚未安装) 用户可能已经安装了小皮面板,如果没有,可以前往小皮面板官网下载Windows版本并安装。 第四步:管理Docker容器 由于小皮面板没有直接管理Docker的功能,我们可以通过以下方式: - 使用Docker命令行(在Docker Quickstart Terminal中) - 安装Portainer(一个Docker管理UI)来管理Docker 安装Portainer: 在Docker Quickstart Terminal中运行: docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer 然后,通过浏览器访问 http://<你的服务器IP>:9000 来使用Portainer管理Docker。 第五步:将小皮面板的网站Docker容器服务集成 例如,假设我们在Docker中运行了一个Web服务,监听在8080端口,我们希望小皮面板的网站(假设使用Nginx)能够反向代理到这个服务。 在小皮面板中,我们可以这样配置(以Nginx为例): 1. 打开小皮面板的Nginx配置文件(或者通过小皮面板的站点管理添加反向代理规则)。 2. 添加一个反向代理配置,将某个域名的请求转发到Docker容器的8080端口。 示例Nginx配置片段: location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 注意:由于Docker容器运行在VirtualBox虚拟机中,所以这里的localhost并不是宿主机的localhost,而是虚拟机的IP。我们需要知道虚拟机的IP地址,可以通过在Docker Quickstart Terminal中运行`docker-machine ip default`来获取(通常为192.168.99.100)。因此,上面的`proxy_pass`应该写为:http://192.168.99.100:8080 但是,请注意,端口映射需要在运行容器时指定,例如运行容器时使用`-p 8080:8080`,这样宿主机的VirtualBox虚拟机(192.168.99.100)的8080端口就会映射到容器的8080端口。 第六步:注意事项 - Docker Toolbox使用的是VirtualBox虚拟机,因此每次重启后虚拟机的IP可能会变化(如果使用默认的dhcp)。我们可以设置静态IP,但比较复杂。或者,我们可以使用端口转发,将宿主机的端口转发到虚拟机,然后在nginx中使用127.0.0.1:端口来访问(但这样需要配置VirtualBox的端口转发)。 - 另一种做法是使用`docker-machine`命令来设置环境变量,使得Docker客户端命令能够正确指向虚拟机中的Docker守护进程。 由于用户可能希望在小皮面板中管理多个服务,而部分服务在Docker容器中,因此反向代理是一个常用的集成方式。 总结:小皮面板本身不能直接管理Docker容器,但我们可以通过安装Portainer来管理,并通过配置小皮面板中的Web服务器(如Nginx)反向代理到Docker容器中的服务,从而实现间接管理。 根据引用[2]中,我们看到了一个运行容器的例子,其中使用了`-v`参数来挂载配置文件,`-p`参数映射端口,`--restart=always`设置自动重启。 因此,我们可以这样运行一个服务(以Dashy为例,但用户可以根据需要替换): docker run -d -p 8080:80 --restart=always --name my-web-service lissy93/dashy:latest 然后,在小皮面板中配置一个网站,使用反向代理将请求转发到http://192.168.99.100:8080。 注意:如果用户的小皮面板使用的是Apache,同样可以配置反向代理,使用mod_proxy模块。 最后,提醒用户:由于Windows Server 2012 R2已经较旧,建议升级到更高版本以获得更好的Docker支持。 根据引用[3]和[4],用户是在腾讯云服务器上运行的,所以还需要注意云服务器的防火墙设置(如安全组)和Windows防火墙设置,确保端口(如80、9000、8080等)是开放的。 在Windows Server 2012 R2上,防火墙设置可以参考引用[4]中的方法:创建入站规则,允许相应的端口。 因此,完整的步骤包括: 1. 安装Docker Toolbox(并配置) 2. 安装小皮面板(phpstudy) 3. 安装Portainer(可选,用于管理Docker) 4. 运行Docker容器(注意端口映射) 5. 配置小皮面板的Web服务器(Nginx或Apache)反向代理到Docker容器的服务 6. 配置防火墙(云服务器安全组和Windows防火墙)开放所需端口 相关问题: 1. 如何在Windows Server 2012 R2上安装Docker Toolbox? 2. 如何配置小皮面板(phpstudy)的反向代理? 3. 如何配置Portainer来管理Docker? 4. 如何解决Docker Toolbox虚拟机IP变化的问题? 5. 如何在Windows防火墙中开放端口? 现在,我们根据上述步骤和问题,组织回答。</think>### Windows Server 2012 R2 小皮面板配置和管理 Docker 的方法 由于 Windows Server 2012 R2 不支持原生 Docker 引擎(需要 Windows Server 2016 或更高版本),需通过 Docker Toolbox 实现 Docker 管理。结合小皮面板(如 phpStudy)的配置步骤如下: --- #### **一、安装 Docker Toolbox** 1. **下载安装包** 访问 Docker Toolbox 的 GitHub 发布页:[Releases · docker-archive/toolbox](https://github.com/docker-archive/toolbox/releases) [^1],下载最新版 `exe` 安装文件。 2. **安装步骤** - 运行安装程序,默认勾选所有组件(包括 VirtualBox、Git、Docker CLI)。 - 安装完成后,桌面生成 `Docker Quickstart Terminal` 快捷方式。 3. **验证安装** 打开 `Docker Quickstart Terminal`,输入命令: ```bash docker run hello-world ``` 若显示 `Hello from Docker!` 则安装成功。 --- #### **二、小皮面板与 Docker 集成** 小皮面板本身不直接管理 Docker 容器,但可通过以下方式协作: 1. **反向代理配置** 在 phpStudy 的 Nginx/Apache 中配置反向代理,将请求转发到 Docker 容器: ```nginx # Nginx 示例(将域名代理到容器的 8080 端口) server { listen 80; server_name your-domain.com; location / { proxy_pass http://192.168.99.100:8080; # Docker 虚拟机默认 IP proxy_set_header Host $host; } } ``` > **注意**:Docker Toolbox 的虚拟机 IP 默认为 `192.168.99.100`,可通过 `docker-machine ip default` 查看 [^2]。 2. **管理 Docker 容器** - **命令行管理**:使用 `Docker Quickstart Terminal` 执行常规 Docker 命令(如启动/停止容器)。 - **Portainer 可视化**:部署轻量级管理工具: ```bash docker run -d --name portainer -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ --restart=always portainer/portainer ``` 访问 `http://192.168.99.100:9000` 即可通过 Web 界面管理容器 [^2]。 --- #### **三、关键配置注意事项** 1. **虚拟机网络问题** - Docker 容器端口需映射到 VirtualBox 虚拟机,例如: ```bash docker run -d -p 8080:80 --name my-web nginx # 将容器 80 端口映射到虚拟机 8080 ``` - 小皮面板中配置代理时,目标地址为虚拟机 IP(非 `localhost`)。 2. **防火墙设置** 在 Windows 防火墙中开放所需端口 [^4]: - 控制面板 → 系统和安全 → Windows 防火墙 → 高级设置 → 新建入站规则。 - 允许 TCP 端口(如 80、9000、8080)。 3. **数据持久化** 容器数据目录需挂载到虚拟机,再通过共享文件夹映射到宿主机: ```bash # 创建数据卷 docker volume create my-data docker run -d -v my-data:/app/data --name my-app your-image ``` --- #### **四、优化建议** 1. **脚本自动化** 将常用 Docker 命令(如启动/停止容器)写入批处理脚本(`.bat`),通过小皮面板的「计划任务」功能定时执行。 2. **版本兼容性** - Docker Toolbox 最新版兼容 Windows Server 2012 R2 [^1]。 - 避免使用依赖 Hyper-V 的功能(Windows Server 2012 R2 不支持)。 3. **安全加固** - 限制 Portainer 访问 IP:通过 Nginx 配置 IP 白名单。 - 定期更新 VirtualBox 和 Docker Toolbox。 --- #### **相关问题** 1. Docker Toolbox 在 Windows Server 2012 R2 上的常见故障如何解决? 2. 如何通过小皮面板监控 Docker 容器的资源使用情况? 3. 能否在小皮面板中直接集成 Docker 管理界面? 4. 如何配置 Docker 容器与 phpStudy 的 MySQL 服务通信? 5. Windows Server 2012 R2 下 Docker 容器性能优化的方法有哪些? [^1]: Docker Toolbox 是旧版 Windows 系统运行 Docker 的唯一方案,需依赖 VirtualBox 虚拟机。 [^2]: 端口映射和 `--restart=always` 可确保容器服务持续运行。 [^3]: Windows Server 2012 R2 需通过工具链间接支持容器化部署。 [^4]: 入站规则是 Windows 防火墙放行流量的关键配置。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值