1、安装docker
文档:https://docs.docker.com/engine/install/centos/
1、卸载之前的老版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、设置安装的源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、安装
sudo yum install -y docker-ce docker-ce-cli containerd.io
4、启动
sudo systemctl start docker
5、设置开机自启动
sudo systemctl enable docker
2、安装nginx
1、yum安装nginx
yum install -y nginx
2、配置域名解析指向8010端口
1、通过命令找到配置文件位置
nginx -t
2、进入配置文件目录
cd /etc/nginx
3、找到nginx.config
- 这里可以使用远程连接工具(FinalShell)通过进行直接修改文件
- FinalShell点击去安装
配置下面的配置到nginx上
#http的转发配置 server { listen 80;#监听端口 server_name jenkins.自己的域名;#域名 location / { proxy_pass http://localhost:8010; proxy_set_header Host $host; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; } } #监听443 端口转到http上 server { listen 443;#监听端口 server_name jenkins.自己的域名;#域名 rewrite ^/(.*) http://$server_name$request_uri? permanent; }
4、检查配置文件是否有错误
nginx -t
5、没错误就重新加载配置文件
nginx -s reload
3、安装jenkins和配置jenkins
1、docker方法安装Jenkins
1、拉取镜像
docker pull jenkinsci/blueocean
2、创建容器镜像
映射8010端口
docker create --name jenkins -u root -p 8010:8080 \ --privileged=true -v /mydata/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/local/apache-maven-3.5.4:/var/local/apache-maven-3.5.4 \ -v /usr/local/java/jdk1.8.0_221:/var/local/jdk1.8.0_221 \ -v /home/jenkins:/home docker.io/jenkinsci/blueocean
3、查询容器内容
查询所有的运行实例
docker ps -a
4、启动jenkins
docker start jenkins
5、这一步不用做(如果想进入运行的容器)
docker exec -it jenkins /bin/bash
2、jenkins内部安装
1、访问nginx配置的域名
2、查询密码
从docker日志中获取
docker logs jenkins
3、选择默认安装
4、设置用户名
3、安装插件
1、安装中文插件
1、安装中文
2、安装Local插件
3、安装完插件勾选重新启动
就变中文了
2、安装SSH插件
1、系统设置-插件管理-安装完勾选重启
2、配置远程服务器SSH账号密码
- 找到Manage
- 从此处添加
- 添加服务器的账号密码
-
3、安装maven插件
1、搜索插件-安装完一样重启
4、maven全局工具配置
1、系统管理-全局工具配置
2、添加自动安装jdk
配置oracle账号密码
此处是我自己的账号密码请改用你自己的
812297736@qq.com QWERasdf1234@
3、刷新一下
4、自动安装maven
5、配置ssh服务器地址
1、找到位置
2、配置服务器ssh访问地址
4、Docker开启远程访问
1、修改docker.service文件
1、找到文件/usr/lib/systemd/system/docker.service
2、修改之前先备份该文件
cp docker.service docker.service.bk
3、打开文件进行修改docker.service
主要是在[Service]这个部分,将其中ExecStart=参数进行替换为如下文件
注意 这边有些版本 不是ExecStart=/usr/bin/dockerd 记得要复制之前的
- 最关键的不同是添加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
```shell
ExecStart=/usr/bin/dockerd -H fd:// —containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
此处默认2375为主管理端口,[unix://var/run/docker.sock](https://link.jianshu.com/?t=unix%3A%2F%2Fvar%2Frun%2Fdocker.sock)用于本地管理)
<a name="P6gmN"></a>
### 4、最终效果

<a name="I9Cjz"></a>
### 5、将管理地址写入/etc/profile
<a name="JoSJT"></a>
#### 1、写入到文件
```shell
echo 'export DOCKER_HOST=tcp://0.0.0.0:2375' >> /etc/profile
2、重新加载
source /etc/profile
3、docker重新读取配置文件,重启docker服务
1、重新读取配置文件
systemctl daemon-reload
2、重启docker服务
systemctl restart docker
2、配置安全密码访问
- 正式环境可以配置服务器的安全组访问白名单
可以访问https://www.cnblogs.com/-wenli/p/13555833.html
5、Docker开启私有仓库
1、开启镜像服务器
- 本地运行镜像registry:2,暴露端口5000
挂载容器中/var/lib/registry目录到宿主机/mydata/docker/registry目录
docker run -d -v /data/docker/registry:/var/lib/registry \ -p 5000:5000 --name myregistry registry:2
2、测试本地镜像
1、对运行的容器,进行打包
1、docker ps查看运行着的容器
[root@iZbp1fx32c6dtkcurx061oZ system]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 18ec5607533e registry:2 "/entrypoint.sh /etc…" 4 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp myregistry 16af5653d18f jenkinsci/blueocean "/sbin/tini -- /usr/…" 14 hours ago Up 31 minutes 50000/tcp, 0.0.0.0:8010->8080/tcp, :::8010->8080/tcp jenkins d7f1190451ca rabbitmq:management "docker-entrypoint.s…" 14 hours ago Up 30 minutes 0.0.0.0:4369->4369/tcp, :::4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, :::5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, :::15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp, :::25672->25672/tcp, 15691-15692/tcp rabbitmq 72d774fc48e5 mysql:8.0 "docker-entrypoint.s…" 14 hours ago Up 31 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql 09b243eec8c7 redis "docker-entrypoint.s…" 14 hours ago Up 30 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
2、我们这里对 mysql8.0进行一个打包
命令
docker commit [options] 容器ID [repository[:tag]]
red/mysql8.0就是我们新打包 ```shell [root@iZbp1fx32c6dtkcurx061oZ system]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE red/mysql8.0 1 ce7775d1efeb 4 seconds ago 519MB jenkinsci/blueocean latest 54b040dd343a 15 hours ago 582MB jenkins/jenkins latest 1c520775844c 32 hours ago 442MB rabbitmq management aaeff1fdd203 2 days ago 254MB mysql 8.0 5b4c624c7fe1 2 days ago 519MB redis latest 7614ae9453d1 4 weeks ago 113MB registry 2 b8604a3fe854 2 months ago 26.2MB
<a name="DNPL7"></a>
#### 4、docker tag 把镜像归入某一个仓库
docker tag : 标记本地镜像,将其归入某一仓库<br />语法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
```shell
docker tag red/mysql8.0:1 localhost:5000/red/mysql8.0:1
5、重新查看新归档的镜像
[root@iZbp1fx32c6dtkcurx061oZ system]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
red/mysql8.0 1 ce7775d1efeb About a minute ago 519MB
localhost:5000/red/mysql8.0 1 ce7775d1efeb About a minute ago 519MB
jenkinsci/blueocean latest 54b040dd343a 15 hours ago 582MB
jenkins/jenkins latest 1c520775844c 32 hours ago 442MB
rabbitmq management aaeff1fdd203 2 days ago 254MB
mysql 8.0 5b4c624c7fe1 2 days ago 519MB
redis latest 7614ae9453d1 4 weeks ago 113MB
6、docker push 将本地的镜像上传到镜像仓库
- 远程有些服务器可能需要登录(需要登录的要先登陆到镜像仓库)
- docker login —username=用户名 registry.cn-hangzhou.aliyuncs.com
- 语法:docker push [OPTIONS] NAME[:TAG]
- OPTIONS说明:
- —disable-content-trust :忽略镜像的校验,默认开启
- 此处我们只开通本地私有仓库,不对外开放
想用远程的可以搞个阿里云的仓库
docker push localhost:5000/red/mysql8.0:1
注意:如果不想在Java项目中写Docker相关配置,请转下一篇文章Java项目自动部署shell脚本
或者直接点击https://www.yuque.com/smallred-pvgul/djy/sskzb26、配置项目Dockerfile,pom.xml
1、配置Dockerfile文件
1、创建Dockerfile文件
2、填写内容
FROM java:8 VOLUME /tmp ADD seat-user-1.0.0.jar seat-user.jar RUN bash -c 'touch /seat-user.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/seat-user.jar"]
2、配置pom.xml文件
在pom文件中添加如下内容
- 在build标签下添加finalName
- plugins标签中添加plugin
<build> <finalName>${project.artifactId}-${project.version}</finalName> <plugins> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--docker镜像相关的配置信息--> <configuration> <!--镜像名,这里用工程名--> <imageName>${project.artifactId}</imageName> <!--Dockerfile文件所在目录--> <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory> <!--TAG,这里用工程版本号--> <imageTags> <imageTag>${project.version}</imageTag> </imageTags> <registryUrl>localhost:5000</registryUrl> <!--<dockerHost>47.98.199.60:2375</dockerHost>--> <pushImage>true</pushImage> <imageName>localhost:5000/${project.artifactId}:${project.version}</imageName> <!--构建镜像的配置信息--> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.artifactId}-${project.version}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
7、配置Jenkins任务
1、创建一个自由风格任务
2、配置git
1、添加项目地址
2、添加一个用户名和账号
3、配置分支
3、添加构建命令
1、添加构建命令
2、添加Maven构建任务,调用顶层Maven目标
1、添加任务
2、添加命令
我们的项目结构是父子结构的
clean package -f seat-service/seat-user/pom_docker_registry.xml -DskipTests docker:build
3、添加SSH站点并填写命令
1、窗口效果
2、具体命令
- 命令包括停止容器 docker stop
- 删除容器 docker rm
- 然后删除镜像 docker rmi
- 然后开始运行镜像docker run
- 最后删除没有标签的 镜像
```shell
echo “检查docker镜像运行和删除”
!/bin/bash
result=$(docker ps | grep “seat-user”) if [[ “$result” != “” ]] then echo “执行:docker stop seat-user” docker stop seat-user fi result1=$(docker ps -a | grep “seat-user”) if [[ “$result1” != “” ]] then echo “执行 docker rm seat-user” docker rm seat-user fi result2=$(docker images | grep “seat-user”) if [[ “$result2” != “” ]] then echo “执行 rmi localhost:5000/seat-user:1.0.0” docker rmi localhost:5000/seat-user:1.0.0 fi
echo “开始运行镜像” docker run —name seat-user -p 8086:8086 -idt localhost:5000/seat-user:1.0.0 docker logs —tail 100 seat-user echo “删除没有tag标签的镜像” docker images | grep none | awk ‘{print $3}’ | xargs docker rmi
<a name="pYNBr"></a>
# 8、运行测试
<a name="nTVPv"></a>
## 1、点击运行

<a name="fvIzK"></a>
## 2、生成一个任务
<br />
<a name="nBGm3"></a>
## 3、运行成功

<a name="fJ5T9"></a>
## 4、docker images
```shell
[root@iZbp1fx32c6dtkcurx061oZ ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/seat-user 1.0.0 dac699827026 54 seconds ago 838MB
red/mysql8.0 1 ce7775d1efeb 7 hours ago 519MB
localhost:5000/red/mysql8.0 1 ce7775d1efeb 7 hours ago 519MB
jenkinsci/blueocean latest 54b040dd343a 23 hours ago 582MB
jenkins/jenkins latest 1c520775844c 40 hours ago 442MB
rabbitmq management aaeff1fdd203 3 days ago 254MB
mysql 8.0 5b4c624c7fe1 3 days ago 519MB
redis latest 7614ae9453d1 4 weeks ago 113MB
registry 2 b8604a3fe854 2 months ago 26.2MB
java 8 d23bdf5b1b1b 5 years ago 643MB
5、docker ps
[root@iZbp1fx32c6dtkcurx061oZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3c9788e6832 localhost:5000/seat-user:1.0.0 "java -Djava.securit…" About a minute ago Up About a minute 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp seat-user
4aa3a499ea24 mysql:8.0 "docker-entrypoint.s…" 41 minutes ago Up 18 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
18ec5607533e registry:2 "/entrypoint.sh /etc…" 8 hours ago Up 8 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp myregistry
16af5653d18f jenkinsci/blueocean "/sbin/tini -- /usr/…" 21 hours ago Up 8 hours 50000/tcp, 0.0.0.0:8010->8080/tcp, :::8010->8080/tcp jenkins
d7f1190451ca rabbitmq:management "docker-entrypoint.s…" 21 hours ago Up 8 hours 0.0.0.0:4369->4369/tcp, :::4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, :::5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, :::15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp, :::25672->25672/tcp, 15691-15692/tcp rabbitmq
09b243eec8c7 redis "docker-entrypoint.s…" 21 hours ago Up 8 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis