1、使用Dockerfile脚本创建镜像
(1)创建目录
mkdir -p /usr/local/dockerjdk8
(2)下载
下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中的/usr/local/dockerjdk8目录
mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8/
(3)创建文件Dockerfile
切换到dockerjdk8目录
cd /usr/local/dockerjdk8/
vi Dockerfile 注意:文件名是固定的
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER xzy
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
(4)执行命令构建镜像
docker build -t='dockerjdk8' .
注意后边的空格和点,不要省略
(5)查看镜像是否建立完成
docker images
(6)创建容器
docker run -it jdk1.8 /bin/bash
ctrl+shift+a+d 退出容器 会进入到里面
查看容器目录:cd local/java/jdk1.8.0_171
练习:
mkdir /usr/local/eureka-package
FROM dockerjdk8
VOLUME /tmp
ADD app.jar /usr/local/
ENTRYPOINT ["java","-jar","/usr/local/app.jar"]
2、私有仓库搭建与配置
(1) 拉取私有仓库镜像(此步略)
docker pull registry
(2) 启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
(3) 打开浏览器 输入地址
http://192.168.184.135:5000/v2/_catalog
看到 {“repositories”:[]} 表示私有仓库搭建成功并且内容为空
(4) 修改daemon.json
用于让 docker信任私有仓库地址
vi /etc/docker/daemon.json
添加以下内容,保存退出。
"insecure-registries":["192.168.184.135:5000"]
我的还需要配置这个参数
# vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled --insecure-registry 192.168.137.17:5000'
(5) 重启docker 服务
systemctl restart docker
3、镜像上传至私有仓库
(1) 标记此镜像为私有仓库镜像
192.168.192.128:5000:必须是ip:端口号标志push到哪里
docker tag jdk1.8 192.168.192.128:5000/jdk1.8
(2) 上传标记的镜像
docker push 192.168.192.128:5000/jdk1.8
(3) 刷新页面查看
{"repositories":["jdk1.8"]}
4、DockerMaven插件
通过Maven插件自动部署。
(1) 修改docker配置
修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
其中ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
(2) 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
(3) 在tensquare_eureka工程pom.xml 增加配置
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:
https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>192.168.184.135:5000/${project.artifactId}:${project.version}
</imageName>
<baseImage>myjdk</baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--这是docker容器的对外端口 就是将jar放到那个容器中 前提是docker 服务器已经
将docker 容器的端口开放 其中2375 就是容器的 端口-->
<dockerHost>http://192.168.184.135:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
------------------------------------------测试已成功-------------------------------------------
<build>
<!--镜像名字-->
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:
https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--这个地方如果随便写是可以放到docker中的但是由于
push 根据标记去找地址所以找不到地址-->
<imageName>192.168.2.157:5000/${project.artifactId}:${project.version}
</imageName>
<baseImage>jdk8</baseImage>
<entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
<resources>
<!--将targe目录下的某个jar提交到那个地方-->
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--这是docker容器的对外端口 就是将jar放到那个容器中 前提是docker 服务器已经
将docker 容器的端口开放 其中2375 就是容器的 端口-->
<dockerHost>http://192.168.2.157:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
以上配置会自动生成Dockerfile
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","‐jar","/app.jar"]
(4) 打包和上传镜像
在windows的命令提示符下,进入tensquare_eureka工程所在的目录,输入以下命令,进行打包和上传镜像
mvn clean package docker:build -DpushImage
浏览器访问 http://192.168.184.135:5000/v2/_catalog ,显示
{"repositories":["jdk1.8","tensquare_eureka"]}
(5) 进入宿主机 , 查看镜像
docker images
(6) 浏览器访问eureka
http://192.168.192.128:6868/
5、Gogs安装与配置
(1) 下载镜像
docker pull gogs/gogs
(2) 创建系统用户git,并设置密码
adduser git
passwd git
切换用户
su git
su root
(3) 上传gogs
mkdir /usr/local/gogs-package
mv gogs_0.11.43_linux_amd64.tar.gz /usr/local/gogs-package
解压
tar -zxvf gogs_0.11.43_linux_amd64.tar.gz
(4) 启动gogs
cd gogs
./gogs web
(5) 配置
假设我的centos虚拟机IP为192.168.184.135 完成以下步骤
在地址栏输入http://192.168.184.135:3000 会进入首次运行安装程序页面,我们
可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大
的公司,可以选择MySQL
6、Jenkins安装
6.1、JDK安装(此步略)
(1) 将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
(2) 执行安装命令
rpm -ivh jdk-8u171-linux-x64.rpm
RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171t
6.2 安装Maven与本地仓库
(1) 将Maven压缩包上传至服务器(虚拟机)
(2) 解压
tar -zxvf apache‐maven-3.3.9-bin.tar.gz
(3) 移动目录
mv apache-maven-3.3.9 /usr/local/maven
(4) 配置本地仓库目录
编辑setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地仓库目录,内容如下
<localRepository>/usr/local/repository</localRepository>
(5) 上传本地仓库
将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository
mv reponsitory_boot /usr/local/repository
是为了以后在打包的时候不必重新下载依赖包,缩短打包的时间。
(6) 编辑settings.xml配置文件
vi /usr/local/maven/conf/settings.xml
<pluginGroups>
<pluginGroup>com.spotify</pluginGroup>
</pluginGroups>
6.2、Jenkins安装与启动
(1) 下载jenkins 或直接从资料上传
wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm
(2) 安装jenkins
mkdir -p /usr/local/jenkins-package
mv jenkins-2.83-1.1.noarch.rpm /usr/local/jenkins-package/
cd /usr/local/jenkins-package
安装
rpm -ivh jenkins-2.83-1.1.noarch.rpm
(3) 配置jenkins
vi /etc/sysconfig/jenkins
修改用户和端口
JENKINS_USER="root"
JENKINS_PORT="8888"
(4) 启动服务
systemctl start jenkins
service jenkins start
(5) 访问链接
从 /var/lib/jenkins/secrets/initialAdminPassword 中获取初始密码串
(6) Jenkins插件安装
安装Maven插件 、 安装Git插件
6.4 全局工具配置
配置jdk路径
/usr/java/jdk1.8.0_171-amd64/
配置maven路径
/usr/local/maven