docker18.09安装

Docker 18.09开始,拆分为"engine", “cli”, and “containerd”,需要分别单独下载和安装。 如:containerd.io-1.2.0-3.el7.x86_64.rpm、docker-ce-18.09.0-3.el7.x86_64.rpm、docker-ce-cli-18.09.0-3.el7.x86_64.rpm

[阅读全文]

emqx集群搭建

最近使用emqx替换原来mosca,公司要求搭建集群模式,本文记录简要过程。

EMQ X 版本支持多种策略的节点自动发现与集群:

策略 说明
manual 手工命令创建集群
static 静态节点列表自动集群
mcast UDP 组播方式自动集群
dns DNS A 记录自动集群
etcd 通过 etcd 自动集群
k8s Kubernetes 服务自动集群

想尝试manual,终觉太麻烦,直接放弃;试过mcast,在同一个compose内还可以,跨机则不行,估计是因是docker网桥在与跨机器的组播是有问题的,没有深究,但还是很看好这种方式的,以后如果能做基于k8s的集群可以继续研究一下;nds/etcd/k8s因为目前没有涉及,只放放弃;那么就剩下static,规模不是太大的情况下,也不是太麻烦,简单记录一下:

[阅读全文]
emqx  mqtt  docker 

docker registry

registry和registry-web配合使用Token认证的问题

之前使用的是htpasswd方式,但registry-web需要使用token方式。

其原理很重要,需要搞明白:

  • 先生成key和密钥,分别部署于registry和registry-web
  • 在registry中配置token认证方式realm地址为registry-web的地址
  • 在registry-web中配置的url为registry的api地址

当前测试可用的配置:

[阅读全文]

修改tomcat容器时区

默认tomcat容器时区为UTC0,与中国东8区相差8小时

会导致某些依赖时间的应用获取时间不正确,如:xxl-job-admin,设置的cron中指定了小时级以上则会不正常执行(小时级以下不涉及具体时区)

[阅读全文]

Docker环境变量

  1. env_file,environment中定义的环境变量是传给container用的,不是在docker-compose.yml中的环境变量用的
  2. docker-compose.yml中的环境变量${VARIABLE:-default}引用的是在.env中定义的或者同个shell export出来的
  3. docker-compose中替换.env文件变量的研究,.env文件的环境变量:
    1. 只能用大写
    2. 不能出现".“号
    3. 可以用”_"
    4. 只能用在up -d

后记:不用太过研究,限制多,且应用得少

[阅读全文]

关于Dockerfile

  1. ARG和ENV ARG指令定义了用户可以在编译时或者运行时传递的变量,如使用如下命令:–build-arg = ENV指令是在dockerfile里面设置环境变量,不能在编译时或运行时传递。 ARG和ENV的有效结合:ARG var ENV var=${var}

    [阅读全文]
docker 

基于容器的MySQL定时备份数据库

注:以下使用mysqldump方式备份会导致锁表,生产环境备份建议使用xtrabackup

  1. 将如下内容添加至:/data/backup.sh
1
2
3
docker exec -i data_mysql_1 mysqldump -uroot -pPassword dbname > /data/`date +%Y%m%d`.sql \
	&& tar -zcvf `date +%Y%m%d`.tar.gz `date +%Y%m%d`.sql \
	&& rm -fr /data/`date +%Y%m%d`.sql
  1. 添加执行权限:
1
sudo chmod +x /data/backup.sh
  1. 在宿主机加定时调度,每天凌晨1点执行:crontab -e
1
0 1 * * * /bin/bash /data/backup.sh

docker exec -i不能加t,也不需要加t!!!这里坑了很久!

[阅读全文]

Docker配置文件

默认dockerd全局配置文件在/etc/docker/daemon.json,该文件默认不存在,创建就好了,常用内容:

1
2
3
4
5
6
7
8
{
"data-root": "/data/docker",
"log-driver":"json-file",
	"log-opts":{
		"max-size": "10m",
		"max-file": "3"
	}
}

设置docker主目录,docker运行产生的数据都保存在这里,如镜像、容器、日志、卷等,会占用较大空间,默认在/var/docker下,务必修改!!!

[阅读全文]
docker 

docker保存和加载镜像

背景:

有一些自定义的镜像,不想通过dockerfile创建,没有仓库或者不想上传到仓库中,可以使用保存和加载命令实现环境迁移

保存

1
2
docker save -o xxx.tar repo:tag # 注:不能写IMAGE ID
docker image save helloworld > helloworld.tar # 官方写法

加载:

1
2
docker load < xxx.tar # 或 docker load -i xxx.tar
docker image load -i helloworld.tar # 官方写法