如何搭建docker虚拟机测试服
作者:北七星
文章介绍如何搭建Docker虚拟机测试服,通过隔离环境、安装CentOS镜像并映射端口,配置安全组和域名转发,实现本地开发测试连接测试服数据库和Redis,感兴趣的朋友跟随小编一起学习吧
一、需求分析
优点:测试服与正式服环境隔离,配置简单,多个开发者可以共用一个测试数据库和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 <strong>#设置时区为上海(中国标准时间)</strong> 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:00 vi ~/.bash_profile # 文件末尾添加 export TIME_STYLE='+%Y/%m/%d %H:%M:%S' # 使配置立即生效 source ~/.bash_profile #查看虚拟机的IP,通常是172.17.0.2 ifconfig #查看运行程序的端口 yum install -y net-tools netstat -nlpt <strong>#安装ssh</strong> 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 <strong>#安装mysql</strong> #!注意 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 <strong>#安装redis</strong> #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 <strong>#安装nginx</strong> 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虚拟机测试服的文章就介绍到这了,更多相关docker虚拟机测试服内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!