文章目录
容器自启选项
–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.youkuaiyun.com/weixin_42456466/article/details/87270959
splash
docker run -p 8050:8050 scrapinghub/splash
解决splash无法渲染页面的问题
参考资料:https://blog.youkuaiyun.com/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.youkuaiyun.com/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
-
创建一个临时的msyql:5.7容器,目的是cp 容器里mysql的配置文件
docker run -d -p 3306:3306 --name myMysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 -
复制容器中的mysql配置文件到宿主机指定目录
从容器中将文件拷贝出来的命令:dokcer cp 容器名称:容器目录 需要拷贝的文件或目录
docker cp myMysql:/etc/mysql E:/programming/docker/mysql/conf -
停止并删除刚才创建的临时容器
docker stop myMysql
docker rm myMysql -
创建并启动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
- 在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