一般情况下,docker服务采用的都是docker官方的仓库,但是由于官方仓库服务器在国外,网速往往会比较查,所以很多人回踩用国内的镜像加速,这里我要讲的是如何搭建自己的私有docker仓库。
目前,由于docker服务使得应用的部署变得非常简单高效,使用docker部署应用已经变得越来越热门,通过docker hup下发应用的方式可以非常快的实现应用的部署和迭代升级,但是在真实的生产环境中,很多企业尤其是金融类银行类的企业往往是不允许生产环境直接连接外网的,所以搭建一个自己docker仓库显得非常有必要。
使用官方的docker-registry镜像搭建docker私有仓库
- 下载对应的镜像
# docker pull registry
- 启动通过该镜像启动容器
# docker run -d -p 5000:5000 --restart=always --name registry registry
- 开通linux防火墙对应的端口
# firewall-cmd --add-port=5000/tcp --permanent
- 对本地的镜像打上标签并上传到仓库(这里的本地仓库相对与其他端就是远程仓库)
# docker tag <image-name>[:<tag>] 127.0.0.1:5000/<path>/<image-name>:<tag>
# docker push 127.0.0.1:5000/<path>/<image-name>:<tag>
- 在应用部署端配置
/etc/docker/daemon.json
文件
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io", "http://hub-mirror.c.163.com", "https://registry.docker-cn.com"],
"insecure-registries": ["remote-ip:remote-port"]
}
- 重启docker
# systemctl restart docker
- 从远程仓库拉取对应的image
# docker pull <remote-ip>:<remote-port>/<path>/<image-name>[:<tag>]
- 查看拉取的docker镜像
# docker image ls
使用harbor搭建私有仓库
安装harbor前需要安装docker-compose,安装方式很简单,直接下载对应的文件放到/usr/local/bin
目录下并赋予执行权限即可。
# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
或者可以直接去官网或者在CSDN资源下载对应的compose文件,并将其上传到/usr/local/bin
目录下,并使用chmod +x /usr/local/bin/docker-compose
赋予其可执行权限即可。
正式安装harbor之前需要将selinux设置为permissive
或者disabled
,
在githup或者CSDN资源池下载对应的harbor安装包harbor-offline-installer-v1.8.2.tgz
,使用tar -zxvf harbor-offline-installer-v1.8.2.tgz
解压,进入harbor目录,并且编辑配置文件,将harbor.yml
文件终端的hostname
属性设置为本地的ip或者域名,
hostname: www.example.com
执行安装程序:
# ./install
添加防火墙策略开通80或者443端口
# firewall-cmd --add-port=80/tcp --permanent
将本地镜像上传到远程harbor服务器
打tag
# docker tag <image-name>:<tag> <remote-ip|remote-host>/<path>/<image-name>:<tag>
登录远程仓库
# docker login <remote-ip|remote-port>
# 输入对应的用户名和密码(默认的harbor用户名为"admin",密码为"Harbor12345"
...
上传镜像到远程仓库
# dcoker push <remote-ip| remote-host>/<path>/<image-name>:<tag>
使用浏览器登录仓库所在服务器查看镜像是否上传成功
从远程仓库下载对应的镜像,若该仓库为http
协议不是https
,需要将该仓库ip或域名添加到daemon.json
文件的insecure-registries
属性中
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io", "http://hub-mirror.c.163.com", "https://registry.docker-cn.com"],
"insecure-registries": ["remote-ip | remote-host"]
}
登录远程仓库
# docker login <remote-ip | remote-host >
拉取远程镜像
# docker pull <path>/<image-name>:<tag>