docker安装部署, docker部署tomecat, docker部署Nginx, docker部署RabbitMq, docker部署RocketMQ, docker部署MongoDB, docker部署minio, docker部署FastDFS, docker部署Mysql, docker部署redis, docker部署nacos, docker部署ZooKeeper
docker安装部署
首先需要虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
或参考doker笔记:https://www.cnblogs.com/859630097com/p/14597660.html
然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议本地情况直接关闭防火墙!
启动docker前,一定要关闭防火墙!!
启动docker前,一定要关闭防火墙!!
启动docker前,一定要关闭防火墙!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
然后输入命令,可以查看docker版本:
docker -v
(可忽略后续步骤直接使用了)更新docker的镜像源为ustc;
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker
编辑该文件:
vi /etc/docker/daemon.json
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
tomecat容器部署
1.拉取tomcat镜像
docker pull tomcat
2.创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
mkdir
3.运行容器
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v /root/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat
参数说明:
-
-p 8080:8080:将容器的8080端口映射到主机的8080端口
-v /root/tomcat/webapps:/usr/local/tomcat/webapps: 将主机中当前目录挂载到容器的webapps
Nginx容器部署
拉取nginx镜像
docker pull nginx
创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
docker run -id --name=nginx \
-p 80:80 \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/logs:/var/log/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
nginx
- 参数说明:
- -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
- **--v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf **:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- **-v /root/nginx/logs:/var/log/nginx **:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
RabbitMq容器部署
镜像拉取
docker pull rabbitmq:3.7-management
创建挂载目录
mkdir /opt/module/rabbitmq
cd /opt/module/rabbitmq
mkdir rabbitmq0
创建容器
docker run -d \
--hostname rabbitmq01 \
--name rabbitmq_node1 \
-v /opt/module/rabbitmq/rabbitmq01:/var/lib/rabbitmq \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_ERLANG_COOKIE='rabbitmqCookie' \
rabbitmq:3.7-management
测试:ip+15672端口
账号密码:guest/guest
RocketMQ容器部署
以下命令ip需替换真实ip
#部署RocketMQ
#拉取镜像
docker pull foxiswho/rocketmq:server-4.3.2
docker pull foxiswho/rocketmq:broker-4.3.2
#创建nameserver容器
docker create -p 9876:9876 --name rocket-server --restart=always \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-e "JAVA_OPTS=-Duser.home=/opt" \
-v rmqserver-logs:/opt/logs \
-v rmqserver-store:/opt/store \
foxiswho/rocketmq:server-4.3.2
#创建broker.conf文件
mkdir -p ~/rmq/rmqbroker/conf/
vim ~/rmq/rmqbroker/conf/broker.conf
brokerIP1=192.168.31.81
namesrvAddr=192.168.31.81:9876
brokerName=rocket-broker
#创建broker容器
docker create -p 10911:10911 -p 10909:10909 --name rocket-broker --restart=always \
-e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" \
-v ~/rmq/rmqbroker/conf/broker.conf:/etc/rocketmq/broker.conf \
-v rmqbroker-logs:/opt/logs \
-v rmqbroker-store:/opt/store \
foxiswho/rocketmq:broker-4.3.2
#启动容器
docker start rmqserver rmqbroker
#停止删除容器
docker stop rmqbroker rmqserver
docker rm rmqbroker rmqserver
#部署RocketMQ的管理工具
docker pull styletang/rocketmq-console-ng:1.0.0
#创建并启动容器
docker create --name rocketmq-console-ng -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.31.81:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 --restart=always styletang/rocketmq-console-ng:1.0.0
MongoDB容器部署
#创建mongo容器,增加安全认证
docker create --name mongodb -p 27017:27017 --restart=always -v mongodb:/data/db mongo:4.0.3 --auth
#启动容器
docker start mongodb
#进入容器进行设置
docker exec -it mongodb /bin/bash
#进入admin数据库
>mongo
>use admin
#添加管理员,其拥有管理用户和角色的权限
db.createUser({ user: 'root', pwd: 'root', roles: [ { role: "root", db: "admin" } ] })
#测试,发现是没有权限操作的
> show dbs
#进行认证
>mongo -u "root" -p "root" --authenticationDatabase "admin"
#或者通过db.auth()进行认证
>use admin
>db.auth("root","root");
#通过admin添加普通用户
db.createUser({ user: 'gxtest', pwd: 'l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV', roles: [ { role: "readWrite", db: "gxtest" } ] });
#通过gxtest用户登录进行测试
mongo -u "gxtest" -p "l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV" --authenticationDatabase "gxtest"
#测试
root@5d848955ff7e:/# mongo -u "gxtest" -p "l3SCjl0HvmSkTtiSbN0Swv40spYnHhDV" --authenticationDatabase "admin"
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("6c368269-30f0-4b29-a224-05a38b5847e2") }
MongoDB server version: 4.0.3
> use gxtest
switched to db gxtest
> db.user.insert({id:1,username:'zhangsan',age:20})
WriteResult({ "nInserted" : 1 })
> db.user.find()
{ "_id" : ObjectId("5f8eb2726e0de0aa9517afd3"), "id" : 1, "username" : "zhangsan", "age" : 20 }
minio容器部署
1.创建挂载目录
mkdir ~/minio
2.运行容器二选一
第一版本
docker run -d -p 9000:9000 \
--name minio \
--restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /root/minio/data:/data \
-v /root/minio/config:/root/.minio \
minio/minio:RELEASE.2021-04-18T19-26-29Z server /data
第二版本
docker run --name minio \
-p 9000:9000 \
-p 9001:9001 \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /root/minio/data:/data \
-v /root/minio/config:/root/.minio \
minio/minio server /data \
--console-address '0.0.0.0:9001'
FastDFS容器部署
1.拉取镜像
docker pull delron/fastdfs
2.创建tracker容器
docker create --network=host \
--name tracker \
--restart=always \
-v fdfs-tracker:/var/fdfs delron/fastdfs tracker
3.启动容器
docker start tracker
4.创建storage容器
docker create --network=host \
--name storage \
--restart=always \
-e TRACKER_SERVER=192.168.3.161:22122 \
-v fdfs-storage:/var/fdfs \
-e GROUP_NAME=group1 delron/fastdfs storage
5.启动容器
docker start storage
6.进入storage容器,到storage的配置文件中配置http访问的端口,配置文件在/etc/fdfs目录下的storage.conf。
docker exec -it storage /bin/bash
#默认的http端口为8888,可以修改也可以配置
# the port of the web server on this storage server
http.server_port=8888
7.配置nginx,在/usr/local/nginx目录下,修改nginx.conf文件
默认配置如下:
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
默认的存储路径为/var/fdfs/data
Mysql容器部署
1.创建挂载目录
mkdir ~/mysql
2.运行容器
docker run -id \
-p 3307:3306 \
--name=mysql_5.7 \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/logs:/logs \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
3.进入容器,操作mysql命令
docker exec -it mysql_5.7 /bin/bash
redis容器部署
1.镜像拉取
docker pull redis:5.0
2.镜像运行
docker run -id \
--name=c_redis \
-p 6379:6379 redis:5.0
nacos容器部署
docker pull nacos/nacos-server
mkdir -p /root/nacos/init.d /root/nacos/logs
touch /root/nacos/init.d/custom.properties
#添加配置
management.endpoints.web.exposure.include=*
docker run -d \
-p 8848:8848 \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /root/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /root/nacos/logs:/home/nacos/logs \
--restart always \
--name nacos \
nacos/nacos-server
ZooKeeper容器部署
#拉取zk镜像
docker pull zookeeper:3.5
#创建容器
docker create --name zk --restart=always -p 2181:2181 zookeeper:3.5
#启动容器
docker start zk
seata
不建议docker安装 因为配置不好改,建议用包部署
参考:
seata服务端搭建和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 - 赶星而至 - 博客园 (cnblogs.com)
xxl-job
太过简单,不建议docker,修改修改配置 java-jar启动的事情