light-deploy
v0.1.4
Published
1. 安装 # yum install docker -y # service start docker # chkconf on docker
Downloads
27
Readme
- 安装
yum install docker -y
service start docker
chkconf on docker
centos7 启动出错
yum install device-mapper-event-libs -y
- 创建镜像
docker build -t="alphabets/zabbix:v0.0.1" zabbix
docker build -t="alphabets/nginx:v0.0.1" nginx
docker build -t="alphabets/fluentd:v0.0.1" fluentd
docker build -t="alphabets/node:v0.0.1" node
docker build -t="alphabets/light:v0.0.1" light
docker build -t="alphabets/fastfix:v0.0.1" fastfix
- 常用命令
查看本地的镜像
docker images
启动镜像
docker run -p 80:80 -d --name zabbix 26f8955245bb
docker run --rm=true -p 8080:8080 -p 8889:22 --hostname=gitlab --name gitlab alphabets/gitlab:v0.0.1
docker run -d --rm=true -p 8080:8080 -p 29418:29418 --hostname=gitbucket --name gitbucket alphabets/gitbucket:v0.0.1
docker run -d --restart=always --add-host=db:10.165.46.250 --publish=5003:5003 --hostname=fastfix --name=fastfix alphabets/fastfix:v0.0.1
docker run -d --restart=always --add-host=db:10.165.46.250 --publish=7000:7000 --hostname=admin --name=admin alphabets/lightadmin:v0.1.0
docker run -d --restart=always --publish=4506:4506 --publish=4505:4505 --name=salt alphabets/salt:v0.0.1
查看容器列表
docker ps -a
SSH接入容器
docker exec -t -i 057df86d3418 /bin/bash
docker run --name zabbix -t -i 8768c02052ae /bin/bash
zabbix-agent
- CentOS7
iptables -A INPUT -m state --state NEW -p tcp --dport 10050 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 10051 -j ACCEPT
docker run docker info docker images docker logs docker top 查看容器内的进程 docker exec docker stop docker rm 删除容器 docker ps -a 查看容器列表 docker rmi 删除镜像 docker cp 拷贝容器内文件
run
-i STDIN开启 -t 为容器分配tty终端 -d daemon模式启动 --name 设定容器名称 --restart 自动重启 --rm 自动删除
--privileged 允许操作iptables?
logs
-f 日志跟踪 -t 加时间戳
常用命令
命令行模式进入容器
docker exec -t -i 9b30e9a6c9a3 /bin/bash
删除所有容器
docker rm docker ps -a -q
备份volumn内的数据
docker cp $ID:/var/jenkins_home
docker build -t="alphabets/nginx:v0.0.1" nginx
查看绑定的VOLUMN
docker inspect -f '{{ .Volumes }}' source
疑问
jenkins的数据 怎么办?通过画面设定的内容,是否可以共享
nginx的log怎么办 使用通用的log容器?
tag做成
docker tag 24dd746e9b9f docker.light.cn/registry:latest
command
启动jenkins
docker run -p 8080:8080 -v /var/jenkins_home -d --name jenkins 4e288907973a
启动nginx 连接jenkins
docker run -p 80:80 --link jenkins:jenkins -d --name nginx 23a528ae15fc
启动数据容器
docker run --name data e42b62c80cb6 true
How to start pm2 server in a docker container
http://zgu.me/blog/2014/08/25/how-to-start-pm2-server-in-a-docker-container/
docker 服务无法启动
- yum update device-mapper 来升级device-mapper
依赖的官方镜像
centos 7.1.1503 busybox latest registry 2.0.0
docker 内启动服务的方法
http://www.hilotech.jp/blog/it/290 http://thinkit.co.jp/story/2015/01/29/5501
- 切换centos版本 为最新,使用yum的时候有包冲突的问题
- 切换fakesystemd 到 systemd,为了使用服务启动多个进程
- 启动时,使用--privileged, 启动脚本指定为/sbin/init
docker run -p 4505:4505 -p 4506:4506 --rm=true --privileged docker.alphabets.cn/salt /sbin/init
docker build -t="docker.alphabets.cn/registry" registry
docker build -t="docker.alphabets.cn/bind" bind
port docker registry - 5000 bind - 53 squid - 3128
删除所有容器
docker rm docker ps --no-trunc -aq
docker rmi $(docker images -q)
查询所有的 registry 的images
curl -X GET http://docker.light.cn:5000/v1/search
curl -O http://www.alphabets.cn/lib/ca-certificates.crt
container 导入
cat fastfix_data.tar | docker import - docker.light.cn/fastfix_data:0.0.1
备份容器数据
docker run --volumes-from fastfix_data --rm -v $(pwd):/backup docker.light.cn/busybox tar cvf /backup/data.tar /data
docker run --volumes-from fastfix_data --rm -v $(pwd):/backup docker.light.cn/busybox tar xvf /backup/data.tar
docker run --volumes-from fastfix_data --rm docker.light.cn/busybox ls -lh /data
拷贝文件
docker run -it --volumes-from site_data --rm -v $(pwd):/backup docker.alphabets.cn/data:0.0.1 sh
http://alvinhenrick.com/2015/01/26/docker-backup-and-restore-volume-container/
查看物理文件位置
$ docker inspect -f "{{.Volumes}}" test
删除一行 sh -c "sed -i '/^b.*/d' /data/test"
bind的设定
http://www.mk-mode.com/octopress/2014/08/13/centos-7-0-installation-of-bind/ http://centossrv.com/bind.shtml http://kajuhome.com/bind.shtml
squid代理
yum -y install squid
systemctl start squid
export http_proxy=10.10.106.231:3128
export https_proxy=10.144.161.119:3128
export SOCKS_SERVER=1.2.3.4:8000
docker build里使用代理
env http_proxy 10.251.137.130:3128
copy ca.crt to /etc/ssl/certs/ca-certificates.crt restart docker
export ALL_PROXY=socks5h://localhost:1080
################### 生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输, # 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护
openssl genrsa -des3 -out selfsign.key 4096
使用上面生成的key,生成一个certificate signing request (CSR)
如果你的key有密码保护,openssl首先会询问你的密码,然后询问你一系列问题,
其中Common Name(CN)是最重要的,它代表你的证书要代表的目标,如果你为网站申请的证书,就要添你的域名。
openssl req -new -key selfsign.key -out selfsign.csr
生成Self Signed证书 selfsign.crt就是我们生成的证书了
openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt
# 另外一个比较简单的方法就是用下面的命令,一次生成key和证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
生成自己的CA (Certificate Authority) # 生成CA的key
openssl genrsa -des3 -out ca.key 4096
生成CA的证书
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
生成我们的key和CSR这两步与上面Self Signed中是一样的
openssl genrsa -des3 -out light.key 4096 openssl req -new -key light.key -out light.csr
使用ca的证书和key,生成我们的证书
这里的set_serial指明了证书的序号,如果证书过期了(365天后),
或者证书key泄漏了,需要重新发证的时候,就要加1
openssl x509 -req -days 365 -in light.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out light.crt
查看证书
查看KEY信息
openssl rsa -noout -text -in myserver.key
查看CSR信息
openssl req -noout -text -in myserver.csr
查看证书信息
openssl x509 -noout -text -in ca.crt
验证证书
会提示self signed
openssl verify selfsign.crt
因为myserver.crt 是幅ca.crt发布的,所以会验证成功
openssl verify -CAfile ca.crt myserver.crt
去掉key的密码保护 有时候每次都要输入密码太繁琐了,可以把Key的保护密码去掉
openssl rsa -in light.key -out light.key.insecure
不同格式证书的转换
PKCS转换为PEM
openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes
PEM转换为DER
openssl x509 -outform der -in myserver.pem -out myserver.[der|crt]
PEM提取KEY
openssl RSA -in myserver.pem -out myserver.key
DER转换为PEM
openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem
PEM转换为PKCS
openssl pkcs12 -export -out myserver.pfx -inkey myserver.key -in myserver.pem -certfile ca.crt
测试证书 Openssl提供了简单的client和server工具,可以用来模拟SSL连接,做测试使用。
连接到远程服务器
openssl s_client -connect www.google.com.hk:443
模拟的HTTPS服务,可以返回Openssl相关信息
-accept 用来指定监听的端口号
-cert -key 用来指定提供服务的key和证书
openssl s_server -accept 443 -cert myserver.crt -key myserver.key -www
可以将key和证书写到同一个文件中
cat myserver.crt myserver.key > myserver.pem
使用的时候只提供一个参数就可以了
openssl s_server -accept 443 -cert myserver.pem -www
可以将服务器的证书保存下来
openssl s_client -connect www.google.com.hk:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > remoteserver.pem
转换成DER文件,就可以在Windows下直接查看了
openssl x509 -outform der -in remoteserver.pem -out remoteserver.cer
计算MD5和SHA1
MD5 digest
openssl dgst -md5 filename
SHA1 digest
openssl dgst -sha1 filename
name server
TTL 客户端保存缓存的时间 SOA Serial zone文件版本 NS DNS服务器名 MX 10 邮件服务器名 @ 符号代表完整的FQDN * A IP地址 CNAME 别名
zone file template
$TTL 3600 @ IN SOA light.cn. admin.light.cn.( 2015050101; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS light.cn. @ IN A 10.251.137.130
IN A 10.251.137.130
docker IN A 10.251.137.130 salt IN A 10.164.24.247
确认DNS
dig
nslookup
让缓存失效
nscd -i hosts
bind工具, dig, nslookup等
yum -y install bind-utils
bind无法解析自己的域名问题:
会有如下错误 reply from unexpected source expected
bind的自域名需要在/etc/hosts里登录,如下dig docker IN A 10.163.170.150 salt IN A 10.163.170.150 zabbix IN A 10.163.170.150 controller IN A 10.163.170.150 mysql IN A 10.163.170.150
10.163.170.150 salt
linux 版本确认
~$ head /etc/*release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.1 LTS"
Code: $ uname -a Linux anacreon 3.4.2-linode44 #1 SMP Tue Jun 12 15:04:46 EDT 2012 i686 i686 i386 GNU/Linux]
文件夹大小确认
du -h -s * ll -h
SQUID 缓存情况
缓存详细
squidclient -h 127.0.0.1 -p 3128 mgr:info >> hit.log
从日志查询hit数
cat /var/log/squid/access.log | grep HIT | wc -l cat /var/log/squid/access.log | grep MISS | wc -l