ubuntu 安装挂载mysql, redis和mongodb服务
因为有两台电脑,所以准备把ubuntu电脑作成对外服务提供,各种数据库,中间件都使用docker安装管理,然后挂载配置和日志到本地,提供给另一台电脑的对外服务。
1. 安装docker
sudo apt search docker
sudo apt install docker.io
看到很多安装都繁琐,我也还是在初步使用,如上安装暂时没有发现有什么问题,出现问题再更改吧。
# 简单的docker命令
sudo docker ps -a # 查看容器状态,在这可以看到容器的名字,id,创建时间和端口信息
sudo docker images # 查看镜像
sudo docker pull something # 拉取something镜像
sudo docker run -d --name abaaba -p src_port:container_port something #后台运行something,链接本地src_port端口到container_port容器端口
sudo docker exec -it container_id /bin/bash # 进入指定id的容器
sudo docker rm -f container_id # 删除指定id的容器
sudo docker cp src_file abaaba:/d/a # 复制主机src_file文件到abaaba容器根目录下d文件夹内的a文件中;也可以反过来用,把容器内文件复制到本地
sudo docker inspect container # 查看容器的配置参数
sudo docker logs container # 查看容器输出
2.1 docker安装mysql
sudo docker pull mysql
# 如上把刚拉取的mysql跑起来看看具体信息
sduo docker run -d -p 3306:3306 --name mysql_service -e MYSQL_ROOT_PASSWORD=root mysql
sudo docker exec -it mysql_service /bin/bash
如下是mysql容器内信息:
# 可以看到容器主体信息就这样,是一个oracle打造的linux server,专门供给oracle类的服务,比如mysql
bash-4.4# cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="8.7"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.7"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:7:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.7
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.7
bash-4.4# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
bash-4.4# vim /etc/mysql/my.cnf
bash: vim: command not found
# 各种command not found
bash-4.4# apt install aaa
bash: apt: command not found
bash-4.4# dnf install vim
bash: dnf: command not found
bash-4.4# yum install aaa
bash: yum: command not found
bash-4.4#
本来是找到了conf文件,想直接在容器内部编辑一下的,结果啥习惯用的命令都没有,用yum,apt都试了一下,看来不是redhat和debian包装的豁,然后搜了一下oracle linux的包管理器(因为上面查信息看到的就是这个嘛),发现它们可以用dnf(某博客找到的,又拿来碰了一下),骗鬼的。干脆放弃,反正可以用docker cp,接下来就确定一下mysql的几个重要目录:logs,data和conf目录
bash-4.4# ls /var/lib | grep mysql
mysql
mysql-files
mysql-keyring
bash-4.4# ls /etc/mysql/
conf.d
bash-4.4# ls /var/log
mysqld.log
bash-4.4#
好,确定了那几个默认路径没错,这就算是目标所在了,默认信息可以在docker官网上看,然后对照,讲究个因地制宜。
2.2 挂载mysql重要文件到本地
知道不少信息以后就开始配置,一个是挂载mysql的日志,conf和data目录到本地,另一个就是设置mysql远程访问权限。
sudo docker run -d --restart=always -p 3306:3306 \
-v /opt/services/mysql/conf:/etc/mysql/conf.d \
-v /opt/services/mysql/logs:/var/log \
-v /opt/services/mysql/data:/var/lib \
--name mysql_service \
-e MYSQL_ROOT_PASSWORD=123456
# 看看跑起来了没
sudo docker ps -a
# 进入容器进行远程访问设置
sudo docker exec -it mysql_service /bin/bash
# 或者使用mysql客户端进行设置
sudo apt install mysql-client
mysql -uroot -p
如上,-d参数设置容器后台运行,链接好默认端口,-v参数链接本地和容器目录,也就是前面找的那几个data,log和conf文件夹了,再来设置容器名,还有几个容器内部的环境参数,具体可参考上面docker官网的信息,这里是指定一个root用户的密码,方便后续设置。
设置远程访问
bash-4.4# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
进入mysql的shell界面以后,进行以下设置:
# 进入mysql database
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
# 查看用户信息,主要确定是否有两个root用户
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
5 rows in set (0.00 sec)
# 删掉主机不限定的root用户,方便后面修改权限
mysql> delete from user where host='%' and user='root';
Query OK, 1 row affected (0.01 sec)
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
# 把删掉的用户添加回来
mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
# 刷权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
# 设置远程访问
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
上面设置要根据不同版本有所变通,然后检验一下远程访问,我用另一台电脑,连上同一个wifi,两台电脑就在同一个局域网了,网络连通性ok,然后使用服务的电脑输入mysql -h 192.168.0.100 -uroot -p
命令,要记得在使用服务的电脑也装上mysql客户端并确保命令可用,当然也可以用其他工具测试,比如navicat,可惜付费,另外就是注意ip问题了。
2.3 添加操作用户并赋以远程权限
进入mysql数据库
mysql> create user 'jam'@'%' identified by 'abcdefg123';
Query OK, 0 rows affected (0.02 sec)
mysql> create database somedb;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| somedb |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> grant all privileges on somedb.* to 'jam'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| jam | % |
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)
mysql>
然后以新建用户登录一下,看一下信息:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| somedb |
+--------------------+
3 rows in set (0.00 sec)
mysql> use somedb;
Database changed
mysql> show tables;
Empty set (0.01 sec)
mysql>
2.4 数据备份问题
在mysql中有个mysqldump命令,可以导出sql文件作为备份,也可以从文件恢复:
# PS:MYSQL_ROOT_PASSWORD是一开始运行容器时-e参数的设置,应该是定死在了容器参数中,进入容器echo一下可以看到
docker exec mysql_service sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > all-databases.sql
docker exec -i mysql_service sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < all-databases.sql
都是docker exec来控制容器执行命令来导出和导入sql文件,这里可以进行一下实验,就是在已经配置好的mysql容器导出备份文件以后,把容器删掉,然后走原路跑起来再导入前面导出的all-databases.sql,看看可否远程访问。
ok,哦了。
3.1 docker安装redis
# 老规矩
sudo docker pull redis
sudo docker run -it redis /bin/bash
上面以交互方式跑了刚pull下来的redis镜像,进入redis镜像的bash,照搬上面的路子来
# 一进来就是data目录
root@601de8c4004d:/data# ls
root@601de8c4004d:/data# cd ..
root@601de8c4004d:/# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@601de8c4004d:/#
root@020e99c6a363:/# ls /etc
adduser.conf debconf.conf fstab host.conf ld.so.cache mke2fs.conf pam.conf rc1.d resolv.conf skel xattr.conf
alternatives debian_version gai.conf hostname ld.so.conf motd pam.d rc2.d rmt subgid
apt default group hosts ld.so.conf.d mtab passwd rc3.d security subuid
bash.bashrc deluser.conf group- init.d libaudit.conf netconfig passwd- rc4.d selinux systemd
bindresvport.blacklist dpkg gshadow issue localtime nsswitch.conf profile rc5.d shadow terminfo
cron.d e2scrub.conf gshadow- issue.net login.defs opt profile.d rc6.d shadow- timezone
cron.daily environment gss kernel logrotate.d os-release rc0.d rcS.d shells update-motd.d
root@020e99c6a363:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@020e99c6a363:/# apt install vim
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package vim
root@020e99c6a363:/#
情况差不多,许多容器相关信息都在etc里面,查看系统版本信息,是Debian,还好,是apt包管理,不过试了一下安装vim包,没成功,那就是需要给添加apt源信息了,不过这里不重要,知道个容器情况就行。继续往下:
root@601de8c4004d:/# ls /etc/redis
ls: cannot access '/etc/redis': No such file or directory
root@601de8c4004d:/# ls /usr/local/etc/redis
ls: cannot access '/usr/local/etc/redis': No such file or directory
root@601de8c4004d:/# ls /usr/local/etc
root@601de8c4004d:/#
其实上面已经看过了,etc目录中并没有redis目录,查了一下,好像会有个默认目录在/usr/local/etc中,但还是没有,后续跟进是,好像配置是硬编码写进配置了(别人这么说的),那就魔改一下别人的成功经验:
# 直接挂载data目录和redis.conf文件(该文件只是touch了一下,没有实际内容),只是为了确认一下想要配置运行直接映射是否可行(redis-server /usr/local/etc/redis/redis.conf 这个命令不可少,是容器内执行的)
sudo docker run -d --name redis_test -p 6379:6379 --restart always \
-v /opt/services/redis/data:/data \
-v /opt/services/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf redis \
redis-server /usr/local/etc/redis/redis.conf
# 查看一下运行日志,不过慢了一步,30m看不全
sudo docker logs --since 30m redis_test
sudo docker ps -a
# 进去看看情况
sudo docker exec -it redis_test /bin/bash
如下:
root@e08cc1aea8f0:/data# redis-cli
127.0.0.1:6379> get s1
(nil)
127.0.0.1:6379> quit
root@e08cc1aea8f0:/data# exit
exit
3.2 进行配置
好歹是跑起来了,证明方法可用,后续就正式编写redis.conf文件还有搭配上一些密码参数,嗯,主要是想使用它作为python的任务队列,暂时不做过多设置,删掉它重开一个:
# 检验服务开启的准备,本地安装客户端
sudo apt install redis-tools
sudo docker rm -f redis_test
因为redis的日志好像要写进配置里面才会有输出文件,所以还是写一下配置吧:
sudo vim /opt/service/redis/conf/redis.conf
# 打开写进去的内容
# 确立工作目录
dir /data
# 显式指名日志文件
logfile /data/redis.log
# 设置日志输出等级
loglevel verbose
然后把容器跑起来
sudo docker run -d --name redis_service -p 6379:6379 --restart always \
-v /opt/services/redis/data:/data \
-v /opt/services/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /opt/services/redis/log/redis.log:/data/redis.log \
redis redis-server /usr/local/etc/redis/redis.conf \
--requirepass 123456
跑起来以后,看了一下日志输出,有个waring,啥回事?好像和性能指标有关:
1:M 21 Apr 2023 12:38:13.039 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
听人劝吃饱饭,日志都给出办法了,那就试一下吧,编辑/etc/sysctl.conf文件,末尾添加上vm.overcommit_memory = 1,后面简单差了一下vm.overcommit_memory参数,是指定内核分配内存方式的,嗯,没问题。一键重启,再继续测试,另外的电脑输入命令:
PS D:\Desktop> redis-cli -h 192.168.0.100 -p 6379
192.168.0.100:6379> auth 123456
OK
192.168.0.100:6379> exit
PS D:\Desktop>
如果远程PC无法登录,可以本地检查一下服务是否开起来了:
# 看容器运行状态
sudo docker ps -a
# 看容器运行日志
sudo docker logs --since 30m redis_service
# 检查服务
jam@jam:~$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> get s1
(nil)
127.0.0.1:6379> exit
jam@jam:~$ redis-cli -h 192.168.0.100 -p 6379
192.168.0.105:6379> auth 123456
OK
192.168.0.105:6379> get s1
(nil)
192.168.0.105:6379> exit
jam@jam:~$
如果有问题呢,可以查一下是否需要关一下protected-mode,还有bind一下0.0.0.0的ip使得远程ip可访问,还有端口等等,这些检查都是建立在命令输入无误的前提。
3.3 备份和恢复
在上面已经配置好工作目录的前提,进入redis数据库,输入save命令得到dump.rdb备份文件,想要恢复,就把该文件移动到redis的工作目录并重启,不过这是容器,如果涉及容器删除那就docker cp一下文件到容器内部吧。
4.1 下载安装mongodb
mysql是输入关系型数据库(RDBMS),而redis和mongodb则是非关系型(NON-RDBMS,not only的意思,记得是这样),mongodb则是和json适配性特别好的一个数据库。
jam@jam:~$ sudo docker pull mongodb
Using default tag: latest
Error response from daemon: pull access denied for mongodb, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
jam@jam:~$
一上来就搞我,就很奇怪,后来才发现官方叫他mongo没有db数据库的名字,咩咩咩~!
# 还挺大只
jam@jam:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest eca1379fe8b5 3 days ago 117MB
mysql latest 8189e588b0e8 3 days ago 564MB
mongo latest 9a5e0d0cf6de 5 weeks ago 646MB
# 简单跑一下
jam@jam:~$ sudo docker run -itd --name mongo_test -p 27017:27017 mongo --auth
2540648d3ed97c888066751e95d9
跑起来的docker容器情况如下:
root@2540648d3ed9:/# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
# mongodb中的标准配置文件样式
root@2540648d3ed9:/# cat /etc/mongod.conf.orig
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
简单看了看,mongodb的日志和data目录,一个在/var/log,一个直接就在/data目录下,干脆点链接起来就是了:
# 删掉原来的
sudo docker rm -f mongo_test
sudo docker run -d --name mongo_service --restart=always -p 27017:27017 \
-v /opt/services/mongodb/data:/data \
-v /opt/services/mongodb/log:/var/log \
mongo --auth
然后进去数据库添加一下用户,现在的mongodb是版本6的,所以用mongosh命令进入数据库
jam@jam:~$ sudo docker exec -it mongo_service mongosh admin
Current Mongosh Log ID: 644551548003cd224549881c
Connecting to: mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.8.0
Using MongoDB: 6.0.5
Using Mongosh: 1.8.0
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
admin> db.createUser({user:'root',pwd:'mongo1234ad@',roles:[{role:'root',db:'admin'}]})
{ ok: 1 }
admin> db.auth('root','mongo1234ad@')
{ ok: 1 }
admin> db
admin
admin> show collections
system.users
system.version
admin> exit
如上操作,添加成功以后,就需要认证检验了,auth一下,就可以查看信息了,看看远程是否可行。en。。。。。。好像不太行,查了一下还是要编辑/etc/mongod.conf.orig文件,那就copy出来,改完以后再copy回去,也就懒得在docker里面安装vim了:
sudo docker cp mongo_service:/etc/mongod.conf.orig mongod.conf
# 修改bindIp参数的127.0.0.1为0.0.0.0,如果是注释,记得去掉当前注释
vim mongod.conf
sudo docker cp mongod.conf mongo_service:/etc/mongod.conf.orig
# 重启一下
sudo docker restart mongo_service
末 一些常见的错误
权限不够
jam@jam:~$ docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
这一类执行命令权限不够都可以通过添加sudo来获取管理员权限来执行命令,或者su切换root用户,在linux里面无脑sudo或者su都是比较危险的,新手熟悉了就要进阶了。
存在冲突
jam@jam:~$ sudo docker run -d -p 3306:3306 --name mysql_service mysql -e MYSQL_ROOT_PASSWORD=123456
docker: Error response from daemon: Conflict. The container name "/mysql_service" is already in use by container "9784c160d23599ab183e0df49265be1db0fa99a688e21dd5c5be7bb2a1a080d5". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
上面的输出也介绍的很明白,名为mysql_service的container已存在,这种情况就是命名冲突,可以换名来跑,不过这样又可能碰上端口冲突:
jam@jam:~$ sudo docker run -d -p 3306:3306 --name mysql_s -e MYSQL_ROOT_PASSWORD=123456 mysql
8b45c45cccbaf5da304e6d56771543832e82d94ef348289640c8fa2c98d7586d
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql_s (6eb9687ae62f473bc3e4db0c6414dd3bde9bd3aacfcdaf03e04d02154cb00b61): Bind for 0.0.0.0:3306 failed: port is already allocated.
这种情况是映射的端口冲突了,本地的3306端口只有一个,已经有一个容器在监听使用了,一个萝卜一个坑,只能换一个了:
# 因为运行失败,但还是把容器创建了,所以需要现删掉那个容器
jam@jam:~$ sudo docker rm -f mysql_s
jam@jam:~$ sudo docker run -d -p 3307:3306 --name mysql_s -e MYSQL_ROOT_PASSWORD=123456 mysql
6f12b97853ae45ce6f59a442d0154d467dd7e9898adcb06e82f44f67f9810dd6
jam@jam:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f12b97853ae mysql "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql_s
a449d76fc655 mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_service
嗯,算是勉强可以,但还有个33060的mysql_x协议端口还是有冲突,这个是MySQL Shell、MySQL Connectors和MySQL Router等客户端支持的X 协议端口,所以还是要微调,本来是通过-p参数再多个选项,但输出上看的有点迷糊,先不进行这样的同类容器的端口冲突管理吧,看看k8s有没有解决办法。
一个警告
WARNING: IPv4 forwarding is disabled. Networking will not work
如上所示,有一次在运行一个容器的时候出现上面警告,查了比较多的博客都说要编辑/usr/lib/sysctl.d里面的00-system.conf,加点东西再重启,不过我看了我的对应目录没有system.conf的文件,我就怀疑是电脑很久没重启了而已,果断reboot -f
,问题解决。
好,搞定。
后续
在查看日志的时候有个问题,就是时间问题,看了有不少的解决办法,比如Dockerfile里面设置时区,或者跑起来以后进入到容器内部进行设置,准确来说是编辑/etc/localtime,所以我采取后面的办法,不过实现的法子是挂载本地的到容器内:
... \
-v /etc/localtime:/etc/localtime
...
### 修改
上面的mysql日志没有发挥实际作用,另外也要修正一下时间问题,删掉容器,更改为:
```shell
sudo docker run -d --restart=always -p 3306:3306 --name mysql_service \
-v /etc/localtime:/etc/localtime \
-v /opt/service/mysql/data:/var/lib/mysql \
-v /opt/service/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql
然后进去修改用户权限就好,也可以用备份sql文件来回复,也省功夫,然后是redis,主要是前面的设置有点重复,使得log和data都有一份redis.log,所以改一下目录结构:
redis
├── conf
│ └── redis.conf
└── data
└── redis.log
效果如上,redis.conf文件内容不变,移移位就行,然后删掉原来的重跑一个:
sudo docker run -d --name redis_service -p 6379:6379 --restart=always \
-v /opt/service/redis/data:/data \
-v /opt/service/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /etc/localtime:/etc/localtime redis \
redis-server /usr/local/etc/redis/redis.conf \
--requirepass abaaba
顺带把时间也改过来了,然后mongodb如下:
sudo docker run -d --name mongo_service --restart=always -p 27017:27017 \
-v /opt/service/mongo/data:/data/db \
-v /opt//service/mongo/conf:/data/configdb \
-v /opt/service/mongo/log:/var/log/mongodb \
-v /etc/localtime:/etc/localtime \
mongo --auth
存疑
针对docker run -v的挂载,其实还有一些使用中的可能情况没有了解得够充分,这里还是记录下这个作为后续补充的入口吧。