常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 1.停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
# 如果想要删除所有container:
docker rm $(docker ps -a -q)
# 2.查看当前有些什么images
docker images
# 3.删除images,通过image的id来指定删除谁
docker rmi <image id>
# 想要删除untagged images,也就是那些id为<None>的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
# 删除全部image
docker rmi $(docker images -q)
# 退出容器
# 1.退出并停止容器:(而后执行docker ps不能看到该容器)
Ctrl+D
# 2.退出但不停止容器:而后执行docker ps能看到该容器)"
Ctrl+P+Q
# 进入容器(只能进入已经启动了的容器,若容器已经停止,则先执行docker start <容器名称或ID> 来启动容器)
docker attach <容器名称或ID>
# 启动/停止容器
docker start/stop <容器名称或ID>
# 查看镜像
docker images
# 提交镜像,(docker commit <容器名称或id> <自定镜像名称>:<自定版本号TAG> )
docker commit 2736 myproject:1.0.0
# 查看镜像的修改历史
docker history 镜像ID
# 连接到容器上运行bash
docker exec -ti CONTAINER /bin/bash
# 删除镜像
docker rmi IMAGE ID
docker rmi REPOSITORY+TAG
# 查看版本
docker version
# 搜索可用docker镜像
docker search centos
# 下载镜像
docker pull centos
# docker导入本地镜像
cat centos.tar | docker import - centos6
# docker导出镜像
docker export id > cenos6.tar
# 在docker容器中运行hello world!
docker run centos echo "hello word"
# 在容器中安装ntpdate的程序
docker run centos yum install ntpdate
# 关闭容器
docker stop id
# 启动某个容器
docker start id
# 删除容器
docker rm id
#容器主机间文件复制
#从主机复制到容器
sudo docker cp host_path containerID:container_path
#从容器复制到主机
sudo docker cp containerID:container_path host_path

启动,端口映射及目录挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 从镜像启动容器
docker run -d -p 9090:8080 --name testproject myproject:1.0.0 /root/run.sh
-d:
# 表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。此时需要查看日志使用命令:docker logs <容器名称或ID>
-p:
# 表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 9090 端口,这样就向外界暴露了 9090 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
--name:
# 表示容器名称,用一个有意义的名称命名即可"

# 把所需要的环境(如jdk,tomcat等)拉取到docker容器中
# 方法一:启动一个容器,同时指定将宿主机中的某个文件夹挂载到docker容器中,-v参数中,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录
docker run -i -t -v /myjava/:/mnt/software/ ubuntu /bin/bash
-i:
# 以交互模式运行容器,通常与 -t 同时使用;
-t:
# 为容器重新分配一个伪输入终端,通常与 -i 同时使用(容器启动后会进入其命令行);
-v:
#指定宿主机的哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

# 方法二:使用docker cp 命令拷贝文件,(docker cp <宿主机目录或文件> <容器名称或id>:<容器目录>)
# 若已经在容器里面,则先退出容器,退出容器后执行命令:
docker cp myjava/ 190d:mnt/software/

便捷搭建服务搭建

jernkins

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v ~/docker/jenkins:/var/jenkins_home jenkins/jenkins
chown -R 1000:1000 ~/docker/jenkins

#更换插件源地址
#进入jenkins的工作目录
#hudson.model.UpdateCenter.xml
#http://updates.jenkins-io/update-center.json
#改成
#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
### 发现http://updates.jenkins-io/update-center.json https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 内容一样,需修改json文件里的实际地址
#进入Jenkins工作目录:
cd /var/lib/jenkins/updates/
#使用sed命令修改default.json文件:
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
jenkins节点失联

如果您不想重新启动,则只需在从站上终止这些进程,然后再次启动从属代理

1
2
3
$ ps -ef |grep java
1006 11948 11930 0 Jul17?00:00:00 bash -c cd“/ mnt / jenkins”&& java -jar slave.jar
1006 11949 11948 0 Jul17?00:02:55 java -jar slave.jar
Timestamper

job配置,构建环境中勾选:Add timestamps to the Console Output。执行时控制台输出就会在每一行显示时间

对于脚本化管道,只需将您的脚本包装在timestamps { } Eg中即可。

1
2
3
timestamps {
// do your job
}

向声明管道添加选项

1
2
3
4
5
pipeline {
agent any
options { timestamps () }
// stages and rest of pipeline.
}

全局配置:在Jenkins配置的“时间戳”部分中选中“为所有管道版本启用”

QQ&微信通知

https://my.oschina.net/u/4320414/blog/3930777

钉钉通知

https://blog.csdn.net/liujingqiu/article/details/87977396

重置Jenkins的build序号

1
2
3
4
5
6
7
# 系统管理->脚本命令行
item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
build.delete()
}
item.updateNextBuildNumber(1)

sonar

构建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker pull postgres
docker pull sonarqube
docker run -p 5432:5432 --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres
docker run --name sq -e SONARQUBE_JDBC_URL=jdbc:postgresql://172.31.19.221:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9000:9000 -d sonarqube
#加插件:https://github.com/rhinoceros/sonar-p3c-pmd/releases/tag/pmd-3.2.0-beta-with-p3c1.3.6-pmd6.10.0
#https://gitee.com/chenlingtao/sonar-pmd.git
docker stop d0c95e1e9270
docker cp /home/docker/sonarqube/extensions/plugins/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar
d0c95e1e9270:/opt/sonarqube/extensions/plugins
docker start d0c95e1e9270
#宿主机目录挂载,方便加插件
docker run -v /home/bq/docker/sonarqube/extensions/plugins:/opt/sonarqube/extensions/plugins --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9000:9000 -d sonarqube
docker run -v ~/docker/sonarqube/extensions/plugins:/opt/sonarqube/extensions/plugins --name sq -e SONARQUBE_JDBC_URL=jdbc:postgresql://172.17.225.160:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9000:9000 -d sonarqube

#内存要够,不够es抛137;sudo sysctl -w vm.max_map_count=524288 太小es抛78
扫描
1
sonar-scanner.bat -D"sonar.projectKey=homepage" -D"sonar.sources=./src" -D"sonar.java.binaries=./out" -D"sonar.host.url=http://ec2-52-221-237-133.ap-southeast-1.compute.amazonaws.com:9000" -D"sonar.login=31d831eb5f55827eb84201821a921ed3131ae455"

禅道

1
2
3
4
5
6
# 创建docker网络驱动
#sudo docker network create --subnet=[ip范围] [网络驱动名]
#ip范围:例如172.172.172.0/24的意思ip可以指定范围为172.172.172.1到172.172.172.254;网络驱动名:创建的网络驱动名,可随意指定;
docker network create --subnet=172.172.172.0/24 zentaonet
#启动
docker run --name zentao -p 8090:80 --network=zentaonet --ip 172.172.172.172 --mac-address 02:42:ac:11:00:00 -v ~/docker/zentao/zentaopms:/www/zentaopms -v ~/docker/zentao/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:latest