docker run单体应用

修改docker容器时区

宿主机执行:
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器名:/usr/share/zoneinfo/Asia
容器执行:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1、mysql

备注:dockerHub
docker run -p 3306:3306 --privileged=true \
--name mysql \
--restart=always \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql 

2、redis

备注:dockerHub
docker run -p 6379:6379  --privileged=true \
--name redis \
--restart=always \
-v /mydata/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /mydata/redis/data:/data \
-d redis redis-server /usr/local/etc/redis/redis.conf \
--appendonly yes 

--requirepass “password”

3、nacos

备注:nacos官网dockerHub,若为远程服务器记得端口开放除8848以外,还要开放9848、9849两个nacos偏移端口,不然服务注册会失败。

(1)默认derby持久化方式

docker run -d --privileged=true \
-e MODE=standalone \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos \
--restart=always \
nacos/nacos-server

(2)采用mysql持久化方式

docker run -d --privileged=true \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=服务器地址 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=数据库库名,需要创建数据库执行nacos-mysql.sql脚本 \
--restart=always \
nacos/nacos-server

4、RocketMq

4.1 普通docker命令执行

备注:github
这边使用官网给的host模式,当然也可以使用自定义网络模式,只要能让broker注册到namesrv就可以。

  • 注:本地测试host默认启动无法被宿主机应用访问到,删除’–net=host’参数后被宿主机访问到,恳求看到的大佬帮忙解释一下!!!

(1)启动namesrver

docker run -itd  \
-p 9876:9876 \
--privileged=true \
--name mqnamesrv \
apache/rocketmq:5.1.0 ./mqnamesrv

(2)启动broker
要保证内存够用,我有两次启动失败,都是jvm的问题,第一次报错原因:OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N,为此添加了 -XX:ParallelGCThreads=1,第二次报错:/home/rocketmq/rocketmq-4.9.4/bin/runbroker.sh: line 156: 28 Killed $JAVA ${JAVA_OPT} $@,我停掉了服务器上其他的应用并添加了-server -Xms256m -Xmx256m -Xmn128m

docker run -itd  \
--privileged=true \
--name mqbroker \
--link mqnamesrv:mqnamesrv \
-v /mydata/rocketmq/store:/tmp/store \
-e "NAMESRV_ADDR=mqnamesrv:9876" \
-e JAVA_OPT="${JAVA_OPT} -XX:ParallelGCThreads=1 -server -Xms256m -Xmx256m -Xmn128m" \
apache/rocketmq:5.1.0 ./mqbroker 

(3)启动dashboard
映射到nameserver

  docker run -d --name mqconsole \
        -p 8880:8080 \
        --link mqnamesrv:mqnamesrv \
        -e "JAVA_OPTS=-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
        -t styletang/rocketmq-console-ng

4.2 docker容器编排

# 启动mq,
version: '2'

services:
  mqnamesrv:
    image: apache/rocketmq:5.1.0 # 镜像
    command: ./mqnamesrv # command命令
    privileged: true 
    ports: # 暴露端口
      - "9876:9876"
    networks: # 网络(三个容器间通信)
      - rocketmq_network

  mqbroker:
    image: apache/rocketmq:5.1.0
    command: ./mqbroker -c ../conf/broker.conf
    privileged: true
    environment: # 环境变量
      NAMESRV_ADDR: mqnamesrv:9876
      JAVA_OPT: "-XX:ParallelGCThreads=1 -server -Xms256m -Xmx256m -Xmn128m"
    volumes: # 容器卷
      - /mydata/rocketmq/store:/tmp/store
      - D:\rocketMq_data\conf:/home/rocketmq/rocketmq-5.1.0/conf
    ports:
      - "10909:10909"
      - "10910:10910"
      - "10911:10911"
    networks:
      - rocketmq_network

  mqconsole:
    image: styletang/rocketmq-console-ng
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
    ports:
      - "8880:8080"
    networks:
      - rocketmq_network

# 自定义网络
networks: 
  rocketmq_network:
    driver: bridge

5、Jenkins

备注:dockerHubgitHub

docker pull jenkins/jenkins:lts-jdk11

docker run -itd --name=jenkins \
 -p 8180:8080 -p 50000:50000  \
 -v d:/opt/docker/jenkins:/var/jenkins_home \
 jenkins/jenkins:lts-jdk11
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值