使用 Docker Hub
可以解决大部分问题,但有时候我们也会有自己私有的镜像,且 Docker Hub
网速也是个问题,所以搭建一个私有的内部的仓库必不可少。
搭建私有仓库的优点 :
Docker
部署速度,不用每个镜像从DockerHub
上去下载,只需从私有仓库下载就可docker-registry
是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x
版本。
docker search registry --filter=stars=100
--filter=stars=100
表示过滤掉星数低于100
的
docker pull registry
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
目录
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
配置非https
的hub
的地址
WEB
管理工具搭建一个web
服务,查看仓库里的镜像,查看修改image
比较方便;docker
web
管理工具比较多,比如shipyard
、docker ui
等,这里使用shipyard
管理工具
rethinkdb
deploy
首先启动的就是RethinkDB
容器,shipyard
采用RethinkDB
作为数据库来保存用户等信息
docker pull rethinkdb
microbox/etcd
为了使用Swarm
,我们需要一个外部的密钥值存储群容器,shipyard
默认是采用了etcd
docker pull microbox/etcd
shipyard/docker-proxy
默认情况下,Docker
引擎只监听Socket
,我们可以重新配置引擎使用TLS
或者使用一个代理容器,转发请求从TCP
到Docker
监听的UNIX Socket
docker pull shipyard/docker-proxy
swarm
Swarm
管理器,和设置代理
docker pull swarm
shipyard/shipyard
shipyard
控制器,Remote API
的实现和web
的实现。
docker pull shipyard/shipyard
注意启动顺序
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
可以采用一键部署的方式 参考 Shipyard Automated
curl -sSL https://shipyard-project.com/deploy | bash -s -- -h
注意
-sSL
是SSL
连接,若不支持 改成-s
即可
非一键安装模式 参考
官方教程
shipyard安装