Docker部署MySQL、Redis、PostgreSQL、MongoDB、SQLServer、Elasticseach、Oracle、达梦等常用数据库

运行容器时需要挂载配置文件和数据目录,避免重启容器后,容器内的数据没了

前置准备

① 创建网络

# 创建网络,方便容器内可以通过容器名+容器端口相互访问
docker network create dev


MySQL安装与卸载

① 创建挂载目录和配置文件

# 创建MySQL配置文件
mkdir -p /apps/mysql/config
mkdir -p /apps/mysql/data

tee /apps/mysql/config/my.cnf <<-'EOF'
# 设置MySQL服务器的参数
[mysqld]

# 设置MySQL服务器的字符集和时区等参数
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+08:00'

# 最大连接数和缓冲池大小等参数
max_connections=1000
key_buffer_size=512M
query_cache_size=64M

# 设置MySQL服务器的默认编码
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 指定MySQL服务器的端口
port=3306

# 忽略MySQL表名大小写
lower_case_table_names=1

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
EOF

② 创建容器

  容器内部路径说明:

  • 日志路径:-
  • 配置文件路径:/etc/mysql/my.cnf
  • 数据存放路径:/var/lib/mysql
docker run --name mysql -p 32487:3306 --net dev \
    -v /apps/mysql/config/my.cnf:/etc/mysql/my.cnf \
    -v /apps/mysql/data:/var/lib/mysql \ 
    -e MYSQL_ROOT_PASSWORD=!QAZ2wsx \
    --cpus 1 -m 768m -d mysql:5.7.30

③ 连接测试

# 连接mysql容器内的mysql实例
docker exec -it mysql mysql -u root -p 
通过docker命令连接
通过Navicat连接

 ④ 卸载

# 停止容器并删除容器
docker stop mysql && docker rm mysql

# 删除镜像
docker rmi mysql:5.7.30

# 删除数据目录
rm -rf /apps/mysql


Redis安装与卸载

① 创建挂载目录和配置文件

# 创建目录及配置文件
mkdir -p /apps/redis/config
mkdir -p /apps/redis/logs
mkdir -p /apps/redis/data

tee /apps/redis/config/redis.conf <<-'EOF'
port 6379
logfile /var/log/redis/redis.log
dir /data
requirepass "!QAZ2wsx"
EOF

② 创建容器

  容器内部路径说明:

  • 日志存放路径:/var/log/redis
  • 配置文件路径:/usr/local/etc/redis/redis.conf
  • 数据存放路径:/data
docker run --name=redis -p 30253:6379 --net dev \
    -v /apps/redis/data:/data \
    -v /apps/redis/config/redis.conf:/usr/local/etc/redis/redis.conf \
    -v /apps/redis/logs:/var/log/redis \
    --cpus 1 -m 512m -d redis:5.0.9 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

③ 连接测试

# 连接redis实例
docker exec -it redis redis-cli -a !QAZ2wsx
通过docker命令连接
通过Navicat连接

 ④ 卸载

# 停止容器并删除容器
docker stop redis && docker rm redis

# 删除镜像
docker rmi redis:5.0.9

# 删除数据目录
rm -rf /apps/redis


Elasticsearch安装与卸载

① 创建挂载目录和配置文件

mkdir -p /apps/elk/elasticsearch/config
mkdir -p /apps/elk/elasticsearch/logs
mkdir -p /apps/elk/elasticsearch/data

tee /apps/elk/elasticsearch/config/elasticsearch.yml <<-'EOF'
# ----------------------------------- Paths ------------------------------------
# 数据存储目录
path.data: /usr/share/elasticsearch/data/
# 日志存储目录
path.logs: /usr/share/elasticsearch/logs/

# ---------------------------------- Network -----------------------------------
# 设置外网访问
network.host: 0.0.0.0
# 端口
http.port: 9200
# 是否支持跨域,默认为false
http.cors.enabled: true
# 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。
http.cors.allow-origin: "*"
EOF

② 创建容器

容器内部路径说明:

  • 日志存放路径:/usr/share/elasticsearch/logs
  • 配置文件路径:/usr/share/elasticsearch/config/elasticsearch.yml
  • 数据存放路径:/usr/share/elasticsearch/data
docker run --name elasticsearch -p 30175:9200 -p 30275:9300 --net dev \
    -v /apps/elk/elasticsearch/logs:/usr/share/elasticsearch/logs \
    -v /apps/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
	-v /apps/elk/elasticsearch/data:/usr/share/elasticsearch/data \
	-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx1024m" \
	--cpus 1 -m 1024m -d elasticsearch:7.17.24 

③ 访问测试

http://<你的ip>:30175

 ④ 卸载

# 停止容器并删除容器
docker stop elasticsearch && docker rm elasticsearch

# 删除镜像
docker rmi elasticsearch:7.17.24

# 删除数据目录
rm -rf /apps/elk/elasticsearch


MongoDB安装与卸载

① 创建挂载目录和配置文件

mkdir -p /apps/mongodb/config
mkdir -p /apps/mongodb/logs
mkdir -p /apps/mongodb/data

tee /apps/mongodb/config/mongod.conf <<-'EOF'
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

storage:
  dbPath: /data/db

net:
  bindIp: 0.0.0.0
  port: 27017

security:
  authorization: enabled
EOF

② 创建容器

容器内部路径说明:

  • 日志存放路径:/var/log/mongodb
  • 配置文件路径:/etc/mongod.conf
  • 数据存放路径:/data/db
docker run --name mongodb -p 32673:27017 --net dev \
	-v /apps/mongodb/data:/data/db \
	-v /apps/mongodb/logs:/var/log/mongodb \
	-v /apps/mongodb/config/mongod.conf:/etc/mongod.conf \
	-e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=!QAZ2wsx \
    --cpus 1 -m 512m -itd mongo

③ 连接测试

  账号/密码:root/!QAZ2wsx

docker exec -it mongodb mongosh --host localhost:27017 -u root -p '!QAZ2wsx'
通过docker命令连接
通过Navicat连接

 ④ 卸载

# 停止容器并删除容器
docker stop mongodb && docker rm mongodb

# 删除镜像
docker rmi mongo:latest

# 删除数据目录
rm -rf /apps/mongodb


SQLServer安装与卸载

① 创建挂载目录和配置文件

mkdir -p /apps/sqlserver/config
mkdir -p /apps/sqlserver/logs
mkdir -p /apps/sqlserver/data

② 创建容器

容器内部路径说明:

  • 日志路径:/var/opt/mssql/log
  • 配置文件路径:-
  • 数据路径:/var/opt/mssql/data
docker run --name sqlserver -p 30388:1433 --net dev \
	-v /apps/sqlserver/data:/var/opt/mssql/data \
	-v /apps/sqlserver/logs:/var/opt/mssql/log \
	-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=!QAZ2wsx" \
	--cpus 1 -m 1536m -d mcr.microsoft.com/mssql/server:2019-latest

③ 连接测试

  账号/密码:sa/!QAZ2wsx

docker exec -it sqlserver /opt/mssql-tools18/bin/sqlcmd -U SA -No
通过docker命令连接
通过Navicat连接

 ④ 卸载

# 停止容器并删除容器
docker stop sqlserver && docker rm sqlserver

# 删除镜像
docker rmi mcr.microsoft.com/mssql/server:2019-latest

# 删除数据目录
rm -rf /apps/sqlserver


PostgreSQL安装与卸载

① 创建挂载目录和配置文件

mkdir -p /apps/postgresql/config
mkdir -p /apps/postgresql/logs
mkdir -p /apps/postgresql/data

② 创建容器

容器内部路径说明:

  • 日志路径:/var/log/postgresql
  • 配置文件路径:/var/lib/postgresql/data/postgresql.conf
  • 数据路径:/var/lib/postgresql/data
docker run --name postgresql -p 32101:5432 --net dev \
    -v /apps/postgresql/logs:/var/log/postgresql \
    -v /apps/postgresql/data:/var/lib/postgresql/data \
    -e POSTGRES_USER=root -e POSTGRES_PASSWORD=!QAZ2wsx -e POSTGRES_DB=demo \
    --cpus 1 -m 512m -d postgres:alpine3.19

③ 连接测试

  账号/密码:root/!QAZ2wsx

docker exec -it postgresql psql -U root -d demo
通过docker命令连接
通过Navicat连接

 ④ 卸载

# 停止容器并删除容器
docker stop postgresql && docker rm postgresql

# 删除镜像
docker rmi postgres:alpine3.19

# 删除数据目录
rm -rf /apps/postgresql


Oracle安装与卸载

① 创建挂载目录

mkdir -p /apps/oracle/data

② 创建容器

容器内部路径说明:

  • 日志路径:-
  • 配置文件路径:-
  • 数据存放路径:/opt/oracle/oradata
# 拉取镜像,镜像有点大
docker pull container-registry.oracle.com/database/free:latest

# 运行容器
docker run --name oracle -p 30334:1521 -p 35500:5500 \
    -e ORACLE_PWD=oracle --net=dev \
    -v /apps/oracle/data:/opt/oracle/oradata \
    -d --cpus 1 -m 2560m container-registry.oracle.com/database/free:latest

运行之后查看容器日志等待出现如下信息即可

③ 连接测试

  账号/密码:system/oracle

docker exec -it oracle sqlplus system/oracle@FREE
通过docker命令连接
通过Navicat连接

④ 卸载

# 停止容器并删除容器
docker stop oracle && docker rm oracle

# 删除镜像
docker rmi container-registry.oracle.com/database/free:latest

# 删除数据目录
rm -rf /apps/oracle


达梦数据库安装与卸载

① 创建挂载目录

mkdir -p /apps/dm/data

② 创建容器

  • 日志路径:/opt/dmdbms/log
  • 配置文件路径:/opt/dmdbms/data/DAMENG/dm.ini
  • 数据路径:/opt/dmdbms/data
# 下载镜像文件
wget https://download.dameng.com/eco/dm8/dm8_20240715_x86_rh6_rq_single.tar

# 导入镜像文件
docker load -i dm8_20240715_x86_rh6_rq_single.tar

# 启动容器
docker run --name dm8 -p 31344:5236 --restart=always --net dev --privileged=true \
    -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e PAGE_SIZE=16 -e EXTENT_SIZE=32 \
    -e LOG_SIZE=1024 -e UNICODE_FLAG=1  -e INSTANCE_NAME=dm8_test \
    -v /apps/dm/data:/opt/dmdbms/data \
    -v /apps/dm/log:/opt/dmdbms/log \
     --cpus 1 -m 1024m -d dm8_single:dm8_20240715_rev232765_x86_rh6_64

③ 连接测试

  账号/密码:SYSDBA/SYSDBA001

docker exec -it dm8 /opt/dmdbms/bin/disql
通过docker命令连接

 ④ 卸载

# 停止容器并删除容器
docker stop dm8 && docker rm dm8

# 删除镜像
docker rmi dm8_single:dm8_20240715_rev232765_x86_rh6_64

# 删除数据目录
rm -rf /apps/dm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值