在公司规模较小的状况下咱们能够经过docker官方仓库的方式来进行构建。nginx
Docker Registry 做为 Docker 的核心组件之一负责镜像内容的存储与分发,客户端的 docker pull 以及 push 命令都将直接与 registry 进行交互,最第一版本的 registry 由Python 实现,因为设计初期在安全性,性能以及API 的设计上有着诸多的缺陷, 该版本在 0.9 以后中止了开发,由新的项目 distribution(新的 docker register 被称为 Distribution)来从新设计并开发下一代 registry,新的项目由 go 语言开发, 全部的 API,底层存储方式,系统架构都进行了全面的从新设计已解决上一代registry 中存在的问题,2016 年 4 月份 rgistry 2.0 正式发布,docker 1.6 版本开始支持 registry 2.0,而八月份随着 docker 1.8 发布,docker hub 正式启用 2.1 版本registry 全面替代以前版本 registry,新版 registry 对镜像存储格式进行了从新设计并和旧版不兼容,docker 1.5 和以前的版本没法读取 2.0 的镜像,另外,Registryweb
2.4 版本以后支持了回收站机制,也就是能够删除镜像了,在 2.4 版本以前是没法支持删除镜像的,因此若是你要使用最好是大于 Registry 2.4 版本的。docker
本部分将介绍经过官方提供的 docker registry 镜像来简单搭建一套本地私有仓库环境。json
6.1.1.1 在docker服务器上下载并运行镜像仓库镜像
在咱们的docker服务器上配置咱们的镜像仓库地址ubuntu
[14:34:27 root@docker ~]#docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always registry docker run: #运行起来 -d: #后台运行 -v /opt/registry:/var/lib/registry: #逻辑卷挂载 -p 5000:5000: #将容器的端口映射到宿主机上(docker 默认走的是443端口) --restart=always: #开机自启 registry: #镜像名
6.1.1.3 运行成功以后咱们还要作一些其余设置
在/etc/docker/daemon.json配置,这个至关于咱们的第二个主配置文件,这个文件中写了一些配置也会加载到主配置文件中进行生效,在这里咱们受权一下仓库镜像地址和端口vim
一、编写配置文件配置镜像仓库地址浏览器
[14:58:19 root@docker ~]#vim /etc/docker/daemon.json { "insecure-registries":["10.0.0.117:5000"] } 10.0.0.117:5000: #指定咱们的镜像仓库IP和端口 二、重启docker服务使其生效 [14:40:34 root@docker ~]#systemctl restart docker 三、经过docker ps -a 查看正在运行的镜像,就会发现镜像仓库容器已经运行 [14:40:41 root@docker ~]#docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c38f9be5a45d registry "/entrypoint.sh /e..." 9 minutes ago Up 10 seconds 0.0.0.0:5000->5000/tcp stupefied_liskov
6.1.1.4.1 查看已有镜像
上传的话很是容易,首先咱们须要去对已经存在的镜像打补丁操做安全
[14:11:33 root@docker ~]#docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx-1.19.1 ubuntu-18.04 f2a267dc97aa 44 hours ago 382 MB
6.1.1.4.2 修改镜像名格式
想要上传至仓库的话必须知足这个格式:仓库地址/验证过用户名/镜像名:版本号知足这一个格式以后才能实现被上传。因此咱们须要对这个nginx镜像作一个修改服务器
一、修改镜像名架构
#修改镜像名格式 [14:42:37 root@docker ~]#docker tag nginx-1.19.1:ubuntu-18.04 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1 docker tag: #修改镜像名 nginx-1.19.1:ubuntu-18.04: #原镜像 10.0.0.117:5000/nginx-1.19.1:ubuntu-18.04: #修改后镜像名
二、查看已经修改为功
[15:01:49 root@docker ~]#docker images REPOSITORY TAG IMAGE ID CREATED SIZE 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1 v1 f2a267dc97aa 44 hours ago 382 MB
由于在官方镜像仓库里没有认证也没有受权,因此验证过的用户省略便可
6.1.1.4.3 上传镜像至咱们的10.0.0.7镜像仓库服务器
[14:58:01 root@docker ~]#docker push 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1
6.1.1.5 查看镜像已上传
一、经过下面的这条命令能够查看到咱们已经上传的镜像
[15:01:52 root@docker ~]#curl -XGET http://10.0.0.117:5000/v2/_catalog {"repositories":["ubuntu-18.04-nginx-1.19.1"]}
6.1.2.1 客户端受权操做
若是不给客户端受权的话一样没有办法,对咱们的10.0.0.117镜像仓库进行认证,由于官方的端口是443而咱们在仓库服务器上配置的地址是5000因此须要修改配置文件
一、配置镜像仓库地址
[15:19:06 root@A7 ~]#vim /etc/docker/daemon.json { "insecure-registries":["10.0.0.117:5000"] } 10.0.0.117:5000 #指定仓库地址和5000端口
二、在A7客户端上重启docker
[15:19:32 root@A7 ~]#systemctl restart docker 三、在A7客户端主机上下载刚才咱们在仓库服务器端上传的nginx镜像。 [15:20:42 root@A7 ~]#docker pull 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1
四、经过查看镜像、咱们的nginx镜像已经下载至当前A7服务器上。
[15:22:00 root@A7 ~]#docker images REPOSITORY TAG IMAGE ID CREATED SIZE 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1 v1 f2a267dc97aa 45 hours ago 382 MB
一、启动容器
[15:24:08 root@A7 ~]#docker run -it -d --name nginx -p 80:80 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1 nginx docker run: #启动容器 -it: #对容器执行命令 -d: #放到后台运行 --name nginx: #启动的容器名为nginx -p 80:80: #将容器的80端口映射到宿主机的80端口 10.0.0.117:5000/ubuntu-18.04-nginx-1.19.1:v1: #使用的镜像名 nginx #在容器启动的时候执行nginx操做
二、浏览器访问验证。
更多文章和资料|点击下方文字直达 ↓↓↓
阿里云K8s实战手册
[阿里云CDN排坑指南]CDN
ECS运维指南
DevOps实践手册
Hadoop大数据实战手册
Knative云原生应用开发指南
OSS 运维实战手册