Docker的整个生命周期由三部分组成:镜像(image)+容器(container)+仓库(repository)
容器等于镜像加上可读层,容器是由镜像实例化而来的。简单来说,镜像是文件,容器是进程,容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件
通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用。显然,这在某些场景下是不适用的,比如企业级别的隐私项目,又或者是公司完全处于内网状态不能访问外网,再或者是想个性化定制某些配置等等,这时就需要用到私有存储库了
注意:私有存储库是基于docker hub在线存储库的registry镜像搭建的
1、docker hub在线存储库拉取registry镜像
docker pull registry
2、创建帐号密码文件夹
cd /opt/
mkdir auth
cd /auth/
3、写入帐号密码,生成帐号密码文件
echo "user:test passwd:123456" >htpasswd
4、加密帐号密码文件
docker run --entrypoint htpasswd registry:latest -Bbn test 123456 >auth/htpasswd
5、启动registry容器,默认端口5000映射到5000
docker run ?-d -p 5000:5000 --restart=always --name registry
部分参数说明:
6、配置私有仓库地址
vim /etc/docker/daemon.json
添加以下配置
{
?? ?"insecure-registries": ["私有仓库IP:5000"]
}
7、重启docker
systemctl restart docker
浏览器访问http://私有仓库IP:5000/v2/_catalog
如果访问不到,尝试关闭防火墙
systemctl stop firewalld
如果还是访问不不到,可以重启一下docker
sudo systemctl restart docker
然后重新运行一下registry容器
docker restart registry容器ID?
8、登录私有仓库
docker login 私有仓库IP:5000
9、验证上传镜像到私有仓库
docker hub在线存储库拉取hello-world镜像
docker pull hello-world
标记hello-world该镜像需要推送到私有仓库
docker tag hello-world:latest 私有仓库IP:5000/hello-world:latest
通过push指令推送到私有仓库
docker push 私有仓库IP:5000/hello-world:latest
10、验证从私有仓库下载镜像
格式如下
docker pull 私有仓库IP:5000/镜像名称:镜像版本号
以hello-world为例
docker pull 私有仓库IP:5000/hello-world
在pom.xml文件的properties节点里添加以下配置
项目名称
私有仓库IP:5000
1.4.13