docker经常需要挂载文件到容器中,比如启动nginx # docker run -d --name test_nginx -v /tmp/nginx.conf:/etc/nginx/nginx.conf nginx 然后就有修改配置文件然后刷新的功能,如果直接用vi编辑宿主机文件 # vi /tmp/nginx.conf 然后在docker容器中执行reload # docker exec -it test_nginx nginx -s reload 会发现配置没有生效,此时直接查看dock…
Cloudera Manager中修改配置可能报错: Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'MESSAGE' at row 1 这是一个mysql的字符集问题,极有可能创建scm数据库时使用默认的latin1编码导致,涉及的表为: CREATE TABLE `REVISIONS` ( `REVISION_ID` bigint(20) NOT NULL, `OPTIMISTIC_LOCK_VERSION`…
前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost....) 今天再来分享工作中一个真实的案例: 商品评价列表页,显示每条用户的评价详情,为了保护用户隐私,要求显示用户昵称时只能显示第一位和最后一位,其他的用※代替. 例如输入:,输出:*** 看似一个平淡无奇的需求,我也没有太在意.服务端将用户的评论信息存储到db中,评价列表接口就是将数据库中该商品的…
docker不能挂载文件,只能挂载文件夹,所以先从一个容器中复制一份配置文件. docker run --name test -d idp docker cp test:/app/appsettings.json /app/appsettings.json   然后在docker-compose.yml可以写 volumes:      - ./app/appsettings.json:/app/appsettings.json…
    本文首发于cartoon的博客     转载请注明出处:https://cartoonyu.github.io/cartoon-blog 当修改gitnore文件后,常常出现文件不生效的情况,是因为之前的修改已经提交到暂存区上了. 解决方法 git add . //防止已有修改还没到暂存区的情况 git rm -r --cached . //清除暂存区记录 git add . //提交修改记录到暂存区中 执行到第三步即能使gitnore文件生效,后续操作会按照gitnore规则执行…
java应用中经常需要用到jvm工具来进行一些操作,如果java应用部署在docker容器中,如何使用jvm工具? 首先要看使用的docker镜像, 比如常用的openjdk镜像分为jdk和jre,只有jdk版本才有jvm工具,所以可以直接使用jdk版本的openjdk: 比如常用的tomcat镜像则没有jdk和jre选择,默认使用都是jre,所以没有jvm工具,tomcat镜像中的jdk目录如下: # ls /usr/lib/jvm/java-1.8-openjdk bin jre lib #…
docker container启动失败,报错:Exited (137) *** ago,比如 Exited (137) 16 seconds ago 这时通过docker logs查不到任何日志,从mesos上看stderr相关的只有一句 I0409 16:56:26.408077 8583 executor.cpp:736] Container exited with status 137 通过docker inspect查看container状态为 "State": { &quo…
spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行insert overwrite table流程: 1 创建临时目录,比如 .hive-staging_hive_2018-06-23_00-39-39_825_3122897139441535352-2312/-ext-10000 2 将数据写到临时目录: 3 执行loadTable或loadPartiti…
docker启动openjdk后,可以查看进程 # docker exec -it XXX jps 10 XXX.jar 可见启动的java进程id一直为10,然后可以执行jvm命令,比如 # docker exec -it XXX jstack 10 # docker exec -it XXX jstat -gcutil 10 # docker exec -it XXX jmap -histo 10 但是执行jmap -heap或者-dump时会报错: Attaching to process…
在docker中启动tomcat或java类应用,获取时间默认是UTC时间,这是因为容器内的locale没有设置为东8区,最简单的方式是增加JAVA_OPTS 如果是java,直接在java命令后增加 -Duser.timezone=Asia/Shanghai 如果是tomcat可以先设置CATALINA_OPTS export CATALINA_OPTS=' -Duser.timezone=Asia/Shanghai ' 再启动tomcat…