dockerfile创建镜像JDK
# mkdir -p /usr/local/dockerjdk8 创建文件夹 ( -p 级联创建)
# 将jdk文件包上传到刚刚创建的dockerjdk8目录并解压
# vi Dockerfile 注意:文件名是固定的 此文件必须与上传的jdk文件同一目录
#依赖镜像名称和ID ( jdk依赖于contos7 contos7也叫基础镜像)
FROM centos:7
#指定镜像创建者信息
MAINTAINER lcchina
#切换工作目录
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
执行命令构建镜像
docker build -t='dockerjdk8' . 名字可以随意起''可以省略,名字后面空格. 注意后边的空格和点,不要省略
查看镜像是否建立完成
docker images
创建容器
docker run -it jdk1.8 /bin/bash
将服务通过dockerfile打成镜像
创建目录 mkdir /usr/local/server
并将打好的jar包上传到创建好的server目录下
上传方式一:在server目录 直接rz上传 (推荐)
上传方式二: Alt+P put G:\nacosspring\nacos_server\target\myapp.jar
将jar剪切到server目录下 mv myapp.jar /usr/local/server/
创建 vi Dockerfile
# from是此时要打成镜像依赖于jdk镜像
FROM dockerjdk8
# 挂载目录
VOLUME /tmp
# add移动到指定目录并解压
ADD myapp.jar /usr/local/server/
# 执行 相当于java -java app.jar
ENTRYPOINT ["java","-jar","/usr/local/server/myapp.jar"]
执行命令构建镜像
docker build -t=myapp . 名字可以随意起''可以省略,名字后面空格. 注意后边的空格和点,不要省略
查询看镜像
docker images
镜像创建容器
docker run -di --name myapp -p 8012:8012 myapp
[私有仓库搭建与配置]
(1)拉取docker私有仓库镜像
docker pull registry
(2)创建私有仓库容器并启动
docker run -di --name=registry -p 5000:5000 registry
docker start 容器id
(3)打浏览器访问地址
http://192.168.233.137:5000/v2/_catalog
(4)添加信认在开发服务器中添加私有仓库docker地址
vi /etc/docker/daemon.json
(5)添加以下内容,保存退出。(开发服务中添加公有服务中的docker地址)此配置是配置两个docker中的私有仓库
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["192.168.233.137:5000"]
}
(6)重启docker服务
systemctl restart docker 或 sevice docker restart
[镜像上传至私有仓库 A服务上传到B服务]
(1)将A服务中的镜像先打标记
docker tag dockerjdk8 192.168.233.137:5000/dockerjdk8
(2) 上传标记的镜像
docker push 192.168.233.137:5000/dockerjdk8 (上传)
docker pull 192.168.233.137:5000/dockerjdk8 (下载)
DockerMaven插件(重点)
说明:通过maven插件自动部署到私有仓库(如果不使用maven插件其将jar包通过dockerfile转成镜像并打成标记后才能上传并中间还有一台docker服务A--B.使用maven插件后直接打成镜像上传到私有仓库.中间不需要中转docker服务)
(1)修改宿主机的docker配置,让其可以远程访问(此配置让外部访问信认)
vi /lib/systemd/system/docker.service
#其中ExecStart=后添加配置
#说明0.0.0.0表示任意地址都可以访问但必须指定端口(端口自定义)
-H tcp://0.0.0.0:0312 -H unix:///var/run/docker.sock
(2) 刷新配置,重启服务
systemctl daemon-reload (重新加载)
systemctl restart docker (重启docker)
docker start registry (重启私有仓库容器)
#如果不想麻烦 直接重启服务器即可
reboot (重启服务器)
(3) 在服务中工程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.233.136:5000/${project.artifactId}:${project.version}
</imageName>
<!--指定基础镜像-->
<baseImage>dockerjdk8</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>
<!--信认地址-->
<dockerHost>http://192.168.233.136:0312</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
不通过私有库直接推送到docke中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<!-- 镜像名称 -->
<imageName>${project.artifactId}:${project.version}</imageName>
<!-- 基础镜像jdk 1.8-->
<baseImage>java</baseImage>
<!--切换到/ROOT目录 -->
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!-- 指定 Dockerfile 路径
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
-->
<!--指定远程 docker api地址-->
<dockerHost>http://192.168.4.182:0312</dockerHost>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
<directory>${project.build.directory}</directory>
<!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
IDEA docker 插件使用
配置信息
启动
查看
点击IDEA右侧的M 选择服务执行以下命令
mvn clean package docker:build -DpushImage
启动上传后的容器
docker run -di --name eureka -p 8001:8001 my_eureka:1.0-SNAPSHOT
Gogs安装与配置
(1) 下载镜像 (本地git服务器)
docker pull gogs/gogs
(2)启动容器
docker run -di --name gogs -p 3000:3000 gogs/gogs
(3) 配置
假设我的centos虚拟机IP为192.168.233.136 完成以下步骤 在地址栏输入[http://192.168.233.136:3000](http://192.168.233.136:3000) 会进入首次运行安装程序页面,我们可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大的公司,可以选择MySQL
打开Settings 找到git 选择本地安装git目录
Jenkins安装
配置maven插件与仓库
(1) 将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
执行安装命令: rpm -ivh jdk-8u171-linux-x64.rpm
(2)安装Maven与本地仓库
# 解压插件
tar -zxvf apache‐maven-3.3.9-bin.tar.gz
(3) 上传maven仓库
ALT+P
push -f 要上传的仓库目录
(4) 配置本地仓库目录(settings.xml)
编辑setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地仓库目录,内容如下
<localRepository>/usr/local/repository</localRepository>
(5)再次编辑settings.xml配置文件
vi /usr/local/maven/conf/settings.xml
<pluginGroups>
<pluginGroup>com.spotify</pluginGroup> (添加些内容)
</pluginGroups>
Jenkins安装与启动
(1)上传jenkins安装包并安装
创建目录: mkdir mkdir -p /usr/local/jenkins
安装命令: rpm -ivh jenkins-2.83-1.1.noarch.rpm
(2) 配置jenkins
vi /etc/sysconfig/jenkins
(3) 启动服务
systemctl start jenkins 或者 service jenkins start
启动后复制首页的密文进行解密
cat /var/lib/jenkins/secrets/initialAdminPassword
docker中安装jenkins
拉取镜像
docker pull jenkins/jenkins:lts