Hello Docker

本文用来记录我的docker for mac之旅。

一、获取docker

https://docs.docker.com/docker-for-mac/install/

从以上链接可以获取到Mac版本docker的下载地址,安装好之后,Mac的菜单栏中将会出现docker图标。

二、Hello Docker

打开一个terminal,在其中输入

docker run hello-world

此时系统会拉取测试镜像。

但是我这边系统却报错了。提示如下:

docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.
See ‘docker run –help’.

百思不得其解。后来却发现,docker登录的时候要使用docker id,而不要使用email即可。

重新登录可点击docker图标,也可在terminal下输入:

docker login

重新登录即可。

三、Hello Oracle

我们使用docker的主要目的就在于快速的构建所需要的基础环境,例如我现在需要一个Oracle环境,那我该如何搞呢,非常简单,我们首先需要pull一个Oracle的docker镜像。

docker pull wnameless/oracle-xe-11g

上面这个镜像提供了一个Express版本的Oracle。

详情:https://hub.daocloud.io/repos/e06fc13e-3adb-4a9f-b44a-86a55df02c5a

拉取完成之后,我们仅需要简单的执行:

docker run -d -p 1521:1521 –name oracle wnameless/oracle-xe-11g

我们的Oracle就在本地跑起来咯 ~

hostname: localhost
port: 1521
sid: xe
username: system
password: oracle

这个Oracle的相关信息如上所示。

但是,当我在macOS下面使用Navicat连接数据库时却报如下错误

ORA-21561: OID generation failed

一开始以为是docker镜像有问题,尝试了好几个镜像都一样的错误,后来Google了下,发觉这个问题都是跟主机名有关,尝试修改镜像里的主机名,发现还是一样的错误,后来想到,会不会是主机的问题?于是执行:

hostname

获取到macOS的主机名,之后将其配置到

/etc/hosts

中127.0.0.1 后,问题解决,嘿嘿。

进阶:

上面的操作做完以后,会发现数据并没有被持久化。所以我们更改下容器启动参数:

docker run -d -p 1521:1521 -v /opt/docker/oracle/data:/u01/app/oracle –name oracle wnameless/oracle-xe-11g

这样就可以把/opt/docker/oracle/data映射进docker的/u01/app/oracle中去。

关于Linux可用空间一直为0的解决

今天在解决某高校CMS系统时,发现其可用服务器空间为0,已用百分比为100%,试着删除了部分无用内容后已用空间减少,但是可用空间依然为0.查阅相关资料后发现这是Linux的一个保护措施,会默认预留5%的空间给root用户使用。若想降低此预留比例到1%,可以执行:

sudo tune2fs -m 1 /dev/xvda3

参考:

http://superuser.com/questions/297863/available-disk-space-always-0

在不同编码的页面间通过表单传递参数乱码的问题

今天遇到一个很神奇的问题,用户告诉我这边网站上的表单提交到查询系统之后得不到返回值,查询结果是0条记录,但是再本地纯html执行的结果却能搜索到值。自己验证了下,果然如此,而且比对两边GET提交的参数,除了有个字段的值不同外,参数个数这些都是相同的,故考虑有可能是编码问题造成的影响。

分别打开两个文件后查看,发现两边编码确实不一致,而服务器那边为GB2312,传递UTF-8编码的参数过去不能正常解析出来,故放狗搜索,查找到form上一个很少用的属性。

accept-charset=”gb2312″

这个属性很有意思,可以设置表单以什么编码对内容进行编码,所以,给form 加上这个属性,就好了。

不过很恶心的,IE对这个属性不支持,于是只好对表单的onSubmit()方法进行下hack,加上

onsubmit=”document.charset=’gb2312′;”

问题彻底解决。

讨论Windows 7如何知道用户网络受限

大家在使用Vista,Win7,Win8等系统的时候有没有好奇,为什么右下方网络那边可以判断出当前用户是否连接公网,今天在上网的时候注意到了一个小细节,深究下去发现了好玩的内容:)

继续阅读“讨论Windows 7如何知道用户网络受限”

2012-9-24上班骑行记录

已经骑车子一周了,感觉还是蛮爽的,不过不知道骑行的这一路距离多少跟海拔多少,于是早上测量了一下,(嘿嘿,谁让我是技术男)现把测试结果展示如下:

骑行路线:

GPS汇报的全长是9.86公里。而这一路,我爬坡就爬了348米多…

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这坡也是不怎么好爬的,下面附上爬坡跟我骑行速度的折线图…可以看出,我的骑行速度跟爬坡的坡度成负相关的关系啊….

MY SSD IS FASTER THAN YOUR HDD !

昨天x讯网站ocz vertex  2,60G的硬盘特价,只要299,毫不犹豫的入手,今天收到,换上以后重新做好系统,可能由于我之前使用了混合硬盘的缘故,并没有感觉到开机速度有多大的提升,慢慢的装好常用的软件,这时候再体验,就发现软件启动的速度是非常的快,Word等软件几乎是一瞬间就打开了,我也拿来跑了一下分,可能是60G盘的缘故,跑分的结果并不是太好看,读取速度在200M左右,而写入速度只有悲催的90M左右。4K文件读取速度在百左右,读取写入都很平均 :)

而且换上SSD之后再也不用担心在移动的车上用电脑会损坏硬盘了,而且换上SSD之后电池的续航时间延长了约1小时!噪音也小了不少,只有CPU风扇的声音,不过仔细听,还是能听到一些明显的电流音。不过比起之前的机械硬盘,这个声音简直是太小了~

现在用SSD,我唯一遗憾的事情就是——容量太小了!!不使用外置硬盘还不能存下所有的程序,而且因为SSD的特性,存储介质一旦出现物理损坏,对数据所造成的灾难是不可逆的!所以就目前来看,若不是追求极致的速度及用户体验,混合硬盘或许是不错的选择,但混合硬盘工艺复杂,这更增加了可能会出现的故障点,可能会提高用户数据存储的成本。

最后用这块固态硬盘带的贴纸中的话来结束这篇日志“MY SSD IS FASTER THAN YOUR HDD ! 我的SSD硬盘,比你的HDD硬盘快喔 :)”

一个SQL自连接的应用

今天,某童鞋给我说他遇到一个统计的难题,他们发行了一些优惠券,他们想统计所有使用优惠券人员的总共消费金额。而且是仅统计使用优惠券的人员的所有付款方式的消费金额总计。

表结构如下:

bjg

想要实现我做了个自连接,

select a.c_id,sum(b.c_amount) from tb_o_sm a,tb_o_sm b where a.c_type=’2′ and a.c_id=b.c_id group by a.c_id;

结果如下:

bjg2

在Windows7下获取SYSTEM权限

以前在Windows XP下面可以使用at命令来启动程序以获得SYSTEM的权限, 可是在XP下面这个方法不再管用了,经过搜索,找到了一个方法:

1)启动命令提示符。

2)依次执行以下两条语句。

 1: sc Create SuperCMD binPath= "cmd /K start" type= own type= interact
 2: sc start SuperCMD

然后你会看到一个窗口,点击“查看消息”,你就获得了一个以SYSTEM权限执行的命令提示符。

方法来自:这里