#8.14springboot制作镜像
##一、环境准备:
私有仓库 :registry, jdk8
###1.私有仓库
1. 拉取仓库
docker pull registry
2. 制作容器
docker run -di --name=registry -p 5000:5000 registry
3. 查看仓库
http://39.100.90.131:5000/v2/_catalog
ip为我自己的阿里云服务器,5000端口要开通 结果: {"repositories":[]}
4. 修改daemon.json,vi /etc/docker/daemon.json
添加 {"insecure-registries":["39.100.90.131:5000"]}
之前:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
之后:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries":["39.100.90.131:5000"]
}
5.重启docker服务
systemctl restart docker
6.启动registry容器
docker start 26622c04c967###2.jdk8
1. 创建目录
mkdir –p /usr/local/dockerjdk8
2. 上传文件jdk-8u171-linux-x64.tar.gz 到这个/usr/local/dockerjdk8
3. 编写Dockerfile,放在/usr/local/dockerjdk8
4. cd /usr/local/dockerjdk8
这个目录下有:jdk-8u171-linux-x64.tar.gz 和 Dockerfile#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER liucy
#切换工作目录
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:$PATH4. 执行命令构建镜像,必须在/usr/local/dockerjdk8下执行
docker build -t='jdk1.8' .
5. 查看是否成功
docker images
6. 创建jdk8容器
docker run -di --name=jdk8 jdk1.8###3.jdk8上传私有仓库
1. 标记此镜像为私有仓库的镜像
docker tag jdk1.8 39.100.90.131:5000/jdk1.8
2. 确定启动私服容器
docker start registry
3. 上传私服
docker push 39.100.90.131:5000/jdk1.8
4. 查看私服
http://39.100.90.131:5000/v2/_catalog4.修改docker配置,能远程访问
1. 修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
2. 中ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
3. 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry##二、极简
`1.私有仓库
1. docker pull registry
2. docker run -di --name=registry -p 5000:5000 registry
3. http://39.100.90.131:5000/v2/_catalog
4. vi /etc/docker/daemon.json
添加{"insecure-registries":["39.100.90.131:5000"]}
5. systemctl restart docker
6. docker start registry2.jdk8
1. mkdir –p /usr/local/dockerjdk8
2. 上传jdk-8u171-linux-x64.tar.gz
3、 编写Dockerfile
4. cd /usr/local/dockerjdk8 这个目录下有:jdk-8u171-linux-x64.tar.gz 和 Dockerfile
5. docker build -t='jdk1.8' .
6. docker images
7. docker run -di --name=jdk8 jdk1.83.jdk8上传私服
1. docker tag jdk1.8 39.100.90.131:5000/jdk1.8
2. docker start registry
3. docker push 39.100.90.131:5000/jdk1.8
4. http://39.100.90.131:5000/v2/_catalog4.修改docker配置
1. vi /lib/systemd/system/docker.service
2. ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
3. systemctl daemon-reload
systemctl restart docker
docker start registry##三、项目
###1.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>${project.artifactId}:${project.version} </imageName>
<baseImage>jdk1.8</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://39.100.90.131:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>finalName:jar的名字
imageName:镜像的名字
dockerHost:自己的iP
相当于:
FROM jdk1.8
ADD app.jar /
ENTRYPOINT ["java","‐jar","/app.jar"]###2.mvn命令
右键项目terminal
mvn clean package docker:build -DpushImage###3.查看私有仓库
http://39.100.90.131:5000/v2/_catalog###4.制作容器
docker run -di --name=testDocker -p 9000:9000 docker:1.0-SNAPSHOT##四、问题
使用mvn clean package docker:build -DpushImage没有能上传到私服
可能是网络原因1. docker tag docker:1.0-SNAPSHOT 39.100.90.131:5000/docker:1.0-SNAPSHOT
2. docker push 39.100.90.131:5000/docker:1.0-SNAPSHOT
3. http://39.100.90.131:5000/v2/_catalog