light-deploy

0.1.4 • Public • Published
  1. 安装

yum install docker -y

service start docker

chkconf on docker

centos7 启动出错

yum install device-mapper-event-libs -y

  1. 创建镜像

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

  1. 常用命令

查看本地的镜像

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

  1. 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

  1. 切换centos版本 为最新,使用yum的时候有包冲突的问题
  2. 切换fakesystemd 到 systemd,为了使用服务启动多个进程
  3. 启动时,使用--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

生成密码文件

docker run --entrypoint htpasswd docker.alphabets.cn/registry:2.5.1 -Bbn admin alphabets > htpasswd

docker inspect registry

cp -R htpasswd ssl docker_folder

Readme

Keywords

none

Package Sidebar

Install

npm i light-deploy

Weekly Downloads

2

Version

0.1.4

License

MIT

Last publish

Collaborators

  • r2space