天天看点

Docker 常用环境搭建

作者:xiaoyutab

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