分类 docker 下的文章

MTProto docker 部署 负载均衡设置

密钥直接随机字符串md5加密32位的即可。

docker run -d -p443:443 -v proxy-config:/data -e SECRET=密钥 telegrammessenger/proxy:latest

部署后通过 docker logs 容器ID 查看链接代理的方式。

多台服务器部署的话,可以通过haproxy配置负载均衡。

frontend mp-in

  bind *:443
  default_backend mp-out

backend mp-out

  server ms3 IP1:443 check
  server ms2 IP2:443 check

防火墙需要放行443端口

unison 保持文件夹同步(同一服务器)同步阿里云盘和家里的smb或者linux磁盘

unison 同步文件工具,可以跨服务器同步。
应用场景:

   本地磁盘到阿里云盘等云盘
   本地磁盘到samba磁盘
   samba磁盘到阿里云盘等云盘

我主要是实现本地联想数据守护者定时备份到阿里云盘。

1.首先需要用 clouddrive 安装绑定阿里云盘在linux服务器创建磁盘映射。

docker run -d --privileged --name clouddrive --device /dev/fuse:/dev/fuse --restart unless-stopped -v /volume2/docker/clouddrive:/CloudNAS:shared -v /volume2/docker/clouddrive/config:/Config -v /volume2/docker/clouddrive/media:/media:shared -p 9798:9798 cloudnas/clouddrive

2.把联想数据守护者的samba挂载到linux服务器创建磁盘映射。

mount -t cifs -o username=用户名,password=密码, -l //192.168.1.111/目录 /mnt/smb

4.同步这两个目录,创建脚本如下

/bin/sh

nohup unison -batch /samba目录 /volume2/docker/clouddrive/CloudDrive/阿里云盘/MAC_desktop 2>&1 &

5.设置定时任务,定制执行这个shell即可。

Docker无法启动容器时如何修改配置

  1. 复制docker容器的文件到主机中来

    docker cp mysqlserver:/etc/mysql/mysql.conf.d/mysqld.cnf .

    注:

    这里最主要的是要记住当时在容器中配置的配置文件路径。可以通过 docker logs mysqlserver 尝试查找.

    .代表是当前目录

  2. vim修改配置文件中出错的地方,重新修改回来

  3. 复制修改后的配置文件到docker容器中去

    docker cp mysqld.cnf mysqlserver:/etc/mysql/mysql.conf.d/mysqld.cnf

  4. 重启容器实例

    docker restart mysqlserver

  5. docker cp用法说明

    CONTAINER:容器名
    SRC_PATH:源路径
    DEST_PATH:目的路径

mysql 5.7主从同步配置

一.两台服务器的mysql版本要求一致

二.设置master

#mysql master1 config 
[mysqld]

server-id=1
log_bin=master-bin
sync_binlog = 1   #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
log_bin_index=master-bin.index
expire_logs_days = 7
max_binlog_size = 100m
binlog_cache_size = 4m 
max_binlog_cache_size= 512m 
auto_increment_offset = 1
auto_increment_increment = 1
binlog_do_db = test #设置同步的库

binlog_ignore_db=mysql  #设置跳过mysql库
slave_skip_errors = all

设置完毕后重启mysql

三、设置slave

server-id=2
log-bin=mysql-bin
relay-log=slave-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
relay-log-index=slave-relay-bin.index
replicate-wild-ignore-table=information_schema.%

设置完毕后重启mysql

四、配置master的账号等信息

CREATE USER repl_user IDENTIFIED BY 'repl_passwd';
grant replication slave on *.* to 'repl_user'@'%'  identified by 'repl_passwd';

这里的%可以是slave的ip地址,不确定就写全部

FLUSH PRIVILEGES;

show master status;

五、执行slave的配置

change master to master_host='master 的 ip地址',master_port=3306,master_user='repl_user',master_password='repl_passwd',master_log_file='master-bin.000004',master_log_pos=154;

repl_passwd需要与上面设置的msater的repl_passwd一致。

master_log_file 的内容需要与上一步执行show master status;中的“File”字段中的值一致

master_log_pos 需要与上一步执行show master status;中的“Position”字段中的值一致

六、调试执行

start slave;

执行后查看slave状态

show slave status

如果看到的状态中Slave_IO_Running 和 Slave_SQL_Running 两个字段都是YES 并且 Last_Error字段为空,说明正常的。
可以再主数据库创建测试库,写数据删除数据等操作做下测试。

七、问题解决

如果第六步不能通过,可以修相应的信息后 先执行

stop slave;

执行完毕后再执行

reset slave;

清空重置Slave服务的相关设置。

并继续执行master绑定操作

change master to master_host='master 的 ip地址',master_port=3306,master_user='repl_user',master_password='repl_passwd',master_log_file='master-bin.000004',master_log_pos=154;

再次启动

start slave;

如此往复的调试执行,直到问题解决。

八、注意点

目前测试docker部署的mysql操作也是可以同步数据的。
做同步之前最好保证master和slave都是没有数据表的,不然同步出问题的概率比较高。配置好同步关系后再往主库中创建数据库导入数据。
一些特殊得查询错误可能是sql规则比较严格的原因。可以在my.cnf中增加 sql_mode = '' 配置。
mysql5.7 直接到 /etc/mysql/mysql.conf.d/ 这个目录下的mysql.cnf配置

docker 安装指定版本的mysql

1.安装docker支持,debian为例

自动安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

2.搜索各版本的mysql服务

docker search mysql

3.我选择默认的mysql,该mysql可以支持多版本,默认最新版本

docker pull mysql

4.换版本可以使用

docker pull mysql:版本号

如:

docker pull mysql:5.7

5.创建本地目录
命令:cd /opt/

命令:mkdir mysql_docker

命令:cd mysql_docker/

命令:echo $PWD

6.启动mysql,最后的5.7 可以是最新的last或者其他版本,MYSQL_ROOT_PASSWORD是默认密码,可以修改。

docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:5.7

安装启动基本上就完成了。下面是配置远程访问,如果本地使用可以不配置。直接使用容器名称链接。

7、进入mysql容器,并登陆mysql

命令:docker exec -it mysqlserver bash

命令:mysql -uroot -p

8、开启远程访问权限(mysql8 和 5.7 是不一样的)

下面是mysql8的方式

======================================================================

命令:use mysql;

命令:select host,user from user;

命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

命令:flush privileges;

======================================================================

下面是mysql5.7的方式

======================================================================

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456';
执行完上面的语句之后还不会立即生效,还需要让mysql重新加载用户权限:

flush privileges;

======================================================================

9.远程连接mysql测试。

查看docker日志

命令:docker logs -f --tail 10 a4dac74d48f7