-
Docker本地仓库
2019-05-30 12:08:41创建本地仓库 Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以部署完成仓库 [root@server1 ~]# docker load -i registry2.tar [root@server1 ~]# docker images registry [root@server1 ~]# docker run -d ...创建本地仓库
Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以部署完成仓库
[root@server1 ~]# docker load -i registry2.tar [root@server1 ~]# docker images registry [root@server1 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry:2 [root@server1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a5ededc0ac0 registry:2 "/entrypoint.sh /etc…" 7 seconds ago Up 5 seconds 0.0.0.0:5000->5000/tcp registry
上传本地镜像到本地仓库[root@server1 ~]# docker tag ubuntu:v1 localhost:5000/ubuntu ##重命名,使上传的时候传到本地仓库而不是默认仓库 [root@server1 ~]# docker images localhost:5000/ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE localhost:5000/ubuntu latest aa00ef2f4ef4 36 hours ago 188MB [root@server1 ~]# docker push localhost:5000/ubuntu ##上传 The push refers to repository [localhost:5000/ubuntu] d6eec047ed97: Pushed 5f70bf18a086: Pushed 11083b444c90: Pushed 9468150a390c: Pushed 56abdd66ba31: Pushed latest: digest: sha256:a5a2cfc712a616319f3e71e716f534c373b8cef1a8ec864cc15c2176ae17d507 size: 1358
查看
[root@server1 ~]# cd /opt/registry/ [root@server1 registry]# ls docker [root@server1 v2]# yum install -y tree [root@server1 registry]# tree docker
从本地仓库下载镜像
[root@server1 ~]# docker rmi -f ubuntu:v1 [root@server1 ~]# docker rmi -f localhost:5000/ubuntu [root@server1 ~]# docker pull localhost:5000/ubuntu [root@server1 ~]# docker tag localhost:5000/ubuntu ubuntu:v1 [root@server1 ~]# docker rmi localhost:5000/ubuntu [root@server1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu v1 aa00ef2f4ef4 37 hours ago 188MB registry 2 f32a97de94e1 2 months ago 25.8MB game2048 latest 19299002fdbe 2 years ago 55.5MB ubuntu latest 07c86167cdc4 3 years ago 188MB rhel7 latest 0a3eb3fde7fd 4 years ago 140MB
加密上传
1.创建服务端key以及证书
[root@server1 ~]# cd /tmp/docker/ [root@server1 docker]# mkdir -p certs [root@server1 docker]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/dzh.org.key -x509 -days 365 -out certs/dzh.org.crt [root@server1 docker]# cd certs/ [root@server1 certs]# ls dzh.org.crt dzh.org.key
2.添加本地解析[root@server1 certs]# vim /etc/hosts 172.25.68.1 server1 dzh.org
3.创建仓库
[root@server1 docker]# docker rm -f registry [root@server1 docker]# docker run -d --restart=always --name registry -v /tmp/docker/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/dzh.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/dzh.org.key -p 443:443 -v /opt/registry:/var/lib/registry registry:2 [root@server1 dzh.org]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4ae71b182aef registry:2 "/entrypoint.sh /etc…" 11 minutes ago Up 11 minutes 0.0.0.0:443->443/tcp, 5000/tcp registry
4.创建证书存放目录,并复制证书
[root@server1 docker]# cd /etc/docker/ [root@server1 docker]# ls key.json [root@server1 docker]# mkdir certs.d [root@server1 docker]# cd certs.d/ [root@server1 certs.d]# mkdir dzh.org [root@server1 certs.d]# cd dzh.org/ [root@server1 dzh.org]# cp /tmp/docker/certs/dzh.org.crt ca.crt
5.导入一个镜像并上传到私有仓库
[root@server1 dzh.org]# docker tag game2048:latest dzh.org/game2048 [root@server1 dzh.org]# docker push dzh.org/game2048
6.查看
[root@server1 dzh.org]# cd /opt/registry/ [root@server1 registry]# tree docker/
测试:
server2[root@server2 docker]# systemctl start docker [root@server2 docker]# cd /etc/docker [root@server2 docker]# mkdir certs.d [root@server2 docker]# cd certs.d/ [root@server2 certs.d]# mkdir dzh.org [root@server2 certs.d]# vim /etc/hosts 172.25.68.1 server1 dzh.org [root@server2 certs.d]# docker pull dzh.org/game2048 Using default tag: latest Error response from daemon: Get https://dzh.org/v2/: x509: certificate signed by unknown authority ##没有证书下载不了
server1将证书传给server2
[root@server1 ~]# cd /etc/docker/certs.d/dzh.org/ [root@server1 dzh.org]# ls ca.crt [root@server1 dzh.org]# scp ca.crt server2:/etc/docker/certs.d/dzh.org/ The authenticity of host 'server2 (172.25.68.2)' can't be established. ECDSA key fingerprint is 22:48:a0:a7:b9:8f:b5:0c:31:fe:e9:9d:6c:59:61:d7. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'server2' (ECDSA) to the list of known hosts. root@server2's password: ca.crt
server2
[root@server2 certs.d]# docker pull dzh.org/game2048 Using default tag: latest latest: Pulling from game2048 534e72e7cedc: Pull complete f62e2f6dfeef: Pull complete fe7db6293242: Pull complete 3f120f6a2bf8: Pull complete 4ba4e6930ea5: Pull complete Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390 Status: Downloaded newer image for dzh.org/game2048:latest [root@server2 certs.d]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE dzh.org/game2048 latest 19299002fdbe 2 years ago 55.5MB
设置用户认证
控制registry的使用权限,使其只有在登录用户名和密码之后才能使用
1.设置用户密码并查看
[root@server1 dzh.org]# cd /tmp/docker/ [root@server1 docker]# mkdir auth [root@server1 docker]# docker run --rm --entrypoint htpasswd registry:2 -Bbn dzh redhat > auth/htpasswd [root@server1 docker]# cat auth/htpasswd dzh:$2y$05$Ll6rx9QTt355NVo.ZBb7OOMFyLbOSyvUfsm0h6/SYT95sisekSgDm
2.创建仓库
[root@server1 docker]# docker rm -f registry [root@server1 docker]# docker run -d --restart=always --name registry -v /tmp/docker/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/dzh.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/dzh.org.key -p 443:443 -v /opt/registry:/var/lib/registry -v /tmp/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry:2 [root@server1 docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES aea2930811bf registry:2 "/entrypoint.sh /etc…" 5 seconds ago Up 4 seconds 0.0.0.0:443->443/tcp, 5000/tcp registry
3.登录库,并输入用户名和密码
[root@server1 docker]# docker login dzh.org Username: dzh Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded #在文件config.json 中可以看到记录的认证(认证一次,永久保存) [root@server1 docker]# cat /root/.docker/config.json { "auths": { "dzh.org": { "auth": "ZHpoOnJlZGhhdA==" } }, "HttpHeaders": { "User-Agent": "Docker-Client/18.06.1-ce (linux)" } }
4.可以上传
[root@server1 docker]# docker tag ubuntu:v1 dzh.org/ubuntu [root@server1 docker]# docker push dzh.org/ubuntu The push refers to repository [dzh.org/ubuntu] d6eec047ed97: Layer already exists 5f70bf18a086: Layer already exists 11083b444c90: Layer already exists 9468150a390c: Layer already exists 56abdd66ba31: Layer already exists latest: digest: sha256:a5a2cfc712a616319f3e71e716f534c373b8cef1a8ec864cc15c2176ae17d507 size: 1358
5.退出登陆后不能上传(一直显示在准备中)
[root@server1 docker]# docker logout dzh.org Removing login credentials for dzh.org [root@server1 docker]# docker push dzh.org/ubuntu The push refers to repository [dzh.org/ubuntu] d6eec047ed97: Preparing 5f70bf18a086: Preparing 11083b444c90: Preparing 9468150a390c: Preparing 56abdd66ba31: Preparing no basic auth credentials
-
搭建Docker本地仓库
2020-01-12 20:54:53搭建Docker本地仓库拉取运行registry2
两种方式,执行运行命令或建个shell脚本;
#run //启动容器 #-d : 让容器可以后台运行 #--name : 为运行的容器命名 #-p :指定映射端口(前者是宿主机的端口号,后者是容器的端口号) #-v :数据挂载(前者是宿主机的目录,后者是容器的目录)
1 直接执行命令
sudo docker run -d --restart always --name registry2 -v registry_data:/var/lib/registry -p 5000:5000 registry:2
2 通过shell脚本
新建shell脚本:
registry.sh
#!/bin/bash VOL=registry_data docker run -d \ --restart always \ --name registry2 \ -v ${VOL}:/var/lib/registry \ -p 5000:5000 \ registry:2
执行后会自动拉取最新镜像并运行:
-
docker系列之docker本地仓库搭建
2019-05-05 17:16:51一般在工作中,我们都很少用到阿里或者官网提供的docker镜像仓库,每个公司都会自己搭建一个本地镜像...前者会创建一个docker本地仓库,后者相当于docker客户端 1、在服务端192.168.182.166上拉取仓库镜像:registr...一般在工作中,我们都很少用到阿里或者官网提供的docker镜像仓库,每个公司都会自己搭建一个本地镜像仓库,那该如何搭建一个docker镜像本地仓库呢,接下来详细步骤奉上。
接下来我准备俩台虚拟机192.168.182.166,192.168.182.167。前者会创建一个docker本地仓库,后者相当于docker客户端
1、在服务端192.168.182.166上拉取仓库镜像:registry
docker pull registry
2、启动这个仓库镜像文件
命令基本注释:-v前者是宿主机的目录,后者是容器内部的目录(后者是固定的)
docker run -d \
-v /home/docker/registry:/var/lib/registry \
-p 5000:5000 \
--restart=always \
--privileged=true \
--name registry \
registry:latest如果启动成功的话,则表示在192.168.182.166服务器上建了一个docker本地仓库
你可以在客户端192.168.182.167服务器上执行:curl http://192.168.182.166:5000/v2/_catalog
表示仓库一个镜像文件都没有
接下来开始模拟一个镜像,push到本地仓库中
3、在192.168.182.166服务器上,根据Dockerfile建立一个镜像文件
我的Dockerfile里面是这样写的,有一个nginx基础镜像
命令:docker build -t 192.168.182.166:5000/case-xuwei:latest .
镜像build好了之后,我们就可以push到本地仓库中(正常程序中,都要先测试打好的镜像文件,毕竟没有哪个公司希望在仓库中的东西还是半成品)
push到本地仓库的命令:docker push 192.168.182.166:5000/case-xuwei:latest
可能出现的问题
原因是docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端192.168.182.167做相关设置,不使用https传输
vim /etc/docker/daemon.json
修改如下:
保存之后还需要做以下操作,使得生效
systemctl daemon-reload
systemctl restart docker
重启完docker之后,在push镜像文件
docker push 192.168.182.166:5000/case-xuwei:latest
可以看到命令没有报错,最后看以下仓库是否有这上传上去的镜像文件
命令:curl http://192.168.182.166:5000/v2/_catalog
好啦,已经成功将镜像文件push到本地仓库拉
-
Docker 本地仓库搭建
2018-10-31 10:34:57Docker 本地仓库搭建1. 下载仓库镜像2. 创建仓库文件夹3. 启动仓库4. 查看仓库启动5.测试6. 问题解决6.1 创建配置文件 1. 下载仓库镜像 从中央仓库拉取最新的 registry 仓库。 docker pull registry 2. 创建仓库...源代码GitHub下载地址:spring-boot-docker
1. 下载仓库镜像
从中央仓库拉取最新的 registry 仓库。
docker pull registry
2. 创建仓库文件夹
mkdir -pv /opt/docker/registry
3. 启动仓库
端口映射为:5000
本地文件映射为:/opt/docker/registry
docker run -d -p 5000:5000 --restart=always -v /opt/docker/registry:/var/lib/registry registry
4. 查看仓库启动
docker ps
可看到输出如下:
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a7b23b6e8633 registry "/entrypoint.sh /e..." 8 minutes ago Up 6 minutes 0.0.0.0:5000->5000/tcp distracted_jang
访问地址:
ip为本地仓库ip地址。
curl http://192.168.234.97:5000/v2/_catalog
5.测试
使用
hello-world
镜像进行测试,创建本地tag
docker tag hello-world 192.168.234.97:5000/hello
推送到本地仓库
docker push 192.168.234.97:5000/hello
再次查看:
curl http://192.168.234.97:5000/v2/_catalog
输出显示,有新增的仓库。
{"repositories":["hello"]}
6. 问题解决
推送到本地仓库
docker push 192.168.234.97:5000/hello
报错
The push refers to a repository [192.168.234.97:5000/hello] Get https://192.168.234.97:5000/v1/_ping: http: server gave HTTP response to HTTPS client
原因分析:
客户端http不能访问
解决方案,创建配置文件,修改配置。用到这个仓库的机器都要执行这个操作:
6.1 创建配置文件
创建配置文件
touch /etc/docker/daemon.json
写入配置:
echo '{ "insecure-registries":["192.168.234.97:5000"] }' > /etc/docker/daemon.json
重新启动docker
systemctl restart docker
再次尝试推送到本地仓库,可以成功
docker push 192.168.234.97:5000/hello
成功输出如下:
The push refers to a repository [192.168.234.97:5000/hello] 428c97da766c: Pushed latest: digest: sha256:7d6fb7e5e7a74a4309cc436f6d11c29a96cbf27a4a8cb45a50cb0a326dc32fe8 size: 524
查看镜像tag
http://192.168.234.97:5000/v2/hello/tags/list
-
docker本地仓库实现双机互传
2016-12-11 14:29:54一、声明几点1.1若要实现docker本地仓库的双机互传功能,两台电脑最好能将配置调成一样的,减少因为系统内核或者docker版本引发的问题。1.2本文将就两中情况下的双机互传进行说明,标准的两台centos7系统电脑和使用... -
docker本地仓库的搭建
2016-12-10 18:44:40一、先说两句 ...二、docker本地仓库搭建 1.准备阶段 1.1查看你的内核[root@cgsl ]# uname -r 我的内核是3.10.0 -229(最后完成整个部署之后成了3.10.0-327)1.2更新yum[root@cgsl ]# yum update1.3安装httpd -
docker 本地仓库仓库搭建问题
2020-09-16 13:54:08基础docker相关文件安装: yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 配置repository yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo ... -
Docker 本地仓库操作
2019-08-14 15:01:301, 配置本地仓库访问地址 在/etc/docker/daemon.json 中添加如下内容: "insecure-registries":["xxx.xxx.xxx.xxx:5000"] 然后,重新启动docker systemctl daemon-relaod systemctl restart docker 2. 登陆到... -
Docker 从入门到放弃(四)之Docker本地仓库
2016-08-20 17:22:30Docker 从入门到放弃(四)之Docker本地仓库 报错 查看镜像 标记镜像 安装registry 推送到本地仓库 访问报错Cannot connect to the Docker daemon. Is the docker daemon running on this host?这个错误只要输入... -
Centos7系统创建Docker本地仓库
2018-01-30 10:08:26为方便之后的学习,本文将介绍在centos7上实现docker本地仓库的搭建。之前写过一篇在centos6上搭建本地仓库的文章,当时使用的registry版本为V1。V1版本在nginx代理上配置和v2版本存在较大差别,前文传送门: ... -
搭建docker本地仓库以及上传镜像到本地仓库
2021-03-24 20:41:00本文的环境:centos8,docker20.10.5 关于安装docker : 【往期...其实docker的本地仓库配置很简单,就三步就可以了 拉取镜像 运行镜像(1和2其实可以合为一步) 配置daemon.json文件 拉取镜像 docker pull registry -
CentOS 学习Kubernetes(二)——使用docker本地仓库
2020-03-04 14:59:421、创建docker本地仓库 docker pull registry mkdir /usr/local/docker_registry docker run -d -p 5000:5000 --name=my_registry --restart=always --privileged=true -v /usr/local/docker_registry:/var... -
搭建docker本地仓库
2019-04-24 10:38:33需要部署本地仓库的服务器一台(下面简称目标服务器),并且安装docker 二 具体步骤 1.拉取官方仓库镜像registry,放到目标服务器下 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL ... -
Docker本地仓库搭建
2019-04-21 15:59:091. 下载仓库镜像 从中央仓库拉取最新的 registry 仓库。 docker pull registry 1 2. 创建仓库文件夹 ...本地文件映射为:/opt/docker/registry docker run -d -p 5000:5000 --restart=always -v /o... -
Docker本地仓库管理
2020-05-18 18:41:451、Docker导入本地镜像 有时候我们自己在本地或者其它小伙伴电脑上拷贝了一份镜像,有了这个镜像之后,我们可以把本地的镜像导入,使用docker import 命令。 例如这里下载了一个 alibaba-rocketmq-3.2.6.tar.gz 镜像... -
docker本地仓库使用
2020-01-07 17:22:231拉取Dockerhub上提供的最新的registry的镜像 #docker pull registry #docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry late... -
Nexus部署docker本地仓库
2019-09-30 12:10:01上一篇讲了怎么部署Nexus,及用Nexus部署yum源,现在讲一下使用Nexus部署docker仓库,为以后部署k8s等做本地仓库。 下面安装docker。 环境:centos7 yum -y install docker yum -y install nginx ... -
如何搭建docker本地仓库
2019-05-26 10:11:03作者:【吴业亮】 ...一、创建本地仓库 1、创建仓库 # docker run -d -p 5000:5000 -v /var/lib/registry:/var/lib/registry --restart=always --name registry registry:2 Trying to pull repository ... -
Docker 本地仓库搭建及http不能访问的解决方式
2017-03-30 09:36:28Docker 本地仓库搭建及http不能访问的解决方式Docker安装省略下载仓库镜像docker pull registry解决http不能访问(用到这个仓库的机器都要执行这个操作)touch /etc/docker/daemon.json可以设多个ip,我后面设了一个...