实验环境
一共用了4台主机,预安装的Ubuntu 18.04.1 LTS系统和Docker-ce 18.09.2版本.
Registry端IP:192.168.99.100
Gitlab端IP:192.168.99.101
Runner端IP:192.168.99.102
Nginx端IP:192.168.99.103
安装使用存储库
#卸载docker,确保系统内不docker应用
$ sudo apt-get remove docker docker-engine docker.io containerd runc
#更新 apt
$ apt-get update
#安装包以允许apt通过HTTPS使用存储库:
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#添加Docker的官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
#设置稳定存储库
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
安装docker-ce
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
查看docker版本
$ docker version
Docker私有云
本地获取registry镜像
$ docker search registry
$ docker pull registry
创建registry容器
$ docker run -d \
--name registry \
--restart=always \
--publish 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
测试私有库
$ curl -X GET http://192.168.99.100:5000/v2/_catalog
{"repositories":[]}
#因为我们还没有像私有容器提交镜像,所以这里返回空。
创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f09fe80eb0e7 11 days ago 109MB
$ docker tag nginx:latest 192.168.99.100:5000/nginx:nginx
$ docker push 192.168.99.100:5000/nginx:nginx
注意事项
如果你想让本网段的其他主机也能把镜像推送到私有仓库。
你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。
这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制。
第一次执行"docker push 192.168.99.100:5000/nginx:nginx "可能报如下异常:
$ docker push 192.168.99.100:5000/nginx:nginx
The push refers to repository [192.168.99.