Skip to content

#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:$PATH
4.	执行命令构建镜像,必须在/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/_catalog

4.修改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 registry

2.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.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/_catalog

4.修改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