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容器可视化管理工具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




