安装 docker

一键安装命令

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装 docker compose

参考链接:Install the Compose standalone

curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

#使用加速服务
curl -SL https://fastgit.xxcheng.cn/https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

#放开读写权限
chmod +x /usr/local/bin/docker-compose

#检查安装状态
docker-compose --version

#卸载命令
rm /usr/local/bin/docker-compose

image-20230403190528639

镜像加速

使用上海交大镜像站

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

mysql 实例

创建数据库容器卷文件夹,用于迁移和持久化

mkdir -p /app/mysql/

运行命令

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

8 版本 8.3.0

image-20230401140800201

进入容器内操作

docker exec -it mysql bash

mysql是容器ID或容器名称

image-20230401140934585

查看容器卷

image-20230401141204153

一步到位代码

docker run -d --restart=always -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

相关注意点

  • 务必注意端口和容器卷 -p 外部端口:内部端口
  • 如有多个mysql实例,记得修改命名

Redis 实例

创建数据库容器卷文件夹,用于迁移和持久化

mkdir -p /app/redis

下载默认配置文件

wget https://cdn-static.xxcheng.cn/static/blog/images/2023/04/01/1cfcf0812316aa19b2edcd165ced7cb6.conf -O /app/redis/redis.conf

修改默认配置文件

bind 0.0.0.0 #注释掉这部分,使redis可以外部访问
protected-mode yes # 保护模式
daemonize no #用守护线程的方式启动,这里是通过docker部署,所以选择no 
#必须设置为no,否则会与docker冲突
requirepass 你的密码 #给redis设置密码

image-20230401145959387

运行命令

docker run -d --privileged=true --restart always \
-p 6379:6379 \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
--name redis \
redis redis-server /etc/redis/redis.conf --appendonly yes

image-20230401150124620

image-20230401150142112

MongoDB 实例

创建数据库容器卷文件夹,用于迁移和持久化

mkdir -p /app/mongo

运行命令

docker run --name mongo -d --privileged=true --restart always \
-p 27017:27017 \
-v /app/mongo/db:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
mongo --auth

进入容器

docker exec -it mongo /bin/bash

image-20230402003234340

添加管理员账号

mongo // 进入cli

use admin  //进入到admin数据库

//创建用户,user后跟数据库账号账户名,pwd 后跟账户密码,换成你自己的。db.createUser({ user:'root',pwd:'root',roles:[ { role:'root', db: 'admin'}]});

image-20230402003348620

在容器内安装vim,修改配置

#更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig

image-20230402003840832

修改配置

1.确保注释掉`# bindIp: 127.0.0.1` 或者改成`bindIp: 0.0.0.0` 即可开启远程连接
2.开启权限认证
security:
  authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启

连接

image-20230402100950681

参考链接

基于角色的权限说明

  • 数据库用户角色

    • read: 只读数据权限
    • readWrite:学些数据权限
  • 数据库管理角色

    • dbAdmin: 在当前db中执行管理操作的权限
    • dbOwner: 在当前db中执行任意操作
    • userADmin: 在当前db中管理user的权限
  • 备份和还原角色

    • backup
    • restore
  • 跨库角色

    • readAnyDatabase: 在所有数据库上都有读取数据的权限
    • readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
    • userAdminAnyDatabase: 在所有数据库上都有管理user的权限
    • dbAdminAnyDatabase: 管理所有数据库的权限
  • 集群管理

    • clusterAdmin: 管理机器的最高权限
    • clusterManager: 管理和监控集群的权限
    • clusterMonitor: 监控集群的权限
    • hostManager: 管理Server
  • 超级权限

    • root: 超级用户

Nginx 实例

创建数据库容器卷文件夹,用于迁移和持久化

mkdir -p /app/nginx

下载nginx.conf默认配置到/app/nginx/nginx.conf

wget https://cdn-static.xxcheng.cn/static/blog/images/2023/04/02/d6fadc5b828cb14e25ccf439c1877c53.conf -O /app/nginx/nginx.conf

下载index.html默认配置到/app/nginx/html/index.html

mkdir -p /app/nginx/html && wget https://cdn-static.xxcheng.cn/static/blog/images/2023/04/02/8cde8feac6060f7151aed6cfba8b9b04.html -O /app/nginx/html/index.html

下载default.conf默认配置到/app/nginx/conf.d/default.conf

mkdir -p /app/nginx/conf.d && wget https://cdn-static.xxcheng.cn/static/blog/images/2023/04/02/7e67974f96b8ef5cf718da2f6175d610.conf -O /app/nginx/conf.d/default.conf

执行命令

docker run --name=nginx -d \
-p 8080:80 \
-p 8443:443 \
--privileged=true --restart always \
-v /app/nginx/conf.d:/etc/nginx/conf.d \
-v /app/nginx/html:/usr/share/nginx/html \
-v /app/nginx/logs:/var/log/nginx \
-v /app/nginx/www:/www \
-v /app/nginx/nginx.conf:/etc/nginx/nginx.conf \
nginx

image-20230402131512176

image-20230402131523276

参考链接