wordpress文章自动分页,网站内页seo,免费的域名注册网站,海宁网站制作最近一直在捣鼓docker#xff0c;利用测试服务器#xff0c;本着犯错就重来(重装系统)的大无畏精神#xff0c;不断尝试#xff0c;总结经验#xff0c;然后在网上搜寻一些关于docker有关的服务镜像#xff0c;并搭建起来。看着一个个服务在我的服务器跑起来#xff0c;… 最近一直在捣鼓docker利用测试服务器本着犯错就重来(重装系统)的大无畏精神不断尝试总结经验然后在网上搜寻一些关于docker有关的服务镜像并搭建起来。看着一个个服务在我的服务器跑起来那种成功的喜悦真是一件值得让人高兴的事。总结一下我成功运行的docker镜像服务觉得不错的有dnmpkaillinuxLsky Proshipyardollamawardvocechat,下面就跟随我一起来了解这些服务吧。 目录
1.前言温故知新
2.docker镜像源
3.6大应用服务
3.1 DNMP集成web
3.2 Docker容器管理shipyard
3.3 Lsky Pro图床
3.4 服务器监控ward
3.5 聊天应用VoceChat
3.6 ollama大模型
4.从零开始实操篇 4.1 安装dnmp
4.2 大模型ollama
4.3 docker可视化shipyard
4.4 Ward、Lsky Pro、VoceChat
5.总结畅想 1.前言温故知新 关于docker我接触的不多从lz的历史博客中也能看出来最初的接触也是因为搭建一个自己的phpnginx的web服务所以一切故事的开始就要从这个web服务dnmp说起了。
DNMP:基于docker搭建集成LNMPnginxmysqlphp-CSDN博客
玩转DockerLsky pro图床私有化部署大模型(OllamaOpenwebui)-CSDN博客 所谓的dnmp就是dockernginxmysqlphp的集成环境前面两篇博客已经做了汇总了。并且为了方便lz还做了一键集成脚本。 通过 bash dnmp.sh 运行脚本这里是基于lz的服务器系统为Ubuntu 22.04.4。会在当前目录下生成一个dnmp目录(tips:记住这个dnmp目录里面有一个配置文件很关键后面会用到)。
相当于安装了dockerdocker-composegit并构建了对应的dnmp容器。
不出意外的话当你访问 http://IP地址 就能看到提示dnmp安装成功的页面。
dnmp.sh
#!/bin/bash
#wget http://114.116.118.165/dnmp.sh bash dnmp.sh
# 定义颜色代码
RED\033[0;31m
GREEN\033[0;32m
NC\033[0m # 无颜色# 第一步安装 Docker、Docker Compose 和 Git
function install_tools() {echo 开始安装 Docker、Docker Compose 和 Git...# 更新软件包列表sudo apt update# 安装 Dockerif ! sudo apt install -y docker.io; thenecho -e ${RED}Docker 安装失败请检查错误并重试。${NC}exit 1fi# 安装 Docker Composeif ! curl -K -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose; thenecho -e ${RED}Docker Compose 下载失败请检查错误并重试。${NC}exit 1fiif ! sudo chmod x /usr/local/bin/docker-compose; thenecho -e ${RED}Docker Compose 权限修改失败请检查错误并重试。${NC}exit 1fi# 安装 Gitif ! sudo apt install -y git; thenecho -e ${RED}Git 安装失败请检查错误并重试。${NC}exit 1fiecho -e ${GREEN}Docker、Docker Compose 和 Git 安装完成。${NC}
}# 第二步通过 Git 克隆 DNMP 项目
function clone_dnmp() {echo 开始克隆 DNMP 项目...if ! git clone https://gitee.com/yeszao/dnmp.git; thenecho -e ${RED}Git 克隆失败请检查错误并重试。${NC}exit 1fiecho -e ${GREEN}DNMP 项目克隆成功。${NC}
}# 第三步复制配置文件并进入项目目录
function setup_dnmp() {echo 开始设置 DNMP 项目...dnmp_dirdnmp # 假设 dnmp 目录相对于当前脚本的路径# 确保 dnmp 目录存在if [ ! -d $dnmp_dir ]; thenecho dnmp 目录不存在: $dnmp_direxit 1fi# 进入 dnmp 目录并执行命令(cd $dnmp_dir {# 复制环境变量文件if ! cp env.sample .env; thenecho -e ${RED}复制 env.sample 失败请检查错误并重试。${NC}exit 1fi# 复制 docker-compose 配置文件if ! cp docker-compose.sample.yml docker-compose.yml; thenecho -e ${RED}复制 docker-compose.sample.yml 失败请检查错误并重试。${NC}exit 1fi# 启动 docker-composeif ! docker-compose up -d; thenecho -e ${RED}docker-compose up 失败请检查错误并重试。${NC}exit 1fiecho -e ${GREEN}DNMP 项目设置完成docker-compose 启动成功。${NC}}) || {echo 在 dnmp 目录中执行命令失败exit 1}
}# 主函数按顺序执行上述步骤
function main() {install_toolsclone_dnmpsetup_dnmpecho 所有操作已完成,DNMP集成环境搭建并启动成功
}# 执行主函数
main
当然什么事都不是一帆风顺的在运行这个脚本命令的过程中你可能会遇到问题
这个脚本命令大概的运行流程就是
安装docker—— 安装docker-compose——安装git——git克隆dnmp代码——cd dnmp代码目录——复制docker-compose文件——开始docker-compose up构建并运行容器 如果前面三步都进行不下去可能是因为你的系统是centos的命令不支持ssl 握手失败连接超时失败谁知道呢这里你就要想其他办法去安装了。 如果前面三步顺利的情况下你的服务器是国内的服务器在进行docker-compse up时大概率可能会出现拉取镜像超时的问题。因为国内的docker很多被禁了所以这里要找到能用的镜像源进行配置才行。
2.docker镜像源 国内的很多大厂镜像源基本都无法访问了有的就算能访问但是镜像也不全在进行docker pull时可能会出现镜像不存在的问题。
关于这个大致有两种解决办法
1.找对应服务器商提供的镜像加速地址
2.寻找第三方可用镜像源地址
再不行就网上找吧总有能用的。这里以lz的镜像源配置为例
服务器版本配置华为云 Ubuntu 22.04.4 LTS 2H4G 100GB (华为测试一核更比六核强)
vi /etc/docker/daemon.json
没有daemon.json文件就手动创建 touch daemon.json
{registry-mirrors: [https://2cc2e98fbd5b4ca482a3faf3884425e2.mirror.swr.myhuaweicloud.com,https://docker.anyhub.us.kg,https://dockerhub.jobcher.com,https://dockerhub.icu]
}
然后使用 systemctl restart docker命令重启Docker即可。然后使用docker info命令查看镜像仓库信息如果出现你所配置的源地址就说明成功了。之后可以继续去执行脚本命令bash dnmp.sh去构建了。 还有一个问题就是在利用apt下载docke和git时可能会很慢这就是apt源的问题也要进行更换。配置文件地址在/etc/apt/sources.list
清华大学开源软件镜像站
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
网易镜像开源Ubuntu镜像使用帮助
中科大开源镜像站 找到你服务器对应的版本配置之后执行apt update 更新下即可。
#更新本地包索引
sudo apt update#升级已安装的软件包:
sudo apt upgrade清理本地存储的已删除软件包的存档
sudo apt autoremove清理下载的软件包缓存
sudo apt clean 3.6大应用服务 前面的DNMP服务已经讲了接下来下面说一下lz为什么要选择这几个应用服务明明有那么多镜像。lz选择这几个自然有他的道理。下面会大致介绍并给出应用服务展示效果。
3.1 DNMP集成web 一个web站点离不开web服务器更离不开数据库再考虑到支持它的开发语言运行环境还有ssl证书配置Redis数据缓存等等各种服务更遑论他们之间要产生关联的配置。试问让你一个个安装你就不会出错吗不会那好当我没说你直接跳过看下一个吧。 而DNMP一键集成Dockerphp多版本控制nginxmysql多版本sslRedis配置。我只能说很香 3.2 Docker容器管理shipyard shipyard是一个开源的docker管理平台shipyard主要是把多个 Docker host上的 containers 统一管理支持跨越多个host意思就是可以做集群化管理Shipyard是在Docker Swarm实现对容器、镜像、docker集群、仓库、节点进行管理的web系统。界面简洁友好缺点是涉及的镜像服务有点多不像其他的几个docker容器管理可视化安装一个镜像就够了。 3.3 Lsky Pro图床 Lsky Pro也称兰空图床是一个基于PHP 8.0和Laravel框架开发的云端相册程序。它允许用户上传、管理和分享图片并提供了多种强大的功能。Lsky Pro支持多种第三方云储存服务如AWS S3、阿里云OSS、腾讯云COS等还提供了图片审核、水印、分享、商业化等多种功能。用户可以根据自己的需求选择开源版或付费版享受简单且实用的图片管理体验。 3.4 服务器监控ward Ward是一个简单而优雅的解决方案用于实时查看服务器的关键信息。它以适应性设计系统为特色支持黑暗模式让你的监控面板充满现代感。非常轻量就一个web页面能实时监控CPU内存和存储使用状态。 3.5 聊天应用VoceChat VoceChat 是一款支持独立部署的个人云社交媒体聊天服务。15MB 的大小可部署在任何的服务器上部署简单很少需要维护。前端可以内嵌到自己的网站下作为网页装饰提供客服咨询应用场景数据完全由用户自己掌握传输过程加密。支持创建聊天频道添加好友私聊等功能。 3.6 ollama大模型 ollama是一款可以使用本地的大型语言模型。启动并运行大型语言模型。运行Llama 2、Code Llama和其他模型。自定义并创建您自己的模型一般配合Openwebui可视化一起使用。支持多种模型库选择包括并不局限以下几种
(ollama run gemma)安装谷歌gemma大模型 (ollama run llama2)安装Meta llama2大模型 (ollama run qwen)安装阿里的qwen大模型
缺点是比较吃内存要运行以上几种大模型最好确保你本地服务器内存8G以上当然也可以选择小一点的模型lz的服务器2G内存运行的模型时ollama run qwen2:0.5b 就是感觉不太聪明的样子 4.从零开始实操篇 这里从头到尾实操一下lz买的是华为云的测试服务器华为云 Ubuntu 22.04.4 LTS 2H4G 100GB。因为也只有这个配置才能带的动6个应用服务啊。当然在座的各位按需安装即可。因为我是无脑一路安装可能用的都是弱密码应用服务太多等原因导致被攻击了。索性只是测试服务器lz直接重装系统即可。 不过这也算是给我们提了个醒不要忽视安全问题。在安装dnmp时别忘了改数据库默认密码另外git不用后就给卸载lz看网上说也有因为这个没设置账号密码的问题。好了题外话不多说正好趁着重装系统一切从零开始。 4.1 安装dnmp 我们一步步来。第一步先安装dnmp进入终端直接运行dnmp.sh脚本输入
# 因为lz把脚本放到了线上站点所以可以直接拉取运行。也可以本地创建运行
wget http://114.116.118.165/dnmp.sh bash dnmp.sh 进行到docker-compose up报错了找不到镜像nginx这个时候就是我前面说的要修改镜像源,当然也别忘了修改apt源。把这两个源都修改后我们再执行一次脚本。
顺序为先配置apt源-》执行脚本生成docker-》再配置docker镜像源-》再执行一次脚本 这里没有运行docker-compose up命令说明docker-compose安装失败我们手动安装下就行
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose
然后在进入dnmp目录重新构建下容器docker-compose up -d
最后访问 http:服务器IP 能看到页面就说明搞定了至此开头最难的就搞定了。
后面的应用服务的安装都是基于docker、docker-compose 安装好的基础上~
4.2 大模型ollama 这个没啥好说的就两行命令。不过要记得量力而行啊。执行下面两行命令后再安装模型就行了具体的可以去看我前面的博客。
###docker下载ollama部署
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always ollama/ollama##使用docker部署webUi页面${inner_ip}替换为你的本地ip
docker run -d -p 3000:8080 -e OLLAMA_BASE_URLhttp://${inner_ip}:11434 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main
4.3 docker可视化shipyard 这个安装有点麻烦因为涉及的镜像有点过。不过lz找到一篇脚本安装的教程。直接脚本安装就简单了。
进入dnmp目录下创建脚本文件 shipyard.sh然后执行 bash shipyard.sh 就行了
shipyard.sh
if [ $1 ! ] [ $1 -h ]; thenecho Shipyard Deploy uses the following environment variables:echo ACTION: this is the action to use (deploy, upgrade, node, remove)echo DISCOVERY: discovery system used by Swarm (only if using node action)echo IMAGE: this overrides the default Shipyard imageecho PREFIX: prefix for container namesecho SHIPYARD_ARGS: these are passed to the Shipyard controller container as controller argsecho TLS_CERT_PATH: path to certs to enable TLS for Shipyardecho PORT: specify the listen port for the controller (default: 8080)echo IP: specify the address at which the controller or node will be available (default: eth0 ip)echo PROXY_PORT: port to run docker proxy (default: 2375)exit 1
fiif [ -z which docker ]; thenecho You must have the Docker CLI installed on your \$PATHecho See http://docs.docker.com for detailsexit 1
fiACTION${ACTION:-deploy}
IMAGE${IMAGE:-dockerclub/shipyard:latest}
PREFIX${PREFIX:-shipyard}
SHIPYARD_ARGS${SHIPYARD_ARGS:-}
TLS_CERT_PATH${TLS_CERT_PATH:-}
CERT_PATH/etc/shipyard
PROXY_PORT${PROXY_PORT:-2376}
SWARM_PORT3375
SHIPYARD_PROTOCOLhttp
SHIPYARD_PORT${PORT:-8080}
SHIPYARD_IP${IP}
DISCOVERY_BACKENDetcd
DISCOVERY_PORT4001
DISCOVERY_PEER_PORT7001
ENABLE_TLS0
CERT_FINGERPRINT
LOCAL_CA_CERT
LOCAL_SSL_CERT
LOCAL_SSL_KEY
LOCAL_SSL_CLIENT_CERT
LOCAL_SSL_CLIENT_KEY
SSL_CA_CERT
SSL_CERT
SSL_KEY
SSL_CLIENT_CERT
SSL_CLIENT_KEYshow_cert_help() {echo To use TLS in Shipyard, you must have existing certificates.echo The certs must be named ca.pem, server.pem, server-key.pem, cert.pem and key.pemecho If you need to generate certificates, see https://github.com/ehazlett/certm for examples.
}check_certs() {if [ -z $TLS_CERT_PATH ]; thenreturnfiif [ ! -e $TLS_CERT_PATH ]; thenecho Error: unable to find certificates in $TLS_CERT_PATHshow_cert_helpexit 1fiif [ $PROXY_PORT 2375 ]; thenPROXY_PORT2376fiSWARM_PORT3376SHIPYARD_PROTOCOLhttpsLOCAL_SSL_CA_CERT$TLS_CERT_PATH/ca.pemLOCAL_SSL_CERT$TLS_CERT_PATH/server.pemLOCAL_SSL_KEY$TLS_CERT_PATH/server-key.pemLOCAL_SSL_CLIENT_CERT$TLS_CERT_PATH/cert.pemLOCAL_SSL_CLIENT_KEY$TLS_CERT_PATH/key.pemSSL_CA_CERT$CERT_PATH/ca.pemSSL_CERT$CERT_PATH/server.pemSSL_KEY$CERT_PATH/server-key.pemSSL_CLIENT_CERT$CERT_PATH/cert.pemSSL_CLIENT_KEY$CERT_PATH/key.pemCERT_FINGERPRINT$(openssl x509 -noout -in $LOCAL_SSL_CERT -fingerprint -sha256 | awk -F {print $2;})if [ ! -e $LOCAL_SSL_CA_CERT ] || [ ! -e $LOCAL_SSL_CERT ] || [ ! -e $LOCAL_SSL_KEY ] || [ ! -e $LOCAL_SSL_CLIENT_CERT ] || [ ! -e $LOCAL_SSL_CLIENT_KEY ]; thenecho Error: unable to find certificatesshow_cert_helpexit 1fiENABLE_TLS1
}# container functions
start_certs() {ID$(docker run \-ti \-d \--restartalways \--name $PREFIX-certs \-v $CERT_PATH \alpine \sh)if [ $ENABLE_TLS 1 ]; thendocker cp $LOCAL_SSL_CA_CERT $PREFIX-certs:$SSL_CA_CERTdocker cp $LOCAL_SSL_CERT $PREFIX-certs:$SSL_CERTdocker cp $LOCAL_SSL_KEY $PREFIX-certs:$SSL_KEYdocker cp $LOCAL_SSL_CLIENT_CERT $PREFIX-certs:$SSL_CLIENT_CERTdocker cp $LOCAL_SSL_CLIENT_KEY $PREFIX-certs:$SSL_CLIENT_KEYfi
}remove_certs() {docker rm -fv $PREFIX-certs /dev/null 21
}get_ip() {if [ -z $SHIPYARD_IP ]; thenSHIPYARD_IPdocker run --rm --nethost alpine ip route get 8.8.8.8 | awk { print $7; }fi
}start_discovery() {get_ipID$(docker run \-ti \-d \-p 4001:4001 \-p 7001:7001 \--restartalways \--name $PREFIX-discovery \microbox/etcd:latest -addr $SHIPYARD_IP:$DISCOVERY_PORT -peer-addr $SHIPYARD_IP:$DISCOVERY_PEER_PORT)
}remove_discovery() {docker rm -fv $PREFIX-discovery /dev/null 21
}start_rethinkdb() {ID$(docker run \-ti \-d \--restartalways \--name $PREFIX-rethinkdb \rethinkdb)
}remove_rethinkdb() {docker rm -fv $PREFIX-rethinkdb /dev/null 21
}start_proxy() {TLS_OPTSif [ $ENABLE_TLS 1 ]; thenTLS_OPTS-e SSL_CA$SSL_CA_CERT -e SSL_CERT$SSL_CERT -e SSL_KEY$SSL_KEY -e SSL_SKIP_VERIFY1fi# Note: we add SSL_SKIP_VERIFY1 to skip verification of the client# certificate in the proxy image. this will pass it to swarm that# does verify. this helps with performance and avoids certificate issues# when running through the proxy. ultimately if the cert is invalid# swarm will fail to return.ID$(docker run \-ti \-d \-p $PROXY_PORT:$PROXY_PORT \--hostname$HOSTNAME \--restartalways \--name $PREFIX-proxy \-v /var/run/docker.sock:/var/run/docker.sock \-e PORT$PROXY_PORT \--volumes-from$PREFIX-certs $TLS_OPTS\shipyard/docker-proxy:latest)
}remove_proxy() {docker rm -fv $PREFIX-proxy /dev/null 21
}start_swarm_manager() {get_ipTLS_OPTSif [ $ENABLE_TLS 1 ]; thenTLS_OPTS--tlsverify --tlscacert$SSL_CA_CERT --tlscert$SSL_CERT --tlskey$SSL_KEYfiEXTRA_RUN_OPTSif [ -z $DISCOVERY ]; thenDISCOVERY$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORTEXTRA_RUN_OPTS--link $PREFIX-discovery:discoveryfiID$(docker run \-ti \-d \--restartalways \--name $PREFIX-swarm-manager \--volumes-from$PREFIX-certs $EXTRA_RUN_OPTS \swarm:latest \m --replication --addr $SHIPYARD_IP:$SWARM_PORT --host tcp://0.0.0.0:$SWARM_PORT $TLS_OPTS $DISCOVERY)
}remove_swarm_manager() {docker rm -fv $PREFIX-swarm-manager /dev/null 21
}start_swarm_agent() {get_ipif [ -z $DISCOVERY ]; thenDISCOVERY$DISCOVERY_BACKEND://discovery:$DISCOVERY_PORTEXTRA_RUN_OPTS--link $PREFIX-discovery:discoveryfiID$(docker run \-ti \-d \--restartalways \--name $PREFIX-swarm-agent $EXTRA_RUN_OPTS \swarm:latest \j --addr $SHIPYARD_IP:$PROXY_PORT $DISCOVERY)
}remove_swarm_agent() {docker rm -fv $PREFIX-swarm-agent /dev/null 21
}start_controller() {#-v $CERT_PATH:/etc/docker:ro \TLS_OPTSif [ $ENABLE_TLS 1 ]; thenTLS_OPTS--tls-ca-cert $SSL_CA_CERT --tls-cert$SSL_CERT --tls-key$SSL_KEY --shipyard-tls-ca-cert$SSL_CA_CERT --shipyard-tls-cert$SSL_CERT --shipyard-tls-key$SSL_KEYfiID$(docker run \-ti \-d \--restartalways \--name $PREFIX-controller \--link $PREFIX-rethinkdb:rethinkdb \--link $PREFIX-swarm-manager:swarm \-p $SHIPYARD_PORT:$SHIPYARD_PORT \--volumes-from$PREFIX-certs \$IMAGE \--debug \server \--listen :$SHIPYARD_PORT \-d tcp://swarm:$SWARM_PORT $TLS_OPTS $SHIPYARD_ARGS)
}wait_for_available() {set e IP$1PORT$2echo Waiting for Shipyard on $IP:$PORTdocker pull ehazlett/curl /dev/null 21TLS_OPTSif [ $ENABLE_TLS 1 ]; thenTLS_OPTS-kfiuntil $(docker run --rm ehazlett/curl --output /dev/null --connect-timeout 1 --silent --head --fail $TLS_OPTS $SHIPYARD_PROTOCOL://$IP:$PORT/ /dev/null 21); doprintf .sleep 1 doneprintf \n
}remove_controller() {docker rm -fv $PREFIX-controller /dev/null 21
}if [ $ACTION deploy ]; thenset -echeck_certsget_ip echo Deploying Shipyardecho - Starting Databasestart_rethinkdbecho - Starting Discoverystart_discoveryecho - Starting Cert Volumestart_certsecho - Starting Proxystart_proxyecho - Starting Swarm Managerstart_swarm_managerecho - Starting Swarm Agentstart_swarm_agentecho - Starting Controllerstart_controllerwait_for_available $SHIPYARD_IP $SHIPYARD_PORTecho Shipyard available at $SHIPYARD_PROTOCOL://$SHIPYARD_IP:$SHIPYARD_PORTif [ $ENABLE_TLS 1 ] [ ! -z $CERT_FINGERPRINT ]; thenecho SSL SHA-256 Fingerprint: $CERT_FINGERPRINTfiecho Username: admin Password: shipyardelif [ $ACTION node ]; thenset -eif [ -z $DISCOVERY ]; thenecho You must set the DISCOVERY environment variableecho with the discovery system used with Swarmexit 1ficheck_certsecho Adding Nodeecho - Starting Cert Volumestart_certsecho - Starting Proxystart_proxyecho - Starting Swarm Managerstart_swarm_manager $DISCOVERYecho - Starting Swarm Agentstart_swarm_agentecho Node added to Swarm: $SHIPYARD_IPelif [ $ACTION upgrade ]; thenset -echeck_certsget_ipecho Upgrading Shipyardecho - Pulling $IMAGEdocker pull $IMAGEecho - Upgrading Controllerremove_controllerstart_controllerwait_for_available $SHIPYARD_IP $SHIPYARD_PORTecho Shipyard controller updatedelif [ $ACTION remove ]; then# ignore errorsset eecho Removing Shipyardecho - Removing Databaseremove_rethinkdbecho - Removing Discoveryremove_discoveryecho - Removing Cert Volumeremove_certsecho - Removing Proxyremove_proxyecho - Removing Swarm Agentremove_swarm_agentecho - Removing Swarm Managerremove_swarm_managerecho - Removing Controllerremove_controllerecho Done
elseecho Unknown action $ACTIONexit 1
fi 安装完成后访问http:服务器ip:8080 默认账号密码admin/shipyard (控制台可修改)
[rootdocker]-[~/docker-ui]-#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2308552f63a9 dockerclub/shipyard:latest /bin/controller --d… About an hour ago Up About an hour 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp shipyard-controller
1676327a4e5a swarm:latest /swarm j --addr 10.… About an hour ago Up About an hour 2375/tcp shipyard-swarm-agent
2f368d9f81df swarm:latest /swarm m --replicat… About an hour ago Up About an hour 2375/tcp shipyard-swarm-manager
c38108f757c5 shipyard/docker-proxy:latest /usr/local/bin/run About an hour ago Up About an hour 2375/tcp, 0.0.0.0:2376-2376/tcp, :::2376-2376/tcp shipyard-proxy
e610645dfe8e alpine sh About an hour ago Up About an hour shipyard-certs
c444c7df39f4 microbox/etcd:latest /bin/etcd -addr 10.… About an hour ago Up About an hour 0.0.0.0:4001-4001/tcp, :::4001-4001/tcp, 0.0.0.0:7001-7001/tcp, :::7001-7001/tcp shipyard-discovery
307b4cec4659 rethinkdb rethinkdb --bind all About an hour ago Up About an hour 8080/tcp, 28015/tcp, 29015/tcp shipyard-rethinkdb----------------------------------------------------------------------------------------
1RethinkDB
deploy首先启动的就是RethinkDB容器shipyard采用RethinkDB作为数据库来保存用户等信息
2Discovery
为了使用Swarm我们需要一个外部的密钥值存储群容器shipyard默认是采用了etcd。
3shipyard_certs
证书管理容器实现证书验证功能
4Proxy
默认情况下Docker引擎只监听Socket我们可以重新配置引擎使用TLS或者使用一个代理容器转发请求从TCP到Docker监听的UNIX Socket。
5Swarm Manager
Swarm管理器
6Swarm Agent
Swarm代理运行在每个节点上。
7Controller
shipyard控制器Remote API的实现和web的实现。
4.4 Ward、Lsky Pro、VoceChat 这三个的安装更简单了因为都是单个镜像的应用服务所以直接走docker-compose.yml配置项就好再通过docker-compose up一次性构建就行。为了不影响之前的dnmp配置。这里我们构建时采用别名的方式。
进入dnmp目录创建一个tools.yml配置文件,输入执行命令
docker-compose -f tools.yml up tools.yml #vocechat多人聊天端口3019
#lsky-pro兰空图床端口7791
#ward服务器监控工具端口4000version: 3.3
services:run:restart: unless-stoppedcontainer_name: wardports:- 4000:4000environment:- WARD_PORT4000- WARD_THEMEdark- WARD_NAMEleons-serverprivileged: trueimage: antonyleons/wardvocechat:restart: alwaysports:- 3019:3000 # 冒号左边可以改成自己服务器未被占用的端口container_name: vocechat-servervolumes:- ./data:/home/vocechat-server/data # 冒号左边可以改路径现在是表示把数据存放在在当前文件夹下的 data 文件夹中image: privoce/vocechat-server:latestlsky-pro:container_name: lsky-proimage: dko0/lsky-prorestart: alwaysvolumes:- ./data/html:/var/www/html #映射到本地ports:- 7791:80environment:- MYSQL_HOSTmysql- MYSQL_DATABASElsky-pro- MYSQL_USERlsky-pro- MYSQL_PASSWORDlsky-pro
5.总结畅想 细心的人可能发现了文章开头说的kaillinux这里没有提及。倒不是说lz没有搭建。只不过kaillinux作为专用渗透正经开发过程中基本也不咋会用到。而且kaillinux可用的工具包如nmapsqlmaphydra等等这些一时半会也是说不完的。另外lz也在了解学习中等了解差不多了。后面会专门开一篇博客来说明。从安装到使用尽量从新手的角度来进行解说。 学吧学无止境随着互联网浪潮的到来希望各位都能乘风破浪~书写自己的传奇 他强任他强清风拂山岗他卷任他卷读书破万卷