docker部署之私服管理
一、简介 docker私服是存放镜像的本地仓库,类似于docker hub。不过私服是本地的仓库,方便自己公司部署管理由微服务打包成的docker镜像。 话不多说,通过一个例子,教你快速搭建docker私服。二、registry搭建docker搭建如果没有安装虚拟机,可以参考文章《VMware安装Centos7并联网使用》docker安装参考文章《还不会安装docker?这里帮你搞定》启动dock
一、简介
docker私服是存放镜像的本地仓库,类似于docker hub。不过私服是本地的仓库,方便自己公司部署管理由微服务打包成的docker镜像。
话不多说,通过一个例子,教你快速搭建docker私服。
二、registry搭建
- docker搭建
如果没有安装虚拟机,可以参考文章《VMware安装Centos7并联网使用》
docker安装参考文章《还不会安装docker?这里帮你搞定》 - 启动docker
$ 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
查看私服镜像仓库:
更多推荐
所有评论(0)