Docker部署之私服管理

一、简介

docker私服是存放镜像的本地仓库,类似于docker hub。不过私服是本地的仓库,方便自己公司部署管理由微服务打包成的docker镜像。

话不多说,通过一个例子,教你快速搭建docker私服。

二、registry搭建

  • docker搭建

如果没有安装虚拟机,可以参考文章《VMware安装Centos7并联网使用

docker安装参考文章《还不会安装docker?这里帮你搞定

  • 启动docker
1
$ systemctl start docker
  • 拉取registry镜像

    1
    $ docker pull registry

  • 查看已下载的镜像

1
$ docker images

  • 启动registry
1
$ 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为版本号)。

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

  • 浏览器中访问

    虚拟机ip:5000/v2/_catalog,可以看到私服仓库的信息

    三、测试私服仓库

  • 将加速镜像改为私服地址

1
$ vi /etc/docker/daemon.json

修改内容:

1
2
3
4
5
6
7
8
9
{
"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上传。

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

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

172.20.10.6:5000为私服地址。

  • 将本地镜像上传到私服

    1
    $ docker push 172.20.10.6:5000/hello-world

  • 查看私服


    或使用curl测试:

1
$ curl -XGET http://172.20.10.6:5000/v2/_catalog

四、SpringBoot项目上传私服

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

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

添加:

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

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

重启docker:

1
2
$ systemctl daemon-reload
$ systemctl restart docker

docker-maven-plugin配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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


查看私服镜像仓库:


查看评论