一、简介

 docker私服是存放镜像的本地仓库,类似于docker hub。不过私服是本地的仓库,方便自己公司部署管理由微服务打包成的docker镜像。
 话不多说,通过一个例子,教你快速搭建docker私服。

二、registry搭建

$ systemctl start docker
  • 拉取registry镜像
$ docker pull registry

  • 查看已下载的镜像
$ docker images

  • 启动registry
$ docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry docker.io/registry

-d 表示后台运行;
-v 表示挂载目录,将容器内部的/var/lib/registry挂载到宿主机的/opt/registry;
–name 表示取别名;
-p 表示指定端口,第一个参数是外部访问端口,第二个是映射到内部的端口;
docker.io/registry表示镜像名称,如果要指定版本(TAG),需要docker.io/registry:1.0,(假设1.0为版本号)。

  • 查看正在运行的容器
$ docker ps

  • 浏览器中访问
    虚拟机ip:5000/v2/_catalog,可以看到私服仓库的信息

三、测试私服仓库

  • 将加速镜像改为私服地址
$ vi /etc/docker/daemon.json

修改内容:

{
    "registry-mirrors":
    [
        "http://172.20.10.6:5000",
        "http://hub-mirror.c.163.com",
        "https://registry.docker-cn.com"
    ],
    "insecure-registries": ["172.20.10.6:5000"]
}

insecure-registries 表示支持http上传的列表,否则仅支持https上传。

  • 拉取镜像到本地
$ docker pull docker.io/hello-world

  • 打标签
$ docker tag docker.io/hello-world 172.20.10.6:5000/hello-world

172.20.10.6:5000为私服地址。

  • 将本地镜像上传到私服
$ docker push 172.20.10.6:5000/hello-world

  • 查看私服

    或使用curl测试:
$ curl -XGET http://172.20.10.6:5000/v2/_catalog

四、SpringBoot项目上传私服

编辑/usr/lib/systemd/system/docker.service文件:

$ vi /usr/lib/systemd/system/docker.service

添加:

-H tcp://0.0.0.0:2375 \
-H unix://var/run/docker.sock \

目的是为了方便远程使用docker-maven-plugin插件上传镜像到私服。

重启docker:

$ systemctl daemon-reload
$ systemctl restart docker

docker-maven-plugin配置:

<plugin>
	<groupId>io.fabric8</groupId>
	<artifactId>docker-maven-plugin</artifactId>
	<version>${docker.plugin.version}</version>
	<configuration>
		<!-- Docker Remote Api-->
		<dockerHost>http://172.20.10.6:2375</dockerHost>
		<!-- Docker 镜像私服-->
		<registry>172.20.10.6:5000</registry>
		<images>
			<image>
				<name>172.20.10.6:5000/library/${project.name}:${project.version}</name>
				<build>
					<dockerFile>${project.basedir}/Dockerfile</dockerFile>
				</build>
			</image>
		</images>
	</configuration>
</plugin>

${project.basedir}是项目根目录。

Dockefile配置:

FROM openjdk:8-jdk-alpine

MAINTAINER wangiegie@gmail.com

ENV TZ=Asia/Shanghai

RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN mkdir -p /pig-register

WORKDIR /pig-register

EXPOSE 8848

ADD ./target/pig-register.jar ./

CMD sleep 30;java -Djava.security.egd=file:/dev/./urandom -jar pig-register.jar

此处不做过多Dockerfile配置说明。
依次执行:
maven clean -> maven install -> docker build -> docker push


查看私服镜像仓库:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐