docker registry私有仓库的使用方法介绍

栏目: 编程工具 · 发布时间: 4年前

内容简介:阿里云当然已经有了registry仓库服务,还挺方便的。但是有的就会觉得这种私有镜像还是自己保管比较好啊,我们这儿说的是自己搭建仓库用来管理私有镜像。测试完全后提交到私有的registry,线上再从registry拉取部署,和阿里云的registry仓库服务一样的使用方式。安装docker环境这里不做介绍了,网上很多文章都有介绍。cd ~/;

阿里云当然已经有了registry仓库服务,还挺方便的。但是有的就会觉得这种私有镜像还是自己保管比较好啊,我们这儿说的是自己搭建仓库用来管理私有镜像。测试完全后提交到私有的registry,线上再从registry拉取部署,和阿里云的registry仓库服务一样的使用方式。

环境:

ubuntu 16.04

Docker registry2.x的加密部署方法

安装 docker 环境这里不做介绍了,网上很多文章都有介绍。

下拉registry镜像,命令:

docker pull registry2.2

生成自签名证书:

cd ~/;

mkdir registry && cd registry && mkdir certs && cd certs;
openssl req -x509 -days 3650 -subj '/CN=reg.lajiaochaorou.com/' -nodes -newkey rsa:2048 -keyout registry.key -out registry.crt;

其中 reg.lajiaochaorou.com 是我给这个仓库定的域名,可以写别的。

生成用户和密码:

cd ~/registry&& mkdir auth;
docker run --entrypoint htpasswd registry:2.2 -Bbn lajiaochaorou 123456 > auth/htpasswd;

这里生成的用户名密码就是lajiaochaorou:123456, 可以写别的。

创建挂载目录:

mkdir –p ~/data/registry2

启动registry server:

docker run -d –p 5000:5000 --restart=always --name registry \
-v `pwd`/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \
-v ~/data/registry2:/var/lib/registry    registry:2.2
复制代码

把上面的命令放到脚本start_reg.sh(爱取什么名随你),放到~/registry下。 --restart=always表示自启动。

配置client(也就是我们宿主机):

创建证书目录:

mkdir -p /etc/docker/certs.d/reg.jack.com:5000

下载证书:

cp ~/registry/certs/registry.crt /etc/docker/certs.d/reg.jack.com:5000

域名解析:

echo 192.168.215.*** reg.lajiaochaorou.com >> /etc/hosts (这里的ip写宿主机ip)

登陆registry:

docker login reg.lajiaochaorou.com:5000

按照要求输入用户名,密码(我这里为lajiaochaorou:123456)

登录成功就可以存放和拉取私有镜像了!registry搭好了。

Docker pull/push镜像

我们在push镜像到私有仓库之前,要把镜像的名称改成reg.lajiaochaorou.com:5000/imagename的形式,否则系统认为你要push到公共仓库,会提示没有权限。命令:

docker tag ubuntu reg.lajiaochaorou.com:5000/ubuntu
docker push reg.lajiaochaorou.com:5000/ubuntu

上面是以修改ubuntu镜像为例,实际中我们一般是操作自己的项目镜像。

执行成功后镜像被提交到仓库了。

我们删除这个reg.lajiaochaorou.com:5000/ubuntu镜像试试:

docker rmi reg.lajiaochaorou.com:5000/ubuntu

删除成功,我们再把这个镜像pull下来试试:

docker pull reg.lajiaochaorou.com:5000/ubuntu

下拉成功,我们运行这个镜像吧:

docker run –it reg.lajiaochaorou.com:5000/ubuntu

应该有一个伪终端弹出来,这时的文件系统已经是这个容器(ubuntu)的文件系统了,因此可以很方便地对这个容器里面的文件进行操作。比如:

touch test.c
echo 'hello world' > hello.txt
复制代码

这时我们在容器外面执行:

docker diff 容器id|容器名;

可以看到有添加了两个文件。

不如趁机提交成一个新的镜像:

docker commit 容器id|容器名 reg.lajiaochaorou.com:5000/ubuntu2.0(新的镜像名 )

这时,我们看一下现在有哪些镜像:

docker images

可以看到,一个新的镜像reg.lajiaochaorou.com:5000/ubuntu2.0产生了!

我们运行这个新的镜像:

docker run –it reg.lajiaochaorou.com:5000/ubuntu2.0

伪终端出来之后,我们ls一下,可以看到刚才touch和echo的两个文件确实在这个文件系统了。

以上就是全部的registry使用方法了, 缺点是,没有图片的展示。当时没有及时截图,就这样吧。

补充一下docker常用命令吧

docker run: 运行一个容器
-it   通常it两个参数一起用的,表示以交互模式执行,并分配一个伪终端
-v   挂载目录,本地目录:容器目录
--name 给容器一个名字,不指定就随机产生
-e    设置环境变量
--rm   容器退出之后就删除

docker rm: 删除一个容器
docker rm 容器名|容器id

docker rmi:删除一个镜像
	docker rmi 镜像名
docker ps: 查看正在运行的容器
	docker ps –a :产看所有容器
docker kill :杀死一个运行中的容器,也可以用-s参数向容器发送信号
docker stop:结束一个运行中的容器
docker exec : 在运行中的容器执行命令,通常可以-t分配伪终端达到进入容器的目的
docker commit: 提交一个容器成新的镜像,可以-m 给出说明,-a给出作者
docker start: 启动一个容器
docker inspect: 查看镜像|容器的元数据
docker build: 编译一个新的镜像,与commit功能类似
复制代码

补充一下Dockerfile的使用

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应 Linux 下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。 这是打包镜像的主要方式。 命令解释:

FROM    //基于哪个镜像
MAINTAINER   //创建人
CMD       //容器启动时执行的命令,Dockerfile只能有一条CMD
USER        //用哪个用户跑container
ENV          //设置环境变量
ADD            //将文件<src>拷贝到container的文件系统对应的路径<dest>
COPY       //与ADD类似,COPY只能是本地数据
VOLUME        //将本地文件夹挂载到container容器中
WORKDIR       //切换目录
复制代码

例子:

FROM busybox
ENV foo /bar
WORKDIR ${foo}   # WORKDIR /bar
ADD . $foo       # ADD . /bar
COPY \$foo /quux # COPY $foo /quux
复制代码

使用命令:

docker build –t ubuntu5.0 .

生成一个新的镜像,名为ubuntu5.0,不用-f指定Dockerfile的路径那么就是使用的当前目录的Dockerfile。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Building Social Web Applications

Building Social Web Applications

Gavin Bell / O'Reilly Media / 2009-10-1 / USD 34.99

Building a social web application that attracts and retains regular visitors, and gets them to interact, isn't easy to do. This book walks you through the tough questions you'll face if you're to crea......一起来看看 《Building Social Web Applications》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具