转载

docker搭建私有仓库

docker pull registry
docker run --name registry -p 5000:5000 -d registry
http:// 192.168.174.130:5000/v2/_catalog
{
	"repositories": []
}
  • 添加信任(无论是下载还是上传都需要添加,这里的ip和端口指定的是私有仓库的宿主机的ip):

    • vim /etc/docker/daemon.json ,添加如下的内容:
    "insecure-registries":["192.168.174.130:5000"]
    
    • 重启docker , systemctl restart docker

上传镜像到私有仓库

  • docker tag jdk8 192.168.174.130:5000/jdk8 : 标记该镜像
    • 指定仓库所在的ip和端口号
    • 第一个jdk8是当前的镜像名称(或者填Id),后一个是上传到仓库中的名字,可以任意起
  • docker images :此时查看镜像,发现多了一个 192.168.174.130:5000/jdk8 的镜像

  • docker push 192.168.174.130:5000/jdk8 :将标记的镜像上传到私有仓库中

  • 此时再次访问 http:// 192.168.174.130:5000/v2/_catalog ,将会看到如下内容

{
    "repositories": [
    "jdk8"
    ]
}

下载镜像

  • 添加信任

    • vim /etc/docker/daemon.json`,添加如下的内容:
    "insecure-registries":["192.168.174.130:5000"]
    
    • 重启docker , systemctl restart docker
  • 下载,需要指定ip和端口: docker pull 192.168.174.130:5000/jdk8

Docker Maven插件自动上传镜像到私有仓库

步骤

仓库所在服务器的配置

  • 添加信任,同上

  • 修改 /etc/sysconfig/docker 文件: vim /etc/sysconfig/docker

    • 在最下面添加一行 DOCKER_OPTS='-H unix:///var/run/docker.sock -H 0.0.0.0:2375'

      • docker搭建私有仓库
  • vim /lib/systemd/system/docker.service 添加如下内容
    • docker搭建私有仓库
  • 执行下面的命令刷新配置并且重启docker
systemctl daemon-reload
systemctl restart docker
  • 开启防火墙的端口: firewall-cmd --zone=public --add-port=2375/tcp --permanent

  • 重新载入配置 firewall-cmd --reload

项目中的配置

  • 在pom.xml文件中添加如下内容:
<build>
		<!-- 指定的最终打成jar包的名字 -->
		<finalName>demo</finalName>
		<plugins>
			<!-- SpringBoot的maven插件 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.13</version>
				<configuration>
					<!-- 注意imageName需要指定的`IP:端口/image_name`的格式-->
					<imageName>192.168.174.130:5000/${project.artifactId}:${project.version}</imageName>
					<!-- 指定基础镜像,不需要运行,相当于 from hub.c.163.com/library/java:8-alpine -->
					<baseImage>hub.c.163.com/library/java:8-alpine</baseImage>
					<!--覆盖相同标签镜像-->
					<forceTags>true</forceTags>    
					<!-- 运行jar包 -->
					<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>
					<!-- 指定私有仓库所在服务器的2375端口,之前配置过可以远程访问的那个 -->
					<dockerHost>http://192.168.174.130:2375</dockerHost>
				</configuration>
			</plugin>
		</plugins>
	</build>
  • 在命令台运行如下的命令,即可完成生成镜像并且上传到私有仓库
    • mvn clean package docker:build -DpushImage
  • 上述命令的解析如下:
    mvn clean package
    docker:build
    -DpushImage
    
  • 执行并且运行成功之后访问 http://192.168.174.130:5000/v2/_catalog ,将会出现如下的内容
{
    "repositories": [
    "demo"
    ]
}
  • 访问 http://192.168.174.130:5000/v2/demo/tags/list ,可以看到demo这个镜像的所有版本

docker搭建私有仓库

  • 上面的运行完成之后,查看项目中自动生成Dockerfile,如下:
FROM hub.c.163.com/library/java:8-alpine
ADD /demo.jar //
ENTRYPOINT ["java", "-jar", "/demo.jar"]
原文  https://chenjiabing666.github.io/2018/12/30/docker搭建私有仓库/
正文到此结束
Loading...