docker :jenkins

1. 从docker 仓库下载jenkins镜像
2. sudo docker run -d –name jenkins -v /home/auto/dockerworkspace/jenkins:/var/jenkins_home -p 8082:8080 jenkins
3.

参考:
1. http://ystyle.top/2016/04/16/docker-jenkins-git-mavenzi-dong-hua-gou-jian-yu-bu-shu/ [基本操作]
2. https://juejin.im/entry/589d1c251b69e60059ba04b5/?utm_source=gold-miner&utm_medium=readme&utm_campaign=github [TODO]
3. http://www.jianshu.com/p/c50423a3f40f[TODO]
4. https://my.oschina.net/jayqqaa12/blog/633683?p=2&temp=1499008269226
5. https://softlns.github.io/2016/11/14/jenkins-gitlab-docker/
6. https://addops.cn/post/jenkins-docker-01.html

docker : 管理容器数据

挂载一个主机目录作为卷

使用-v,除了可以创建一个数据卷,还可以挂载本地主机目录到容器中:

$ sudo docker run -d -P –name web -v /src/webapp:/opt/webapp training/webapp python app.py
这将会把本地目录/src/webapp挂载到容器的/opt/webapp目录。这在做测试时是非常有用的,例如我们可以挂载宿主机的源代码到容器内部,这样我们就可以看到改变源代码时的应用时如何工作的。宿主机上的目录必须是绝对路径,如果目录不存在docker会自动创建它。

备份、恢复或者迁移数据卷 [TODO]

参考:
1. http://wiki.jikexueyuan.com/project/docker/userguide/dockervolumes.html

docker : 容器连接 [TODO]

1. 父容器 跟 子容器相连接

注:你可以使用一个父容器连接多个子容器。例如,我们可以有多个web容器连接到我们的db数据库容器。

参考:
http://wiki.jikexueyuan.com/project/docker/userguide/dockerlinks.html

docker : 安装 Nginx

1. 第一种 自己配置
2. 第二种 直接使用 nginx 的镜像

3. sudo docker run -p 8003:80 –name mynginx -d nginx

4. [TODO 配置容器和主机之间的映射关系]

sudo docker run -p 8003:80 –name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx

参考:
1. http://www.runoob.com/docker/docker-install-nginx.html

docker : hello world

1. 使用容器ubuntu:14.04 输出 hello world
$ sudo docker run ubuntu:14.04 /bin/echo ‘Hello world’
显示: Hello world

使用最新的python容器 输出 hello world
$ sudo docker run python echo ‘Hello world’
显示: Hello world

2. 运行容器里的终端进行交互
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#

3. 命令
docker ps 列出容器
docker logs显示容器的标准输出
docker stop停止正在运行的容器
docker start
docker restart
docker search
docker rm
docker images
docker version
docker port 使用docker port可以查看指定(ID或者名字的)容器的某个确定端口映射到宿主机的端口号
例子:$ sudo docker port nostalgic_morse 5000
0.0.0.0:49155

查看WEB应用程序日志
$ sudo docker logs -f nostalgic_morse
* Running on http://0.0.0.0:5000/
10.0.2.2 – – [23/May/2014 20:16:31] “GET / HTTP/1.1” 200 –
10.0.2.2 – – [23/May/2014 20:16:31] “GET /favicon.ico HTTP/1.1” 404 –

查看我们WEB应用程序容器的过程

我们除了可以查看容器日志,我们还可以使用docker top来查看容器进程:
$ sudo docker top nostalgic_morse
PID USER COMMAND
854 root python app.py

检查我们的WEB应用程序

最后,我们可以使用docker inspect来查看Docker的底层信息。它会返回一个JSON文件记录docker容器的配置和状态信息。

$ sudo docker inspect nostalgic_morse
来让我们看下JSON的输出。

[{
“ID”: “bc533791f3f500b280a9626688bc79e342e3ea0d528efe3a86a51ecb28ea20”,
“Created”: “2014-05-26T05:52:40.808952951Z”,
“Path”: “python”,
“Args”: [
“app.py”
],
“Config”: {
“Hostname”: “bc533791f3f5”,
“Domainname”: “”,
“User”: “”,
. . .
我们也可以针对我们想要的信息进行过滤,例如,返回容器的IP地址,如下:

$ sudo docker inspect -f ‘{{ .NetworkSettings.IPAddress }}’ nostalgic_morse
172.17.0.5

4.使用Dockerfile创建镜像

$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile

# This is a comment
FROM ubuntu:14.04
MAINTAINER Kate Smith
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra

参考:
1.http://dockone.io/article/102
2.http://www.runoob.com/docker/docker-hello-world.html
3.http://wiki.jikexueyuan.com/project/docker/

jenkins : 优化 (一)

1. 版本升级
1. 下载 jenkins.war最新版本
2. 查找 jenkins.war 的位置
1. Typically it is /var/lib/jenkins
dpkg -L jenkins will help you find what files does a package install
3. 做好备份
4. 替换版本
2. 下载代码优化
1. 我们使用git clone 一般都是将所有分支的代码下载下来,再进行切换。
现在工程的代码越来越打,分支越来越多,每次下载都很吃力

参考:
1. http://blog.csdn.net/felix_yujing/article/details/54235536
2.

java : 获取当月第一天和最后一天

package com.test.packager;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {
private static String firstDay;
private static String lastDay;
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);

//获取前月的第一天
Calendar cal_1=Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(cal_1.getTime());
System.out.println(“—–1——firstDay:”+firstDay);
//获取前月的最后一天
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
lastDay = format.format(cale.getTime());
System.out.println(“—–2——lastDay:”+lastDay);

//获取当前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String first = format.format(c.getTime());
System.out.println(“===============first:”+first);

//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String last = format.format(ca.getTime());
System.out.println(“===============last:”+last);

}
/**
* 字符串的日期格式的计算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
}

参考:
1.http://cherryqq.iteye.com/blog/1117026
2.http://www.cnblogs.com/lr393993507/p/5542607.html