Harbor介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能.
虽然使用 docker hub 官方的镜像 registry 也可以简单搭建.但是没有可视化界面,权限管理什么的好像也不完整.
环境准备
Harbor的所有服务组件都是在Docker中部署的,所以官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0
前言
在服务器上部署 Docker 容器有一种在手机上装 APP 的感觉,但 Docker 容器并不会像手机 APP 那样会自动更新,而如果我们需要更新容器一般需要以下三个步骤:
1 | 停止并删除容器:docker rm -f <CONTAINER> |
Watchtower是一个可以实现自动化更新 Docker 基础镜像与容器的实用工具。它监视正在运行的容器以及相关的镜像,当检测到registry中的镜像与本地的镜像有差异时,它会拉取最新镜像并使用最初部署时相同的参数重新启动相应的容器,一切好像什么都没发生过,就像更新手机上的APP一样。
快速开始
Docker Hub 虽然方便,但还是有些限制。比如:需要 Intenet 连接,上传下载慢。而且上传到 Docker Hub 的镜像任何人都能访问到(虽然也提供私有 repository,但需要收费),有安全性问题。
好在 Docker 已经将 Registry 开源了,同时在 Docker Hub 上也有官方的镜像 registry。下面演示如何在 Docker 中运行自己的 registry,搭建本地 Registry。
启动 registry 容器
这里我们使用的镜像是 registry:2,执行如下代码会自动下载并启动:
参数说明:
-d:后台启动容器
-p:将容器的 5000 端口映射到 Host 的 5000 端口(5000 是 registry 服务端口)。
-v:将容器 /var/lib/registry 目录映射到 Host 的 /mnt/registry,用于存放镜像数据。
–restart=always: 自动重启
–name=jackspeedregistry: 运行的容器名称
registry:2 镜像名称and版本
使用union all 来串连每个values,其中jdbcType的设置可以使null值也输入进去
1 | <insert id="saveList" parameterType="java.util.List"> |
纯粹使用foreach
1 | <insert id="saveList" parameterType="java.util.List"> |
纯粹使用foreach
获取Cookie
获取所有cookie: ngx.var.http_cookie
, 这里获取的是一个字符串,如果不存在则返回nil
。
获取单个cookie: ngx.var.cookie_username
, 获取单个cookie,_
后面的cookie的name,如果不存在则返回nil
。
设置Cookie
1 | ngx.header['Set-Cookie'] = {'a=32; path=/', 'b=4; path=/'} -- 批量设置cookie |
直接上代码
用netbeans打开utf-8编码的文件,其中的中文全部显示成了乱码,英文显示正常,说明是文件打开时的编码不对。