[Docker]redis、mysql、mongodb、splash

容器自启选项

–restart=always

可在创建容器时添加

也可在容器创建后通过update命令添加

redis

https://hub.docker.com/_/redis
docker pull redis

容器内:
配置文件路径:
/usr/local/etc/redis/redis.conf

配置文件下载连接:http://download.redis.io/redis-stable/redis.conf

数据存放路径:
/data

定义本机数据卷路径:
E:/programming/docker/redis/data
E:/programming/docker/redis/conf/redis.conf

修改启动默认配置(从上至下依次):

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

4.docker启动redis命令()

docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
设置-p 参数为127.0.0.1:6379:6379,也可设置redis为只能本地访问。

--name myredis  指定该容器名称,查看和进行操作都比较方便。

-v 挂载目录,规则与端口映射相同。

-d redis 表示后台启动redis

redis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf

--appendonly yes  开启redis 持久化

参考资料

docker安装redis并以配置文件方式启动
https://blog.csdn.net/weixin_42456466/article/details/87270959

splash

docker run -p 8050:8050 scrapinghub/splash

解决splash无法渲染页面的问题

参考资料:https://blog.csdn.net/u011796949/article/details/109124825

下载splash源码:https://github.com/scrapinghub/splash

git clone https://github.com/scrapinghub/splash.git

修改:.\splash\splash\resources.py中的js连接(共三处,搜索关键词:code.jquery.com)

<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.js"></script>
修改为:
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.js"></script>

如果不想打包镜像的话可以直接外挂数据卷启动
docker run --name mysplash -p 8050:8050 -v E:\programming\python\splash\splash:/app/splash scrapinghub/splash

也可以执行dockerfile重新打包镜像,然后启动容器

mongodb

容器内:

数据存放路径
/data/db

配置文件路径
/data/configdb

本机数据卷路径与配置文件路径:
E:/programming/docker/mongodb/data/db
E:/programming/docker/mongodb/data/configdb

开启身份认证 --auth

docker run -d -p 27017:27017 -v E:/programming/docker/mongodb/data/configdb:/data/configdb -v E:/programming/docker/mongodb/data/db:/data/db --name mongo docker.io/mongo --auth

docker exec -it mongo /bin/bash

打开mongodb shell
mongo admin

创建root权限的用户

db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "root", db: "admin" } ] });

修改用户权限
db.updateUser(“admin”,
{ user: “root”,
roles: [ “root”,“userAdminAnyDatabase” ]
}
)

db.grantRolesToUser(“admin”,
{ user: “root”,
pwd: “123456”,
roles: [
{
“role” : “root”,
“db” : “admin”
}]
}
)

删除用户
db.dropUser(‘root’)

参考资料

Docker版MongoDB的安装
https://www.jianshu.com/p/2181b2e27021

参考资料:mongodb添加修改用户,设置权限
https://blog.csdn.net/qq_19402941/article/details/77983943
http://www.cnblogs.com/mymelody/p/5906199.html

mongo
Docker Official Images
https://hub.docker.com/_/mongo?tab=description&page=1&ordering=last_updated

mysql:5.7

docker pull mysql:5.7

镜像文档

https://hub.docker.com/_/mysql?tab=description&page=1&ordering=last_updated

参考资料

Docker 安装mysql容器数据卷挂载到宿主机
http://www.likecs.com/show-63233.html

容器内配置文件路径:
/etc/mysql/mysql.conf.d/mysqld.cnf

配置文件内容

[mysqld]
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
datadir		= /var/lib/mysql
#log-error	= /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address	= 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
port=3306

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

E:/programming/docker/mysql/conf

数据存放路径:
/var/lib/mysql

E:/programming/docker/mysql/data

  1. 创建一个临时的msyql:5.7容器,目的是cp 容器里mysql的配置文件
    docker run -d -p 3306:3306 --name myMysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

  2. 复制容器中的mysql配置文件到宿主机指定目录
    从容器中将文件拷贝出来的命令:dokcer cp 容器名称:容器目录 需要拷贝的文件或目录
    docker cp myMysql:/etc/mysql E:/programming/docker/mysql/conf

  3. 停止并删除刚才创建的临时容器
    docker stop myMysql
    docker rm myMysql

  4. 创建并启动mysql:5.7容器
    docker run -d --name mysql5.7 -p 3306:3306 --restart always --privileged=true -v E:/programming/docker/mysql/conf:/etc/mysql -v E:/programming/docker/mysql/data:/var/lib/mysql -e MYSQL_USER=“tutu” -e MYSQL_PASSWORD=“123456” -e MYSQL_ROOT_PASSWORD=“123456” mysql:5.7

docker run -d --name mysql5.7 -p 3306:3306 --restart always --privileged=true -v E:/programming/docker/mysql/conf:/etc/mysql -v E:/programming/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

  1. 在mysql中赋予root用户权限
use mysql;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

2.1 涉及到的命令行参数

–restart always -> 开机启动
–privileged=true -> 提升容器内权限
-v /root/docker/mysqletc/mysql:/etc/mysql -> 映射配置文件
-v /root/docker/mysqletc/data:/var/lib/mysql -> 映射数据目录
-e MYSQL_USER=“summit” -> 添加用户summit
-e MYSQL_PASSWORD=“summit” -> 设置summit用户的密码为summit
-e MYSQL_ROOT_PASSWORD=“root” -> 设置root的密码为root

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值