Docker容器实践——docker部署应用系统

Docker容器实践------docker数据管理、网络与容器互联https://blog.csdn.net/xiaochenXIHUA/article/details/160136921

一、docker容器的使用

1.1、docker容器的使用流程

可以从docker官方(hub.docker.com)下载镜像;也可以直接使用dockerfile制作镜像,然后在运行容器即可。

bash 复制代码
#docker容器的运行使用命令示例
docker run --name nginx-server -p 8090:80 -d nginx:1.28.3

1.2、实际环境中的镜像、容器与仓库间的关系

1.3、基于docker的虚拟化云桌面示例

基于docker的云桌面系统(可以是市面上常见的各种系统)5秒钟左右就运行起来了,然后就可以通过浏览器访问windows云桌面环境,可进行办公、上网、游戏等各种操作。

bash 复制代码
#直接在docker中运行各种系统容器(以windows7为例)
mkdir -p /data/docker/windows7

cd /data/docker/windows7/

#注意【--device=/dev/kvm】是开启kvm硬件加速的配置,开启会让windows系统更流畅,若不支持则直接删掉即可
docker run -d \
  --restart unless-stopped \
  --name windows7 \
  -e VERSION=7u \
  -e USERNAME=admin \
  -e USER_PASSWORD="admin123456" \
  -p 8006:8006 \
  -p 13389:3389 \
  --device=/dev/kvm \
  --device=/dev/net/tun \
  --cap-add NET_ADMIN \
  -v "${PWD:-.}/windows:/storage" \
  --stop-timeout 120 \
  docker.io/dockurr/windows
  
 #若不支持kvm则使用如下命令运行容器
 docker run -d \
  --restart unless-stopped \
  --name windows7 \
  -e VERSION=7u \
  -e USERNAME=admin \
  -e USER_PASSWORD="admin123456" \
  -e KVM=N \
  -p 8006:8006 \
  -p 13389:3389 \
  --device=/dev/net/tun \
  --cap-add NET_ADMIN \
  -v "${PWD:-.}/windows:/storage" \
  --stop-timeout 120 \
  docker.io/dockurr/windows

通过docker、docker-compose方式安装部署zabbix7.0 LTS监控平台https://blog.csdn.net/xiaochenxihua/article/details/153319319

二、docker容器可视化管理工具Portainer

2.1、Portainer简介

Portainer是一个可视化的容器镜像的图形管理工具,可以轻松构建,管理和维护Docker环境。 它可以与Docker、Docker Swarm、Kubernetes 和无服务器环境(如 Azure ACI)无缝协作。而且完全免费,基于容器化的安装方式,方便高效部署。

Portainer有多种部署方式,可以通过docker run方式运行,也可以通过docker-compose方式来部署,本文使用docker run方式进行部署。

2.2、docker方式部署Portainer

bash 复制代码
#docker方式部署Portainer
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

#直接在网页访问portainer【https://IP:9443】设置管理员的用户名与密码

三、nginx的可视化反向代理工具

3.1、安装配置Nginx Proxy Manager工具

Nginx Proxy Manager,它是一个可视化的Nginx反向代理神器,在web界面上即可轻松配置Nginx(可以通过网页的一些设置,即可完成网站的代理配置,无需自己再手动安装Nginx、修改配置文件)。

bash 复制代码
#下载安装docker-compose方法(只用选择一个方法下载即可)
 
#1-创建【/usr/local/bin】目录
mkdir -p /usr/local/bin/
 
#2-方法一:下载最新的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
#2-方法二:下载指定版本(如:v2.40.0)的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
 
 
#3-给下载好的docker-compose二进制文件添加执行权限
chmod +x /usr/local/bin/docker-compose
 
#4-验证docker-compose是否安装成功(若输出docker compose的版本信息内容则表示成功,否则失败)
docker-compose --version
bash 复制代码
#安装部署
mkdir -p /data/docker/nginx-proxy-manager
cd /data/docker/nginx-proxy-manager/
vi docker-compose.yml

#【docker-compose.yml】文件的完整内容
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      # 主机端口:容器端口
      - '9080:80'    # 公共 HTTP 端口
      - '4443:443'  # 公共 HTTPS 端口
      - '9081:81'    # 管理后台端口
    environment:
      TZ: "Asia/Shanghai"
      # 数据库连接配置(与 db 服务严格对应)
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm123456"
      DB_MYSQL_NAME: "npm"
      # 关闭 IPv6(大多数家庭/服务器无需开启)
      DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data              # NPM 配置数据
      - ./letsencrypt:/etc/letsencrypt  # SSL 证书
    depends_on:
      - db
    networks:
      - npm-network

  db:
    image: 'jc21/mariadb-aria:latest'
    container_name: npm-mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'admin123456'    # root 密码
      MYSQL_DATABASE: 'npm'                 # 自动创建的数据库名
      MYSQL_USER: 'npm'                     # 专用数据库用户
      MYSQL_PASSWORD: 'npm123456'           # 专用数据库密码
      MARIADB_AUTO_UPGRADE: '1'
    volumes:
      - ./mysql:/var/lib/mysql  # 数据库持久化
    networks:
      - npm-network
    # 数据库不暴露端口到公网,更安全

networks:
  npm-network:
    driver: bridge
    
    
    
#执行【docker-compose.yml】文件
docker-compose up -d

#在浏览器输入【ip:9081】即可访问到Nginx Proxy Manager的管理界面
#默认邮箱【admin@example.com】 默认密码【changeme】

3.2、使用Nginx Proxy Manger工具配置反向代理

使用Nginx Proxy Manager配置反向代理操作(选择【Hosts-->Proxy Hosts-->Add Proxy Host】接着在弹窗界面输入需要反向代理的域名(如:www.ck.com)-->【需要反向代理的服务协议、IP地址、端口号】-->【可启动用(Block Common Exploits)与(Websockets Support)】-->【Save】)后直接在浏览器访问域名(如:www.ck.com)即可。

注意:

1、由于我们在这里部署的Nginx Proxy Manager应用对应的主机端口是9080,因此访问的反向代理还需要在域名后添加上9080端口(www.ck.com:9080)。

2、若使用windows电脑访问配置好的这个反向代理域名,并没有通过备案,只是自己内部使用,则需要编辑该windows电脑【C:\Windows\System32\drivers\etc】目录下的【hosts】文件,添加上这个域名信息【192.168.1.30 www.ck.com】。

还可以通过Nginx Proxy Manager申请免费ssl证书。

3.3、向Nginx Proxy Manager导入第三方申请的ssl证书

四、构建服务器监控探针

4.1、部署探针服务端程序

bash 复制代码
#构建探针服务器端程序
mkdir -p /data/github
wget https://github.com/cppla/ServerStatus/archive/refs/tags/1.1.7.tar.gz -c -P /data/github/
cd /data/github/
tar -zxvf 1.1.7.tar.gz
cd ServerStatus-1.1.7/
docker-compose -f docker-compose.yml up -d

4.2、配置探针服务端需监控的客户端

bash 复制代码
#配置探针服务端需监控的客户端(需要探针监控的客户端都需要先在如下的【config.json】文件配置上)
cd /data/github/ServerStatus-1.1.7/server
vi config.json

#【config.json】文件的【servers】节点下需要配置监控的客户端信息,如下所示(username是连接账号必须唯一;name是节点名称或IP方便自己区分即可,password是连接密码)
 "servers": [
                {
                        "username": "s01",
                        "name": "node1",
                        "type": "xen",
                        "host": "host1",
                        "location": "🇨🇳",
                        "password": "USER_DEFAULT_PASSWORD",
                        "monthstart": 1
                },
                {
                        "username": "s02",
                        "name": "node2",
                        "type": "vmware",
                        "host": "host2",
                        "location": "🇯cn",
                        "password": "USER_DEFAULT_PASSWORD",
                        "monthstart": 1
                },
                {
                        "disabled": true,
                        "username": "s03",
                        "name": "node3",
                        "type": "hyper",
                        "host": "host3",
                        "location": "🇫🇷",
                        "password": "USER_DEFAULT_PASSWORD",
                        "monthstart": 1
                },
                {
                        "username": "s04",
                        "name": "开发环境",
                        "type": "kvm",
                        "host": "host4",
                        "location": "c n ",
                        "password": "123456",
                        "monthstart": 1
                },
                {
                        "username": "s05",
                        "name": "生产环境",
                        "type": "kvm",
                        "host": "host5",
                        "location": "c n ",
                        "password": "987654",
                        "monthstart": 1
                }
        ],
        
        
#配置后重启容器
docker restart serverstatus

4.3、部署客户端探针程序

bash 复制代码
#部署客户端探针程序(有如下三种方式可行)

#方法一:使用Shell部署:
wget --no-check-certificate -qO client-linux.py 'https://raw.githubusercontent.com/cppla/ServerStatus/master/clients/client-linux.py' && nohup python3 client-linux.py SERVER={$SERVER} USER={$USER} >/dev/null 2>&1 &  

#方法二:使用Docker部署: 
docker run -d --restart=always --name=serverstatus-client --network=host --pid=host -e SERVER=127.0.0.1 -e USER=s01 cppla/serverstatus:client

#方法三:使用Docker-compose部署: 
SERVER=127.0.0.1 USER=s01 docker compose -f docker-compose-client.yml up -d --force-recreate



#docker环境变量: 
SERVER --- 可选 - 默认 127.0.0.1
USER --- 可选 - 默认 s01
PORT --- 可选 - 默认 35601
PASSWORD --- 可选 - 默认 USER_DEFAULT_PASSWORD
INTERVAL --- 可选 - 默认 1
PROBEPORT --- 可选 - 默认 80
PROBE_PROTOCOL_PREFER --- 可选 - 默认 ipv4
PING_PACKET_HISTORY_LEN --- 可选 - 默认 100
CU --- 可选 - 默认 cu.tz.cloudcpp.com
CT --- 可选 - 默认 ct.tz.cloudcpp.com
CM --- 可选 - 默认 cm.tz.cloudcpp.com
CLIENT --- 可选 - 默认psutil, client可选
bash 复制代码
#安装python3环境
yum install curl wget python3-pip python3 -y
pip3 install requests


#client-linux.py Linux版
#1、修改 client-linux.py 中的 SERVER、username、password
python3 client-linux.py
# 2、以传参的方式启动
python3 client-linux.py SERVER=127.0.0.1 USER=s01


#后台运行与开机启动
#1-后台运行
nohup python3 client-linux.py &

#2-开机启动 (crontab -e)
@reboot /usr/bin/python3 ~/client-linux.py
相关推荐
说实话起个名字真难啊4 小时前
Docker 入门之单机常用命令总结
docker·容器·eureka
yuanzhengme5 小时前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
国产化创客5 小时前
RuView开源项目Docker+ESP32完整部署手册
物联网·docker·容器·开源·信息与通信·智能硬件·wifi-csi
PinTrust SSL证书5 小时前
Geotrust企业型OV通配符SSL
网络协议·网络安全·小程序·https·云计算·ssl
翼龙云_cloud5 小时前
亚马逊云代理商:CloudWatch vs CloudTrail 3 大核心区别与联动实战指南
云计算·aws·云服务器
SL-staff6 小时前
2026企业文档选型白皮书:功能、技术栈、私有化部署与采购建议
spring cloud·docker·微服务·kubernetes·开源·私有化部署·企业文档
曦月合一6 小时前
树莓派Debian 12 (bookworm) 系统 中Docker中运行mysql的流程
mysql·docker·容器
涛声依旧393167 小时前
Nginx+Docker 部署HTTPS站点+身份认证 完整实操一键部署脚本
nginx·docker·https
南宫萧幕7 小时前
基于上一篇文章VMware+openweb UI+ollama+docker的bug问题总结
docker·容器·bug·openweb ui