Docker安装一些常用软件(更新中!)

如果有防火墙,请自行打开,避免找了半天BUG( ╯□╰ )

下一篇Docker文章:Docker基础学习文档-包括安装教程

一、安装MySQL8.0.22

拉取mysql

docker pull mysql:8.0.22

新建目录

mkdir -p /data/mysql/data
mkdir -p /data/mysql/conf
mkdir -p /data/mysql/log

编写配置文件(日后待补充)

vim /data/mysql/conf/my.cnf
# 添加以下内容
[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake

执行脚本

docker run \
--name mysql8 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.22

# 设置开机自启
docker update --restart=always 容器ID

二、安装Redis6.2.12

拉取redis

docker pull redis:6.2.12

新建目录

mkdir -p /data/redis/conf
mkdir -p /data/redis/data

拷贝配置文件

从网上下载对应版本的redis.conf配置文件,拷贝配置文件到/data/redis/conf目录下

下载地址

修改redis.conf

# 找到以下内容,进行修改
bind 0.0.0.0 #运行外部访问
daemonize no #这里一定要改成no,不要以守护线程模式运行,要不然容器在启动一瞬间就会ti
requirepass 你的密码 #给redis设置密码(不建议0开头)
appendonly yes #redis持久化  默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

执行脚本

docker run \
--name redis6 \
-p 6379:6379 \
-v /data/redis/data:/data \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:6.2.12 \
redis-server /etc/redis/redis.conf

# 设置开机自启
docker update --restart=always 容器ID

三、安装RabbitMQ3.9.4

拉取rabbitmq

docker pull rabbitmq:3.10.24

新建目录

mkdir -p /data/rabbitmq/data
mkdir -p /data/rabbitmq/plugins

执行脚本

docker run \
--name rabbitmq \
-p 5672:5672 \
-p 15672:15672 \
-v /data/rabbitmq/data:/var/lib/rabbitmq \
--hostname MasterRabbit \
-e RABBITMQ_DEFAULT_VHOST=master \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
-d rabbitmq:3.10.24

# 添加网页管理端插件
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management

# 设置开机自启
docker update --restart=always 容器ID

添加延迟队列插件

# 插件下载地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
# 一定要下载对应版本的
# 将下载好的插件拷贝到/data/rabbitmq目录下
# 将插件拷贝到容器内部
docker cp /data/rabbitmq/插件名称 rabbitmq容器id:/plugins
# 进入容器内,安装插件
docker exec -it rabbitmq容器id bash
cd plugins
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 退出容器,重启
docker restart rabbitmq容器id

四、安装Nginx

拉取nginx

docker pull nginx:stable

创建目录

mkdir -p /data/nginx/html
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/log

拷贝文件

# 生成容器
docker run --name nginx -p 80:80 -d nginx:stable
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /data/nginx/

删除容器

docker stop nginx容器id
docker rm nginx容器id

执行脚本

docker run \
--name nginx \
-p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx:stable

# 设置开机自启
docker update --restart=always 容器ID

(以下可选*)配置SSL

配置SSL需要更改执行脚本

# 脚本改为(主要是多监听一个443端口)
docker run \
--name nginx \
-p 80:80 \
-p 443:443 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/log:/var/log/nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-d nginx:stable

配置相关信息

# 下载SSL文件
# 在/data/nginx/conf/conf.d目录下创建cert文件夹
# 将xxx.pem与xxx.key文件拷贝进去
# 修改con.d目录下的default.conf
  • 修改第一个server标签内的数据
# 监听端口
listen 443;
listen [::]:443;
# 你的域名
server_name tengfei.tech;

#ssl配置
ssl on;
# pem与key文件位置,相对于conf目录
ssl_certificate conf.d/cert/tengfei.tech.pem;
ssl_certificate_key conf.d/cert/tengfei.tech.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  • 增加一个server,用于在访问80端口时重定向到443端口(在第一个server下方添加一个server)
# 用于将http都从定向到https
server {
listen 80;
#填写证书绑定的域名
server_name tengfei.tech;
#将所有HTTP请求通过rewrite指令重定向到HTTPS。
rewrite ^(.*)$ https://$host$1;
location / {
index index.html index.htm;
}
}

五、安装Nacos2.1.2

拉取nacos

docker pull nacos/nacos-server:v2.1.2

创建目录

mkdir -p /data/nacos/logs
mkdir -p /data/nacos/conf
# 创建配置文件,写入配置
touch /data/nacos/conf/application.properties
# 写入以下配置
# 基本配置
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
# 数据库配置(如果MySQL也安装在Docker内,则使用MySQL的在Docker上的Ip地址)
# 地址查询方式:docker inspect 容器|grep IPAddress
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?serverTimezone=Asia/Shanghai&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true #这里需要修改端口
db.user=root
db.password=123456
# 安全配置
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example

导入SQL(如果不使用MySQL的话这步可以忽略)

# 找到nacos-config.sql文件,导入到外部mysql中
# nacos-config.sql在nacos的github仓库有下载

执行脚本

docker run \
--name nacos \
-p 8848:8848 \
-p 9848:9848
-p 9849:9849
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /data/nacos/logs:/home/nacos/logs \
-v /data/nacos/conf/application.properties:/home/nacos/conf/application.properties \
-d nacos/nacos-server:v2.1.2

# 设置开机自启
docker update --restart=always 容器ID

访问

ip:8848/nacos
# 账号密码
nacos
nacos

六、安装MongoDB5.0.5

拉取镜像

docker pull mongo:5.0.15-focal

创建目录

mkdir -p /data/mongo/data
mkdir -p /data/mongo/conf
mkdir -p /data/mongo/logs
mkdir -p /data/mongo/configdb

编写配置文件

# 在/data/mongo/conf目录下创建mongod.conf
# 写入以下部分,除了net部分更改,其它部分不用更改
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# wiredTiger:

systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

net:
bindIp: 0.0.0.0
port: 27017

processManagement:
timeZoneInfo: /usr/share/zoneinfo

执行脚本

docker run \
--name mongo51 \
-p 27017:27017 \
-v /data/mongo/data:/data/db \
-v /data/mongo/conf/mongod.conf:/etc/mongod.conf.orig \
-v /data/mongo/logs:/var/log/mongodb \
-v /data/mongo/configdb:/data/configdb \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--privileged=true \
--restart=always \
-d mongo:5.0.15-focal \
--replSet rs0

# 设置开机自启
docker update --restart=always 容器ID

七、安装Minio2023-03-22

拉取镜像

docker pull minio/minio:RELEASE.2023-03-22T06-36-24Z

创建目录

docker run \
--name minio \
-p 9000:9000 \
-p 9090:9090 \
--restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=12345678" \
-v /data/minio/data:/data \
-v /data/minio/conf:/root/.minio \
-d minio/minio:RELEASE.2023-03-22T06-36-24Z \
server data --console-address ":9090" -address ":9000"