搭建Docker私有镜像仓库

一、Docker镜像和容器的区别

Docker的整个生命周期由三部分组成:镜像(image)+容器(container)+仓库(repository)

容器等于镜像加上可读层,容器是由镜像实例化而来的。简单来说,镜像是文件,容器是进程,容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件

二、搭建Docker私有镜像仓库

通常我们在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 \

部分参数说明:

  • -d:让容器在后台运行
  • -p:指定容器内部使用的网络端口映射到我们使用的主机上
  • --name:指定容器创建的名称

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

三、JAVA项目中配置Docker私有仓库

在pom.xml文件的properties节点里添加以下配置

项目名称
私有仓库IP:5000
1.4.13

你可能感兴趣的:(运维部署,docker,linux,运维)