秦悦明的运维笔记

[docker]使用阿里云上面的私仓

ui 地址是: https://cr.console.aliyun.com

阿里云官方docker仓库地址为:

registry.aliyuncs.com(公网)
registry-internal.aliyuncs.com(内网)

用了以后有一个好处是可以用他的registry-mirror,速度很快哦。

使用方法是在docker启动项里面加参数即可:
centos7.2为例 修改 /lib/systemd/system/docker.service

1
ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://xxx.mirror.aliyuncs.com

然后重启docker

1
systemctl restart docker

登录私仓
docker login registry-internal.aliyuncs.com
用户名是你的账号,一般是一个邮件。

然后run一个hello-world

1
docker run registry-internal.aliyuncs.com/alicloudhpc/hello-world

run没问题的话说明docker运行正常,私仓也可以拉镜像了,很不错!

除了能pull,当然你还可以push :

1
2
3
4
5
6
push 的例子:
本地镜像创建完成后,通过docker push上传到阿里云docker仓库:
# docker tag some-image registry-internal.aliyuncs.com/YOUR_NAMESPCE/YOUR_REPO
# docker push registry-internal.aliyuncs.com/YOUR_NAMESPCE/YOUR_REPO


如果你在用mac的话配置mirror更简单了,看下图:

这里写图片描述

解决普通用户无法使用docker命令的问题

1.如果普通用户运行docker,是会报错的。

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

2.其实这个问题是权限的问题。

1
2
root@iZ239blggqlZ:/opt/test-franky# ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Jul 18 16:20 /var/run/docker.sock=

可以看到docker.sock这个文件的权限是660,也就是说组用户是有权限的。那么我们只要把用户加到docker这个组下就ok了。

3.usermod修改用户组。

1
usermod -G docker jenkins
1
2
重启docker
service docker restart

[flask] hello

0.hello.py

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>hello world.</h1>'
if __name__ == '__main__':
app.run(debug=True)

运行起来就是python hello1.py

1
2
3
4
5
python hello1.py !10032
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 270-940-657

1.增加一个manager

类似django的运行方式。需要的步骤也很少。
需要引入一个ext.script的包.

1
2
3
4
5
from flask.ext.script import Manager
manager = Manager(app)
# ...
if __name__ == '__main__':
manager.run()

python 线程与进程

0. 计算100w随机数的和,分别用多进程和多线程,结果是在同样的环境下,多进程更能压榨每个cpu使用率,因为GIL的存在,所以python里面的多线程效率有瓶颈。

当然老司机知道,这种cpu密集的运算,本来就不应该用多线程来做,这是后话。
例子是抄的,对比一下很明显。

1
2
3
4
5
6
7
8
9
10
import multiprocessing
import random
def compute(n):
return sum(
[random.randint(1, 100) for i in range(1000000)])
pool = multiprocessing.Pool(8)
print "results: %s" % pool.map(compute, range(8))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import random
import threading
results = []
def compute():
results.append(sum(
[random.randint(1, 100) for i in range(1000000)]))
workers = [threading.Thread(target=compute) for x in range(8)]
for worker in workers:
worker.start()
for worker in workers:
worker.join()
print "results: %s" % results

django 发送邮件

不推荐用localhost自己架设邮件服务器发邮件,因为很大几率会被屏蔽。我们用第三方的邮件服务器,比如说腾讯的。
利用django框架发邮件很简单。

1. 在setting.py中配置邮件服务器的信息,主要是smtp的信息。

1
2
3
4
5
MAIL_HOST = 'smtp.qq.com'
EMAIL_HOST_USER = 'aca_jingru@qq.com'
EMAIL_HOST_PASSWORD = 'xxx'
EMAIL_PORT = 465
EMAIL_USE_SSL = True

2. 项目文件中引入send_mail即可.

1
2
3
from django.core.mail import send_mail
send_mail('Subject here', 'test for django sendmail', 'aca_jingru@qq.com',
['xxx@163.com'], fail_silently=False)