windows docker 安装挂载常用服务

456 阅读3分钟

docker 安装 redis

生成容器并运行:

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v D:\docker\redis\config\redis.conf:/etc/redis/redis.conf -v D:\docker\redis\data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 888888

命令说明:

–restart=always 总是开机启动
–log是日志方面的
-p 6379:63796379端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载 D:\docker\redis\config\redis.conf 这里是将 liunx 路径下的/etc/redis/redis.conf和外部文件挂载 D:\docker\redis\data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf :以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes :开启redis 持久化
–requirepass 888888 :设置密码 

docker 安装mongodb

生成容器并运行:

docker run -d --name mongo -v D:\docker\mongodb\data:/data/db  -v D:\docker\mongodb\config:/data/configdb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 --restart=always  mongo

命令说明:

run:启动名称
-d  在后台运行容器,并且打印容器id
--name mongo  给创建的容器取的容器名称
-v D:\docker\mongodb\data:/data/db  给容器内部的数据文件指向D:\docker\mongodb\data ,即删除了容器,容器数据也不会丢失,下次创建容器继续挂载到D:\docker\mongodb\data即可看到删除容器之前的数据
-p 27017:27017     端口映射    前面是外部访问端口:后面内部开发的端口
-e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456  指定容器内的环境变量 初始化容器账号、密码
--restart=always   容器挂掉后自动重启
mongo  镜像名   也可用镜像id

docker 安装mysql

生成容器并运行:

docker run -itd --restart=always --name mysql5.7 -p 3306:3306  -v D:\docker\mysql\data:/var/lib/mysql  -v D:\docker\mysql\conf/mysql:/etc/mysql  -v D:\docker\mysql\log:/var/log/mysql -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7  --character-set-server=utf8mb4  --collation-server=utf8mb4_general_ci

命令说明:

run:启动名称
--itd 后台运行
--restart=always 设置开机重启
--name  mysql5.7 设置该容器的名称,这儿是自定义,可以自由备注
-p 设置端口号映射,容器外端口:容器内端口
-v 卷挂载 (容器外目录:容器内目录)这儿我们对数据目录、配置文件目录和日志目录进行了挂载,类似这些需要被持久化的数据,需要的存储至容器外,避免容器删除后数据的丢失
-e msyql的环境配置

mysql安装注意:

运行容器时没有启动成功,看日志可能会出现如下错误:

command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.9eG6SycqdR  
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)  
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

解决办法:

先随意创建一个mysql容器:

docker run -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7

查看运行的容器,然后将mysql容器中的/etc/mysql中的mysql目录下的文件复制到宿主机D:\docker\mysql\conf目录下
命令格式:docker cp 容器id:容器内目录 宿主机目录。

ps

docker cp 4b1a0fe53315:/etc/mysql/ D:\docker\mysql\conf

然后把随意创建的mysql容器删掉:

docker rm -f 4b1a0fe53315

使用之前的命令重新创建容器即可