Contents
  1. 1. Docker 使用记录流水
    1. 1.1. 小记录
      1. 1.1.1. 服务的映射目录删除
      2. 1.1.2. cassandra的数据目录
      3. 1.1.3. docker仓库配置
      4. 1.1.4. docker错乱
    2. 1.2. 参考文献

Docker 使用记录流水

小记录

服务的映射目录删除

docker run -d --rm --name recommend-service -p 8894:8081 -e "IP=192.168.1.85" -e "DUBBO_PORT_TO_REGISTRY=20894" -e "DUBBO_IP_TO_REGISTRY=192.168.1.85" -e "spring.data.cassandra.contact-points=192.168.1.75"  -e "spring.rocketmq.name-server-address=192.168.1.74:9876" -v "/home/options/projects/recommend:/app"  --add-host="config.huilv.com:192.168.1.103" 192.168.1.75:8083/recommend-service:trunk-dev
shell-init: 获取当前目录时出错: getcwd: 无法访问父目录: 没有那个文件或目录
Error response from daemon: No such container: recommend-service

. 手贱把映射出去的目录删除掉了,全面报错,就算重启docker service都会报错。这里需要将映射出来的目录设置readonly,这样,root用户必须改权限才会删除和出错

cassandra的数据目录

由于初期没有考虑分区键的设计,导致一个分区的数据条数达到百万级别,这个时候allow filtering的延迟太高,直接导致超时,修改响应超时判断并不能从根本上解决,所以只能清空数据,重修改表,幸好表的数据只是临时的推荐结果,相关命中率的字段还没有被使用,删除无碍,修改分区键为user_id, product_type, model_id这样每个分区的数据只会是这个模型下的数据,只是随着batch_num的增长会一直增加罢了,每次每个模型的数据保存不过百条,达到百万需要一万次,每天一次的推荐频率足够解决问题。

docker仓库配置

每台机器配置/etc/docker/daemon.json,增加注册地址

{
"registry-mirrors": ["192.168.1.75:8084"],
"insecure-registries":[
  "192.168.1.75:8083",
  "192.168.1.75:8084"]
}

使用 systemctl reload docker这样不需要停止所有容器,然后使用docker login 192.168.1.75:8084以及账号密码之后就能成功登陆,即可进行docker tag push操作。
剩下的问题是,默认的注册地址还是docker.io

docker错乱

#如果启动容器的时候显示endpoint的端口已经被占用,但是实际上容器已经被移除的话,使用docker network inspect net查看,可能会发现有多余的container存在,但是docker ps又不存在这个container,这个时候一般都是network的注册数据有错误
用systemctl reload docker无法解决,可以试试systemctl restart docker

参考文献

  1. 知乎社区
  2. 数据挖掘与数据化运营实战:思路、方法、技巧与应用
  3. 百度
  4. 红黑联盟
Contents
  1. 1. Docker 使用记录流水
    1. 1.1. 小记录
      1. 1.1.1. 服务的映射目录删除
      2. 1.1.2. cassandra的数据目录
      3. 1.1.3. docker仓库配置
      4. 1.1.4. docker错乱
    2. 1.2. 参考文献