百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Docker 常用环境搭建 利用docker搭建http服务器

suiw9 2024-11-08 14:53 59 浏览 0 评论

Docker 安装nginx

nginx 镜像的默认端口为 80

# 下载nginx镜像
# 一般直接下载nginx即可,如果有特殊版本需求可以直接去dockerhup网站查询相应的版本列表
# PS:带alpine的镜像为瘦身版镜像
$ docker pull nginx
# 查看当前镜像【判断是否下载完成】
$ docker images
# 启动镜像
$ docker run -d --name nginx-alpine-01 -p 8080:80 nginx
# 查看启动后的容器
$ docker ps

Docker 安装Tomcat

tomcat 官方镜像的默认端口是 8080 端口,且官方默认镜像为最小镜像,会剔除多余的文件,若需要打开默认页面的话,直接进入容器,修改 webapp.dist 目录为 webapp ,即可打开默认网站页面

# 启动tomcat镜像
# 宿主机端口:9090
# 容器端口:8080
# 容器WEB目录:/usr/local/tomcat/webapps
# 宿主机目录:/home/xiaoyutab/Downloads/JavaBridge
$ docker run -d \
    --name tomcat-01 \
    -p 9090:8080 \
    -v /home/xiaoyutab/Downloads/JavaBridge:/usr/local/tomcat/webapps \
    tomcat
# 命令基本大同小异,所以此处仅写了一个启动命令

Docker 安装 php

php-fpm 为推荐安装的镜像文件,默认启用端口为 9000 端口,fpm 的根目录为 /www ,默认安装扩展的命令为 docker-php-ext-install ,默认启用扩展的命令为 docker-php-ext-enable redis

# 安装php-fpm7.4镜像
$ docker pull php:7.4-fpm
$ docker run -itd --name php-fpm-7.4 -p 9000:9000 -v /home/wwwroot:/home/wwwroot php:7.4-fpm

Docker 安装ES + ElasticHD

ES的特点:

  1. 暴露的端口很多
  2. 十分消耗内存
  3. 数据需要放置到安全目录(挂载)
# 下载ES
# 此命令安装的es版本有些低(默认为),所以下方的几个命令用来指定常用版本以便搜索使用
$ docker pull elasticsearch
$ docker pull elasticsearch:8.7.0
$ docker pull elasticsearch:7.17.9
# 运行ES搜索
$ docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch
# 因ES太过于占内存,一启动就需要1.x到3G内存,所以有时一启动ES就会直接卡死,所以我们需要给ES进行内存限制
# 因ES是使用java开发的,所以我们可以使用-e进行修改JAVA的配置,用以限制其内存用量
# 限制启动64m内存,最大128m内存(实测占用内存约为240M)
$ docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch
# 查看ES运行状态
$ curl 127.0.0.1:9200
{
  "name" : "7OltMaD",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "tieiXDzIQXCBZfZjuAot1Q",
  "version" : {
    "number" : "5.6.12",
    "build_hash" : "cfe3d9f",
    "build_date" : "2018-09-10T20:12:43.732Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}
# 安装ElasticHD
$ docker run -p 9800:9800 -d --link elasticsearch containerize/elastichd
# 检查运行状态
$ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
d6a680d49f22   containerize/elastichd   "ElasticHD"              4 seconds ago   Up 3 seconds   0.0.0.0:9800->9800/tcp, :::9800->9800/tcp                                              exciting_austin
590e19c45f33   elasticsearch            "/docker-entrypoint.…"   7 minutes ago   Up 7 minutes   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
# 查看当前运行状态
# ElasticHD为可视化工具,所以我们此时可以直接在浏览器中打开localhost:9800进行连接
# 若连接不上ES,需输入地址【http://elasticsearch:9200】进行连接

Docker 安装MariaDB

# 下载mariadb【mysql同理,但是mysql 8以后的密码验证规则修改了,连接时可能会报错,建议使用8以前的版本】
$ docker image pull mariadb
# 运行mariadb
# 本地配置:/home/mysql/data MySQL数据存储目录
# 绑定端口:3366                 开放本机端口
# 密码配置:root123              配置MySQL连接密码
$ docker run --name mysql01 -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 -p 3366:3306 -d mariadb

Docker 安装PolarDB-X

PolarDB-X 作为阿里云主打的一款企业云上服务器,此处仅提供一个测试部署服务,详情配置服务请前往官网进行查看

特点:面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。

# 下载PolarDB-X镜像
$ docker pull polardbx/polardb-x
# 部署PolarDB-X
# 1. 创建PolarDB-X容器[快速启动一个具有一个 CN、一个 DN 和一个 CDC 进程的 PolarDB-X]
$ docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x
# 1.1. 链接数据库(因启动过程,此时需要等待大概一分钟左右)
$ mysql -h192.168.3.167 -P8527 -upolardbx_root -p123456
# 2. 启动一个包含容器的服务
$ docker run -d --name some-dn-and-gms --env mode=dev -p 4886:4886 -p 32886:32886 polardbx/polardb-x
# 2.1 等待容器运行,在容器中尝试以下命令以获取帐户my_polarx的密码,该密码可以在您的CN服务器中使用
$ mysql -h127.0.0.1 -P4886 -uroot -padmin -D polardbx_meta_db_polardbx -e "select passwd_enc from storage_info where inst_kind=2"

Docker 安装 Calibre-webserver

# 搜索 Calibre-webserver 镜像
$ docker images search calibre-web
# 我们此处选择 technosoft2000/calibre-web 版,虽然不是官方的,但是胜在大部分信息都已经配置好了
$ docker image pull technosoft2000/calibre-web # 此命令中的 image 可省略
# 进行挂载运行
# 设置挂载目录为:/home/golang_gin/CalibreData
# 设置外部端口为8083
$ docker run -d \
    --name=calibre-web \
    --restart=always \
    -v /home/golang_gin/CalibreData:/books \
    -p 8083:8083 \
    technosoft2000/calibre-web
# 当然,上面的镜像太大,我们也可以使用官方镜像,官方镜像就比较小了,对于上面的1.xGB来说,只有六七百MB
$ sudo run -d \
  --name=calibre-web \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/London \
  -e DOCKER_MODS=linuxserver/calibre-web:calibre `#optional` \
  -e OAUTHLIB_RELAX_TOKEN_SCOPE=1 `#optional` \
  -p 8083:8083 \
  -v /path/to/data:/config \
  -v /path/to/calibre/library:/books \
  --restart unless-stopped \
  lscr.io/linuxserver/calibre-web:latest

Docker 安装 PolarDB-X

# 拉取PolarDB-X容器镜像
$ docker pull polardbx/polardb-x
# 启动 PolarDB-X 容器
# 使用宿主机的3306端口映射容器的8527端口,用于替代MySQL服务
# PS:原因:PolarDB-X 完美兼容MySQL5.7
$ docker run -d \
    --name some-polardb-x \
    -p 3306:8527 \
    polardbx/polardb-x

Docker 安装 NSQ

# 下载nsq镜像
$ docker pull nsqio/nsq
# 启动nsq的lookup程序
$ docker run -d --name lookupd -p 4160:4160 -p 4161:4161 nsqio/nsq /nsqlookupd
# 启动nsq的nsqd程序(假设当前IP为130.130.4.166)
# 详细文档:https://nsq.io/components/nsqd.html
# --broadcast-address 广播地址
# --data-path 硬盘存储目录
# --lookupd-tcp-address lookupd服务所在的IP,默认本机
# --max-req-timeout 延时队列支持的最大延迟时间,默认3600000毫秒(1小时),单位毫秒
# --msg-timeout 失败后自动重试时长,单位毫秒,默认6000(1分钟)【重试次数由消费者进行手动确定限制】
$ docker run -d \
    --name nsqd \
    -p 4150:4150 \
    -p 4151:4151 \
    -v /home/xiaoyutab/Documents/wget/nsq:/media/nsq \
    nsqio/nsq /nsqd \
    --broadcast-address=130.130.5.113 \
    --data-path /media/nsq \
    --lookupd-tcp-address=130.130.5.113:4160
# 可选,启动nsq-admin服务
$ docker run -d \
    --name nsqadmin \
    -p 4171:4171 \
    nsqio/nsq /nsqadmin --lookupd-http-address=130.130.5.113:4161
# 启动nsq-admin后,就可以访问【http://130.130.4.166:4171/nodes】进行在线管理了

Docker 安装alist

# alist是一款支持多种存储的目录文件列表程序,支持web浏览与webdav(只读),后端基于gin,前端使用react。
# 开放端口:
# docker源:xhofe/alist
# 下载镜像
$ docker pull xhofe/alist
# 启动alist的容器
# 官方推荐启动方式
$ docker run -d \ # 后台启动
    --restart=always \ #  开机启动,失败重启
    -v /etc/alist:/opt/alist/data \ # 文件挂载,本地/etc/alist挂载到容器内的/opt/alist/data
    -p 8088:5244 \ # 端口映射,本地8088端口映射容器内的5244端口
    -e PUID=0 \ # 设置ENV变量
    -e PGID=0 \ # 设置ENV环境变量
    -e UMASK=022 \ # 设置ENV环境变量
    --name="alist" \ # 设置名称
    xhofe/alist:latest
# 个人机器建议启动方式
$ docker run -d -p 8088:5244 --name "alist" xhofe/alist:latest
# 查看密码操作
$ docker exec -it alist ./alist admin



相关推荐

10款超实用JavaScript音频库(js播放音频代码)

HTML5提供了一种新的音频标签实现和规范用一个简单的HTML对象而无需音频插件来控制音频。这只是一个简单的整合这些新的HTML5音频特征及使用JavaScript来创建各种播放控制。下面将介绍10款...

Howler.js,一款神奇的 JavaScript 开源网络音频工具库

o...

PROFINET转Modbus网关——工业协议融合的智能枢纽

三格电子SG-PNh750-MOD-221,无缝连接Profinet与Modbus,赋能工业物联产品概述...

简单实用的Modbus类库,支持从站和DTU

一、简介...

[西门子PLC] S7-200 SMART PROFINET :通过GSD组态PLC设备

从S7-200SMARTV2.5版本开始,S7-200SMART开始支持做PROFINETIO通信的智能设备。从而,两个S7-200SMART之间可以进行PROFINETI...

Modbus(RTU / TCP)有什么异同(modbus tcp和tcp)

Modbus是一种广泛使用的工业自动化通信协议,它支持设备之间的数据交换。Modbus协议有两个主要的变体:ModbusRTU(二进制模式)和ModbusTCP(基于TCP/IP网络的模式)。尽管...

Modbus通信调试步骤详解(modbus调试工具怎么用)

Modbus通信调试步骤详解  Modbus通信分为串口和以太网,无论是串口还是以太网,只要是标准Modbus,就可以用Modbus模拟器进行调试。按以下几步进行调试。...

理解Intel手册汇编指令(intel 汇编指令手册)

指令格式...

「西门子PLC」S7-200 SMART的Modbus RTU通讯

S7-200SMART集成的RS485端口(端口0)以及SBCM01RS485/232信号板(端口1)两个通信端口可以同时做MODBUSRTU主站,或者一个做MODBUSRTU主站一个做MO...

InfiniBand网络运维全指南:从驱动安装到故障排查

一、InfiniBand网络概述InfiniBand(直译为“无限带宽”技术,缩写为IB)是一种用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。它...

一加回归 OPPO,背后的秘密不可告人

有这样一个手机品牌,它诞生于互联网品牌。在大众群体看来,它的身世似乎模糊不清,许多人以为它是国外品牌。它的产品定位是极客群体,深受国内发烧友,甚至国外极客玩家喜爱。...

[西门子PLC] S7-200SMART快速高效的完成Modbus通信程序的设计

一、导读Modbus通信是一种被广泛应用的通信协议,在变频器、智能仪表还有其他一些智能设备上都能见到它的身影。本文呢,就把S7-200SMART系列PLC当作Modbus主站,把...

狂肝10个月手搓GPU,他们在我的世界中玩起我的世界,梦想成真

梦晨衡宇萧箫发自凹非寺量子位|公众号QbitAI自从有人在《我的世界》里用红石电路造出CPU,就流传着一个梗:...

[西门子PLC] 博途TIA portal SCL编程基础入门:1-点动与自锁

一、S7-SCL编程语言简介...

工作原理系列之:Modbus(modbus工作过程)

MODBUS是一种在自动化工业中广泛应用的高速串行通信协议。该协议是由Modion公司(现在由施耐德电气公司获得)于1979年为自己的可编程逻辑控制器开发的。该协议充当了PLCS和智能自动化设备之间的...

取消回复欢迎 发表评论: