如何用Docker自动配置Redismysql 主从配置或者MySQLmysql 主从配置

查看: 1287|回复: 2
docker安装gitlab+mysql+redis(亲测可用)
主题帖子积分
新手上路, 积分 41, 距离下一级还需 9 积分
新手上路, 积分 41, 距离下一级还需 9 积分
本帖最后由 cute.emily 于
19:22 编辑
系统:centos 6.6(64位)
[1].安装并启动docker #yum&&install&&-y&&docker-io
#service docker start
#docker version
显示下面信息:
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d/1.7.1
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d/1.7.1
OS/Arch (server): linux/amd64
[2]设置docker代理,加速获取远程镜像速度(因为可能被墙)
修改/etc/sysconfig/docker
HTTP_PROXY=http://107.191.52.153:25
http_proxy=$HTTP_PROXY
HTTPS_PROXY=$HTTP_PROXY
https_proxy=$HTTP_PROXY
export HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
[3].获取mysql redis gitlab镜像(隶属于同一仓库)
#docker pull sameersbn/mysql:latest
#docker pull sameersbn/redis:latest
#docker pull sameersbn/gitlab:latest
查看这3个镜像是否存在
#docker images
[4].先启动mysql和redis
#docker run --name=gitlab-mysql -tid --env='DB_NAME=gitlabhq_production' --env='DB_USER=gitlab' --env='DB_PASS=passwd' --volume=/srv/docker/gitlab/mysql:/var/lib/mysql&&sameersbn/mysql:latest
#docker run --name gitlab-redis -tid --volume /srv/docker/gitlab/redis:/var/lib/redis sameersbn/redis:latest
启动好了之后,我们用docker ps -a来查看是否运行,也可以用docker logs gitlab-mysql来查看安装过程.
[5].启动gitlab
启动gitlab:
#docker&&run&&--name gitlab&&-tid& &--link&&gitlab-mysql:mysql&&--link gitlab-redis:redisio&&-p 10022:22&&-p 10080:80 -e 'GITLAB_HOST=192.168.9.129' -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' -e 'GITLAB_SECRETS_DB_KEY_BASE=123456' -v /srv/docker/gitlab/gitlab:/home/git/data -v /srv/docker/gitlab/log:/var/log/gitlab sameersbn/gitlab:latest
<font color="#022:为gitlab容器内22(ssh)端口映射在宿主机上的端口
<font color="#080:为gitlab容器内80(nginx)端口映射在宿主机上的端口
mysql:为gitlab-mysql容器别名
redisio:为gitlab-redis容器别名
在gitlab容器内,使用 env 命令可以看到以REDISIO_与MYSQL_开头的环境变量
进入gitlab容器内部
[root@ivan ~]# docker exec -it gitlab /bin/bash
查看环境变量
root@aaed:/home/git/gitlab# env |grep -i redisio
REDISIO_ENV_REDIS_USER=redis
REDISIO_PORT_6379_TCP_PROTO=tcp
REDISIO_NAME=/gitlab/redisio
REDISIO_PORT_6379_TCP_ADDR=172.17.0.2
REDISIO_ENV_REDIS_LOG_DIR=/var/log/redis
REDISIO_PORT_6379_TCP_PORT=6379
REDISIO_PORT_6379_TCP=tcp://172.17.0.2:6379
REDISIO_PORT=tcp://172.17.0.2:6379
REDISIO_ENV_REDIS_DATA_DIR=/var/lib/redis
root@aaed:/home/git/gitlab# env |grep -i mysql&&
MYSQL_ENV_DB_PASS=passwd
MYSQL_ENV_MYSQL_DATA_DIR=/var/lib/mysql
MYSQL_ENV_MYSQL_LOG_DIR=/var/log/mysql
MYSQL_PORT_3306_TCP_PORT=3306
MYSQL_ENV_MYSQL_RUN_DIR=/run/mysqld
MYSQL_ENV_DB_USER=gitlab
MYSQL_PORT_3306_TCP=tcp://172.17.0.1:3306
MYSQL_ENV_MYSQL_USER=mysql
MYSQL_ENV_DB_NAME=gitlabhq_production
MYSQL_NAME=/gitlab/mysql
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_PORT_3306_TCP_ADDR=172.17.0.1
MYSQL_PORT=tcp://172.17.0.1:3306
环境变量GITLAB_HOST、GITLAB_SECRETS_DB_KEY_BASE是必须的,否则启动不成功.
上面命令中的long-and-random-alpha-numeric-string请替换成一组随机的字串,可以使用 pwgen -Bsv1 64来生成.
[6] 浏览器验证
好了,启动成功的话,就去浏览器验证:
http://192.168.9.129:10080& &&&//ip对应于启动gitlab容器时的参数GITLAB_HOST=192.168.9.129
输入预设账号和密码:
username: root
password: 5iveL!fe
到这里就可以使用了
[7]安装之后需要进行的操作,可能遇到的常见问题以及解决
①gitlab头像图标不显示解决(安装完毕之后基本上都需要此步骤)
a、进入容器:
#docker exec -it gitlab /bin/bash
b、修改代码
#vi&&/home/git/gitlab/config/initializers/1_settings.rb
Settings.gravatar['plain_url']&&|| = ........
Settings.gravatar['plain_url']&&||= '/avatar/%{hash}?s=%{size}&d=identicon'
c、重启容器
#docker restart gitlab
d、制作自己的镜像
[先找出gitlab的id]
#docker ps
[根据id制作新镜像]&&aaed 为我这里通过docker ps查询到的gitlab容器id.你的跟我的不一样,建议自己查询获取
#docker commit aaed&&sameersbn/gitlab:v1
#docker commit -m 'edit and show picture' -a 'snowman'&&38bd&&sameersbn/gitlab:v1& &//此处携带 -m(说明信息)& &-a(作者)参数
[查看新的镜像sameersbn/gitlab:v1是否生成]
#docker images
[停用旧的容器并删除旧容器]为了启用新的容器
#docker stop gitlab
#docker rm gitlab
[根据新的镜像创建新容器]
# docker&&run&&--name gitlab-v1&&-tid& &--link&&gitlab-mysql:mysql&&--link gitlab-redis:redisio&&-p 10022:22&&-p 10080:80 -e 'GITLAB_HOST=192.168.9.129' -e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' -e 'GITLAB_SECRETS_DB_KEY_BASE=123456'&&-v&&/srv/docker/gitlab/gitlab:/home/git/data&&-v /srv/docker/gitlab/log:/var/log/gitlab sameersbn/gitlab:v1
②在①的基础上对现有容器修改之后,利用commit创建新的镜像.并启用该镜像作为新的容器时出现
问题:dial unix /home/git/gitlab/tmp/sockets/gitlab.socket: connect: connection refused
<font color="# 进入容器内& && && && &#docker exec -it gitlab-v1&&/bin/bash
<font color="# 删除gitlab.socket&&#rm /home/git/gitlab/tmp/sockets/gitlab.socket
<font color="# 重启gitlab& && && && & #/etc/init.d/gitlab start
*****************************************
再次开机,需要手动重启或者加入开机启动项(注意次序:gitlab在最后一个)
#docker start gitlab_redis
#docker start gitlab_mysql
#docker start|stop|restart gitlab
<font color="#.加入启动项
echo 'docker start gitlab_redis' && /etc/rc.local
echo 'docker start gitlab_mysql' && /etc/rc.local
echo 'docker start gitlab' && /etc/rc.local
<font color="#.进入docker容器
分别进入交互模式:
docker exec -it gitlab bash
docker exec -it gitlab-mysql bash
docker exec -it gitlab-redis bash
进入非交互模式:
docker run -tid -t sameersbn/gitlab /bin/bash
删除所有正在运行的容器:
docker rm $(docker ps -q -a)
停止所有正在运行的容器:
docker kill $(docker ps -q -a)
本帖被以下淘专辑推荐:
& |主题: 1, 订阅: 0
主题帖子积分
新手上路, 积分 41, 距离下一级还需 9 积分
新手上路, 积分 41, 距离下一级还需 9 积分
显示详细容器信息
#docker&&inspect&&&container id&
删除容器:
#docker rm gitlab
主题帖子积分
新手上路, 积分 41, 距离下一级还需 9 积分
新手上路, 积分 41, 距离下一级还需 9 积分
gitlab之docker中文镜像地址:
也可以通过搜索找到该镜像
docker search&&gitlab
Copyright (C) 2010-, All rights reserved
Powered by Discuz!& 豫ICP备号-3
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表PHP讨客立场
本站提供的部分源码来自网络(本站不承担任何版权问题,仅供学习).如果侵犯了您的利益,请告知,我们会在第一时间处理
我们的站点: |||||||||用户名:workming
文章数:126
评论数:252
访问量:1516189
注册日期:
阅读量:1297
阅读量:3317
阅读量:582910
阅读量:467870
51CTO推荐博文
DB服务器进行迁移,同时为了保证在数据迁移过程中,对线上业务不造成影响,并能够做到秒级切换。如果我们采用普通的逻辑备份,比如:mysqldump,会存在锁表的情况,显然不可取。因此我们采取基于物理备份的方案,备份工具选型为:xtrabackup。mysql版本太旧,故备份工具推荐选择xtrabackup-2.0.8的版本;xtrabackup二进制版本无法运行,故需进行源码编译。cmake依赖库;mysql-5.1.59的源码包,放在percona-xtrabackup-2.0.8目录下;libtool的版本不能高于2.4。xtrabackup编译安装cmakextrabackupmysql-5.1.59源码包下载到percona-xtrabackup-2.0.8目录下,无需解压MySQL主版本对应上,如果有不明白的,可以参考以下信息。DB数据备份 --no-timestamp /data/mysql_backup" cat - & /data/mysql_backup.tgz"DB(172.17.138.239)上进行,因为xtrabackup不会锁表,对业务不造成影响,也会为后续的主从关系建立带来便利。/f”配置文件里没有指定basedir、datadir参数设置,导致xtrabackup找不到。/f):/data/mysql_backup”已经存在,主要是由前一次操作引起的。因为xtrabackup要求备份目录事先不能存在,需要在执行时才会自动创建。rsync同步到远程服务器,然后采用xtrabackup进行恢复即可。^_^),执行以下命令即可: ^_^DB数据恢复mysql-5.0.27环境&MySQL环境时,将表空间文件分配的少一些,这样可以让MySQL启动的快一些,同时也为接下来的恢复操作以作区别。也需要注意一下以下附件中的参数“bind-address”、“server-id”。xtrabackupDB数据恢复 /data/mysql_backup.tgz -C /data/mysql_backuptar解压操作时,一定要加上“-i”参数。innodb_log_files_in_group”在旧环境没有设置,此处可以忽略不设置,默认值为2。也需要注意一下以下附件中的参数“bind-address”、“server-id”。10.217.121.216)的DB数据恢复,可以将“10.217.121.196”上的解压数据同步过来,然后按照同样的方式进行恢复即可DB账号恢复172.17.138.239”的“mysql”数据库导出,然后导入到“10.217.121.196”172.17.138.239”的从DB的“mysql”数据库导出,然后导入到“10.217.121.216”10.217.121.196”与“10.217.121.216”主从关系建立10.217.121.196”上的操作:10.217.121.216”上的操作:,master_log_pos=XXX;"172.17.138.239”与“10.217.121.196”主从关系建立172.17.138.239”上的操作:10.217.121.196”上的操作:&,master_log_pos=;"&&10.217.121.196 &à&10.217.121.2163台DB的配置文件“/f”中的“server-id”参数,必须保持不相同,否则你懂得 ^_^DB“10.217.121.196”即可,待确认无误后,停掉之前建立的“172.17.138.239”与“10.217.121.196”主从关系,而“10.217.121.196”与“10.217.121.216”主从关系需保留不动。MySQL-5.0.26的版本存在较多BUG,官方已不提供下载,所以本次的新环境采用MySQL-5.0.27;&5.1、5.5系列版本,但在做主从设置时,总会报错,尝试了MySQL-5.0.37版本也不行,这也验证了MySQL-5.0.26的确存在BUG的可能性;&MySQL-5.0.26与MySQL-5.0.27之间建立主从关系是可以的,但个人还是比较推荐5.5系列的版本,接下来可以尝试在MySQL-5.0.27与MySQL-5.5.X之间建立主从;&innodb_data_file_path”参数设置不是太合理,可以考虑对ibdata进行瘦身和配置调整;&64为环境下,运行的却是32位版本的MySQL,这样就会导致一个问题,就算你在64位环境下,内存再多,而你的缓冲池大小最多也只能设置到4G。&&本文出自 “” 博客,请务必保留此出处
了这篇文章
附件下载:    
类别:┆阅读(0)┆评论(0)
请输入验证码:Docker Compose搭建mysql主从复制
Docker Compose搭建mysql主从复制
配置文件以及文档地址: http://git.oschina.net/wangjingj/mycat-rw系统环境docker 1.12.3mysql5.7.17deepin 15.3桌面版(这个没啥影响,因为我们用docker)要点说明使用`docker bridge`网络,设置静态IP使用`volumes`挂载,不使用数据卷容器(因为我使用`docker compose`没搞成功 - -!)镜像使用`build`创建(保留扩展性),不使用`image`目前为止,没有暴露端口号,只是两个`slave`link了`master`.马上着手研究使用[mycat](http://www./)完成mysql的主从复制+读写分离,敬请期待.挂载`hosts`文件,以便于使用`hostname`代替ip地址环境准备`docker-engine`安装这个直接参考官方文档吧.[debian下安装docker-engine](/engine/installation/linux/debian/)`docker-compose`安装[debian下安装docker-compose](/compose/install/)拉取`mysql:5.7.17`镜像需要挂载的配置文件目录结构简要说明:mysql-master: 存放master配置文件mysql-s1: 存放第一个slave配置文件mysql-s2: 存放第二个slave配置文件hosts: 本地路由mysql-master的配置没多少东西,只有一个`f`需要在末尾追加:mysql-s1/mysql-s2的配置跟master一样,也只有一个`f`需要在末尾追加:hosts文件配置docker-compose配置文件和DockerfileDockerfile其实`master s1 s2`的Dockerfile都是一致的,咱就是为了保持一定的扩展性才这么写的.我们完全可以用`docker-compose`的`image`代替.在docker-compose.yml中image和build不能一起使用的好吧,看一下这个`Dockerfile`docker-compose.yml好吧,重点来了.run在`docker-compose.yml`文件的目录下运行别激动,我们现在才只是完成了一半….下面开始设置mysql主从复制.配置master进入master的mysql命令行输入`MYSQL_ROOT_PASSWORD:`的值m1test,进入mysql命令行模式.创建用于主从复制的用户`repl`给`repl`用户授予slave的权限锁库,不让数据再进行写入动作,这个命令在结束终端会话的时候会自动解锁查看master状态记下`master-bin.000003`和`636`一会在slave用.配置slave1进入s1的mysql命令行输入`MYSQL_ROOT_PASSWORD:`的值s1test,进入mysql命令行模式.连接master启动slave配置slave2几乎跟slave一致….咱就不写了…实验1 测试master写入后是否能够同步到slave好了,到此位置,配置已经完成,那是否成功了捏… 我们来试一下.在master的mysql命令行下创建数据库 ms-test去两台slave上查看是否也有了mstest数据库.则证明成功.实验2 创建一个表,插入一条数据自己来吧 哈哈哈哈总结通过以上步骤,咱们搭建了一个以`docker-compose`管理的mysql `master-slave`模式的主从复制.下一步,我们需要进行暴露端口,或者使用`links`属性来让应用或者其他客户端工具能够访问我们的mysql.再下一步,我们需要使用`mycat`中间件来完成我们的读写分离.支持请点赞,不喜勿喷.每天一点点,成长多一点.
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 爱搞机器,数字评价小虫子圈
作者最新文章

我要回帖

更多关于 mongodb 主从配置 的文章

 

随机推荐