Docker 私有仓库搭建,Shipyard管理器部署

前提

使用 Docker Hub 可以解决大部分问题,但有时候我们也会有自己私有的镜像,且 Docker Hub 网速也是个问题,所以搭建一个私有的内部的仓库必不可少。
搭建私有仓库的优点 :

  • 节省网络带宽,提升Docker部署速度,不用每个镜像从DockerHub上去下载,只需从私有仓库下载就可
  • 私有镜像,包含公司敏感信息,不方便公开对外,只在公司内部使用

docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x 版本。

1、 搭建私有仓库

1.1 查找合适的镜像

docker search registry --filter=stars=100

--filter=stars=100 表示过滤掉星数低于100

官方镜像

1.2 安装镜像

docker pull registry

1.3 启动镜像

docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /opt/docker/registry:/var/lib/registry registry

参数解释

  • -d 后台运行
  • -p 将容器的5000端口映射到宿主机的5000端口
  • --restart docker服务重启后总是重启此容器
  • --name 容器的名称
  • -v 将容器内的/var/lib/registry映射到宿主机的/opt/docker/registry目录

1.4 允许http访问

Docker 默认不允许非HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 HTTPS 访问的私有仓库
修改/etc/docker/daemon.json 添加私有仓库地址

{
"registry-mirrors":[
		"http://f1361db2.m.daocloud.io"
	],
"insecure-registries": [
    "http://192.168.18.30:5000"
  ]
}

该文件必须符合 json 规范,否则 Docker 将不能启动
registry-mirrors 配置加速地址
insecure-registries 配置非httpshub的地址

2、搭建WEB管理工具

搭建一个web服务,查看仓库里的镜像,查看修改image比较方便;docker web 管理工具比较多,比如shipyarddocker ui 等,这里使用shipyard管理工具

2.1 安装

2.1.1 shipyard依赖安装

rethinkdb
deploy首先启动的就是RethinkDB容器,shipyard采用RethinkDB作为数据库来保存用户等信息

docker pull rethinkdb

microbox/etcd
为了使用Swarm,我们需要一个外部的密钥值存储群容器,shipyard默认是采用了etcd

docker pull microbox/etcd

shipyard/docker-proxy
默认情况下,Docker引擎只监听Socket,我们可以重新配置引擎使用TLS或者使用一个代理容器,转发请求从TCPDocker监听的UNIX Socket

docker pull shipyard/docker-proxy

swarm
Swarm管理器,和设置代理

docker pull swarm

shipyard/shipyard
shipyard控制器,Remote API的实现和web的实现。

docker pull shipyard/shipyard

2.2.2 启动依赖

注意启动顺序

  • 启动数据存储
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-rethinkdb \
    rethinkdb
  • 启动Discovery
docker run \
    -ti \
    -d \
    -p 4001:4001 \
    -p 7001:7001 \
    --restart=always \
    --name shipyard-discovery \
    microbox/etcd -name discovery
  • 启动代理
docker run \
    -ti \
    -d \
    -p 2375:2375 \
    --hostname=$HOSTNAME \
    --restart=always \
    --name shipyard-proxy \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e PORT=2375 \
    shipyard/docker-proxy:latest

$HOSTNAME 会获取系统变量

  • 启动Swarm Manager
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-swarm-manager \
    swarm:latest \
    manage --host tcp://0.0.0.0:3375 etcd://<IP-OF-HOST>:4001

注意 改成自己的,是shipyard部署机的IP

  • 启动 Controller
docker run \
    -ti \
    -d \
    --restart=always \
    --name shipyard-controller \
    --link shipyard-rethinkdb:rethinkdb \
    --link shipyard-swarm-manager:swarm \
    -p 8080:8080 \
    shipyard/shipyard:latest \
    server \
    -d tcp://swarm:3375

在浏览器输入: http://127.0.0.1:8080
默认账号:admin
默认密码:shipyard
Docker 私有仓库搭建,Shipyard管理器部署_第1张图片

可以采用一键部署的方式 参考 Shipyard Automated

curl -sSL https://shipyard-project.com/deploy | bash -s -- -h

注意

-sSLSSL 连接,若不支持 改成 -s 即可

非一键安装模式 参考
官方教程
shipyard安装

你可能感兴趣的:(Docker 私有仓库搭建,Shipyard管理器部署)