一、需求分析

优点:测试服与正式服环境隔离,配置简单,多个开发者可以共用一个测试数据库和redis

二、安装镜像

因为正式服是装了宝塔面板,所以直接在宝塔面板上安装docker。

因为需要的虚拟机linux要有完整的系统命令,docker安装镜像为  centos/systemd

#特权模式创建容器,并把虚拟机内的 22,3306,6379端口映射到实体机的 22000,13306,16379端口

docker run -itd --privileged=true -p 22000:22 -p 13306:3306 -p 16379:6379 --name mytest systemd:latest

三、虚拟机内Linux配置和软件安装

#配置yum为阿里云的源
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum repolist #查看linux时区
timedatectl
#设置时区为上海(中国标准时间)
sudo timedatectl set-timezone Asia/Shanghai
timedatectl #虚拟机安装java
java -version
yum list java*jdk-devel
yum install java-1.8.0-openjdk-devel -y #修改ls/ll显示的时间格式 2023-07-31 15:30
vi ~/.bashrc
# 自定义 ll 命令的时间格式
alias ll='ls -l --time-style="+%Y-%m-%d %H:%M"'
# 使配置立即生效
source ~/.bashrc #查看虚拟机的IP,通常是172.17.0.2
ifconfig
#查看运行程序的端口
yum install -y net-tools
netstat -nlpt #安装ssh
yum install -y openssh-server
# 编辑 SSH 配置文件
vi /etc/ssh/sshd_config
#启动和设置开机启动
systemctl start sshd
systemctl enable sshd
systemctl status sshd
#重置root密码(是从容器进来的,本来密码不知道)
passwd root
#在实体机中测试虚拟机中的端口连接
ssh root@172.17.0.2
exit #安装mysql
#!注意 yum install -y mariadb-server 安装的是mysql5.5,版本很低
#下载mysql源安装包
yum install -y wget
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
#--nogpgcheck 不校验数字签名
yum -y install mysql-server --nogpgcheck
#启动
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
#MySQL 5.7 安装后会生成一个临时 root 密码:
cat /var/log/mysqld.log | grep password
mysql_secure_installation
#输入上面查到的默认密码,设置新密码(至少8位,必须包含 大小写字母、数字、特殊字符)
#进入mysql
mysql -p'密码'
show databases;
#开放root用户远程登录
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
quit #安装redis
#Redis 不在默认的 CentOS 仓库中,需先添加 EPEL仓库
yum install -y epel-release
yum install -y redis
systemctl start redis
systemctl enable redis
systemctl status redis
#进入redis
redis-cli
SET hello world
GET hello
quit #开放外部访问 vi /etc/redis.conf
# 注释掉bind(默认仅监听本地)
# bind 127.0.0.1
# 关闭保护模式
protected-mode no
# 设置密码
requirepass 密码
#然后重启redis
systemctl restart redis #安装nginx
yum install -y nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx
#nginx配置文件在/etc/nginx/nginx.conf
#虚拟机中的nginx不需要https #此镜像中没有防火墙,不需要打开防火墙端口
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload #清理yum的硬盘空间
yum clean all

四、回到实体机中

测试端口和开放防火墙端口

telnet 172.17.0.2 3306
quit
telnet 172.17.0.2 6379
quit
telnet 172.17.0.2 80
quit #开放防火墙端口
firewall-cmd --permanent --add-port=22000/tcp
firewall-cmd --permanent --add-port=13306/tcp
firewall-cmd --permanent --add-port=16379/tcp
firewall-cmd --reload

阿里云等的安全组,添加开放端口(最好指定IP)

#服务器配置系统hosts,把demo域名指向docker内网IP

vi /etc/hosts
172.17.0.2 demo.batsing.com

Nginx中配置vhost,将demo域名转发到域名自身

server {
listen 80;
server_name demo.batsing.com;
location / {
proxy_pass http://demo.batsing.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}

#虚拟机中配置网站
#参考一般的网站配置即可

五、本地开发与测试

日常用 batsing.com:22000 登录测试服,更新代码重启等

本地开发测试,数据库连接远程的 batsing.com:13306 ,Redis连接远程的 batsing.com:16379

搭建docker虚拟机测试服的更多相关文章

  1. 在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务

    本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等.希望能够对在非X86服务器上搭建Docker仓库的同学提供参考. ...

  2. 从零搭建docker+jenkins 自动化部署环境

    从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...

  3. 基于docker/虚拟机的esp32远程工作流

    原文:基于docker/虚拟机的esp32远程工作流 工作流框图 背景说明 为什么需要这套工作流--为了满足高效和灵活的开发方式 因为我经常需要在公司和家里切换不同的电脑工作,所以编译环境需要在远程主 ...

  4. Ubuntu搭建docker环境

    一丶自己搭建Ubuntu的虚拟机(网上很多教程) PS:下带图形化界面的Ubuntu镜像,这里只说一下要装那些工具和做那些配置   安装vim         sudo apt-get install ...

  5. 如何在windows10家庭版上搭建docker

    如何在windows10家庭版上搭建docker 建议先跳到最后一条,看完之后再决定是否安装. 0X00搭建原因 首先搭docker的想法是我在复现漏洞时候,发现大佬们的复现环境都是基于docker的 ...

  6. Windows(WSL2) Linux子系统搭建Docker环境

    摘要:本文主要介绍了如何再Windows(WSL2)中启用Linux系统中,并搭建Docker环境. WSL是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux ...

  7. Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库

    目录 一:部署应用映射外部目录(持久化) 总结 二:迁移与备份(容器保存为镜像) 1.django执行gitee,项目提交到远端 2.其他操作 3.操作步骤 4.容器保存为镜像 5.把镜像打包成压缩包 ...

  8. 一步步搭建docker私有仓库并从私有仓库中下载镜像

    一步步搭建docker私有仓库 #下载镜像 docker pull registry#查看镜像 docker images #运行私有仓库,指定端口和数据卷 docker run -d -p : -v ...

  9. 从零开始搭建Docker Swarm集群

    从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...

  10. 微服务架构 - 搭建docker本地镜像仓库并提供权限校验及UI界面

    搭建docker本地镜像仓库并提供权限校验及UI界面 docker本地镜像仓库的作用跟maven私服差不多,特别是公司级或者是小组级开发好的docker仓库可以上传到本地镜像仓库中,需要用时,直接从本 ...

随机推荐

  1. AtCoder Beginner Contest 408 E-F 题解

    E. Minimum OR Path 题意 给你一个 \(N\) 个点 \(M\) 条边的无自环的无向图,第 \(i\) 条边连接 \(u_i\) 和 \(v_i\),权值为 \(w_i\). 在所有 ...

  2. 题解:CF1119D Frets On Fire

    大水题. 首先,若区间内只有一根弦,不会对答案有贡献. 我们思考如何对答案产生贡献.我们知道,对于每一个 \(s_i\),都会产生一段 \(s_i+r-l\) 的连续序列,在对 \(s\) 数组排序后 ...

  3. 数栈产品分享:Kafka—实时离不开的那个TA

    一.前言 随着技术不断的成熟及市场需求的日益旺盛,实时开发已经成为当前大数据开发不可或缺的一部分.在整个实时开发的链路中,数据采集需要写入到Kafka,数据处理也需要使用到Kafka.今天我们就针对K ...

  4. .NET应用中的高效分布式同步解决方案

    前言 在分布式系统中,多个线程.进程或服务之间常常需要并发访问共享资源,这就带来了数据同步与一致性的挑战.今天大姚给大家分享一个.NET应用中的高效分布式同步解决方案:DistributedLock. ...

  5. AI应用实战课学习总结(10)用CNN做图像分类

    大家好,我是Edison. 最近入坑黄佳老师的<AI应用实战课>,记录下我的学习之旅,也算是总结回顾. 今天是我们的第10站,一起了解CNN卷积神经网络 以及 通过CNN做图像分类任务的案 ...

  6. 8.Java Spring框架源码分析-IOC-调用BeanFactoryPostProcessor的postProcess方法

    目录 1. 要研究的代码 2. 处理BeanDefinitionRegistryPostProcessor类型的PostProcessor 2.1. 当前bean工厂是BeanDefinitionRe ...

  7. 借助HarmonyOS SDK,《NBA巅峰对决》实现“分钟级启动”到“秒级进场”

    <NBA巅峰对决>是由望尘科技推出的国内首个真实还原5V5王朝模式的操作篮球手游,提供流畅操作手感和真实篮球赛场体验.丰富的玩法在为玩家带来高质游戏体验的同时,间接带来了启动流程冗长的问题 ...

  8. C# The request was aborted: Could not create SSL/TLS secure channel. - C#

    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | Secur ...

  9. windows制作macos的U盘启动

    苹果电脑型号对应系统版本号对照表 这里参考. 系统下载 macos的系统 对比windows系统,真的是资源太少了. 有一个工具叫做 GibMacOS,一键下载Macos系统工具,我没试用过. 启动盘 ...

  10. shell 一下子创建多个 led文件

    #!bin/bash seq -f "led%0g" 0 110| xargs mkdir for((i = 0;i<36;i++)) do led="led&qu ...