前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker搭建私有仓库

docker搭建私有仓库

作者头像
爱撒谎的男孩
发布2019-12-31 16:21:23
7700
发布2019-12-31 16:21:23
举报
文章被收录于专栏:码猿技术专栏码猿技术专栏

文章目录

1. Docker私有仓库

1.1. 步骤1.2. 上传镜像到私有仓库

1.3. 下载镜像

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

1.4.1. 步骤

1.4.1.1. 仓库所在服务器的配置

1.4.1.2. 项目中的配置

1.4.1.3. 拉取上传的镜像并且运行

1.5. 源码

1.6. 参考文章

Docker私有仓库

步骤

  • docker pull registry
  • docker run --name registry -p 5000:5000 -d registry
  • 启动完成后访问http:// 192.168.174.130:5000/v2/_catalog即可看到如下的内容说明启动成功:
代码语言:javascript
复制
{
	"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,将会看到如下内容
代码语言:javascript
复制
{
    "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'
  • vim /lib/systemd/system/docker.service添加如下内容
  • 执行下面的命令刷新配置并且重启docker
代码语言:javascript
复制
systemctl daemon-reload
systemctl restart docker
  • 开启防火墙的端口:firewall-cmd --zone=public --add-port=2375/tcp --permanent
  • 重新载入配置firewall-cmd --reload
项目中的配置
  • 在pom.xml文件中添加如下内容:
代码语言:javascript
复制
<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:maven打jar包
    • docker:build:docker构建镜像的命令
    • -DpushImage: 将生成的镜像上传到私有仓库中
  • 执行并且运行成功之后访问http://192.168.174.130:5000/v2/_catalog,将会出现如下的内容
代码语言:javascript
复制
{
    "repositories": [
    "demo"
    ]
}
  • 访问http://192.168.174.130:5000/v2/demo/tags/list,可以看到demo这个镜像的所有版本
  • 上面的运行完成之后,查看项目中自动生成Dockerfile,如下:
代码语言:javascript
复制
FROM hub.c.163.com/library/java:8-alpine
ADD /demo.jar //
ENTRYPOINT ["java", "-jar", "/demo.jar"]
拉取上传的镜像并且运行
  • 在拉取之前需要添加信任
  • 使用 docker pull 192.168.174.130:5000/demo:0.0.1-SNAPSHOT下载仓库中的镜像
  • 运行镜像:docker run --name demo -p 7001:7001 -d f7f36f3f3f06
    • 其中生成的镜像端口为项目自己本身配置的端口,只需要映射出去即可
  • 此时我们可以访问http://192.168.174.128:7001/,就能看到eureka注册中心的页面

源码

参考文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker私有仓库
    • 步骤
      • 上传镜像到私有仓库
        • 下载镜像
          • Docker Maven插件自动上传镜像到私有仓库
            • 步骤
          • 源码
            • 参考文章
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档