
示例字符串:release-11-2-10 传统的正则表达式只能进行字符串匹配,比如我们可以用这个正则表达式来匹配上面的字符串。 release-\d*-\d*-\d* release-11-2-10 但是当我们做一个转换的时候,比如 release-11-2-10 转换成 11.2.10 的时候,匹配就不够用了,这个时候我们可以使用命名捕获组和模板来解决这个问题。 release-\d*-\d*-\d* 普通正则表达式 release-(?<major>\d*)-(?<minor>\d*)-(?<version>\d*) 改为命名捕获组(括号标识匹配到的内容是一个捕获组,下划线的部分标识对捕获组进行命名) ${major}.${minor}.${version} 将捕获组内容应用到模板,得到转换后内容。 11.2.10 正则表达式相关帮助文档:https://www.regular-expressions.info/named.html
容器镜像服务 镜像安全扫描 快速开始!前往:容器镜像服务控制台 前言 如果你没有镜像使用基础,请先阅读 容器镜像服务 基本使用 镜像安全扫描 针对基于Linux的一些基础镜像,容器镜像服务已经提供了镜像安全扫描的功能。 登陆 容器镜像服务 控制台,选择想要进行扫描的仓库,进入仓库管理的页面。查看仓库镜像列表的右侧就有安全扫描的入口。你只需要一键就可以对您的镜像进行安全扫描。一般根据镜像大小的不同,扫描的时间也会有一定的区别。一般情况一个镜像扫描工作都能在三分钟之内完成。 目前仅支持基于Linux系统的部分镜像,需要基于以下指定基础镜像构建的镜像才能得到扫描结果。 Ubuntu:12.04 以上 RedHat:5、6、7 CentOS:5、6、7 Oracle:5、6、7 Debian:7、8、9、10 Alpine:3.3、3.4、3.5、3.6 相关链接 容器镜像服务 控制台容器镜像服务 基本使用容器镜像服务 主子账户授权Docker Engine 镜像源站Docker Toolbox 镜像源站Docker 镜像加速器
Docker CE 镜像源站 使用官方安装脚本自动安装 (仅适用于公网环境) curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 手动安装帮助 (阿里云ECS可以通过内网安装,见注释部分内容) Ubuntu 14.04 16.04 (使用apt-get进行安装) # step 1: 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common # step 2: 安装GPG证书 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 3: 写入软件源信息 sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # Step 4: 更新并安装 Docker-CE sudo apt-get -y update sudo apt-get -y install docker-ce 注意:其他注意事项在下面的注释中 # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # apt-cache madison docker-ce # docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages # docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages # Step 2: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.1~ce-0~ubuntu-xenial) # sudo apt-get -y install docker-ce=[VERSION] # 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2、Step 3中的命令 # 经典网络: # curl -fsSL http://mirrors.aliyuncs.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" # VPC网络: # curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # sudo add-apt-repository "deb [arch=amd64] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" CentOS 7 (使用yum进行安装) # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start 注意:其他注意事项在下面的注释中 # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION] # 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。 # yum list docker-ce-selinux- --showduplicates | sort -r # sudo yum -y install docker-ce-selinux-[VERSION] # 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令 # 经典网络: # sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo # VPC网络: # sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo 安装校验 root@iZbp12adskpuoxodbkqzjfZ:$ docker version Client: Version: 17.03.0-ce API version: 1.26 Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 07:52:04 2017 OS/Arch: linux/amd64 Server: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 07:52:04 2017 OS/Arch: linux/amd64 Experimental: false 参考资料 其他关于旧版本Docker卸载以及测试开发版本Docker安装的帮助,可以参考官方文档的说明进行安装 CentOS帮助链接 Ubuntu帮助链接 Debian帮助链接 Fedora帮助链接 源站使用问题 云栖社区文章下的评论不会实时通知,所以更新文章的时候才发现有用户在使用中遇到了各种各样的问题。目前源站每日凌晨更新,如果有源站使用问题例如文件损坏、文件不存在、版本滞后超过两天等问题,请发送邮件至 hyzhou.zhy@alibaba-inc.com,邮件标题包含“Docker CE 镜像源站”。附上安装机器的网络环境,执行命令以及错误提示信息。或者直接扫码联系钉钉账户最佳。
Docker 1.13 新特性 解决 GFW 影响 Docker 安装问题 目前官方的 apt/yum 源使用的是 AWS 的服务,并且为了确保安全使用了 HTTPS。目前有几个云服务商已经建立自己镜像源站,包括DaoCloud、阿里云、Azura 等等,并且在官方脚本的基础之上做了一定的修改来进行安装。 现在这个发生改变了,官方的 https://get.docker.com 将支持 –mirror 参数,你可以用这个参数指定国内镜像源,目前支持微软的 Azure 云,(或阿里云?)。使用方法如下,将原来官网安装命令: curl -sSL https://get.docker.com/ | sh -s --mirror AzureChinaCloud 此时,https://get.docker.com/ 尚未更新,所以暂时无法使用,在 1.13 正式发布后,即可使用。 允许 docker run 连入指定的 swarm mode 的网络 在1.12中Swarm集群网络是不允许容器这样加入网络中的,因为有可能会破坏集群网络结构。但是对于容器网络的这种需求过多,于是Docker给出一种折中的办法,添加了一个--attachable参数用于将容器添加到集群网络中。 # Network docker network create -d overlay network1 docker run -it –rm –network network1 busybox # Docker 1.13 的错误信息 docker: Error response from daemon: Could not attach to network mynet1: rpc error: code = 7 desc = network mynet1 not manually attachable. # Docker 1.12 的错误信息 docker: Error response from daemon: swarm-scoped network (mynet1) is not compatible with `docker create` or `docker run`. This network can only be used by a docker service. See ‘docker run –help’. # Network Attachable docker network create -d overlay --attachable network2 docker run -it –rm –network network2 busybox # 可以正常运行 相关链接 Docker 1.13 新特性 —— Docker系统相关 Docker 1.13 新特性 —— Docker服务编排相关 Docker 1.13 新特性 —— 网络相关
容器镜像服务 Docker镜像的基本使用 快速开始!前往:容器镜像服务控制台 前言 Docker的使用条件和基础不再复述Docker安装和Docker镜像下载的加速器文档在下方的"相关链接"中已经给出 Docker的镜像存储中心通常被称为Registry。当您需要获取Docker镜像的时候,首先需要登录Registry,然后拉取镜像。在您修改过镜像之后,您可以再次将镜像推送到Registry中去。 Docker的镜像地址是什么?我们来看一个完整的例子。(以容器服务的公共镜像为例)registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 registry.cn-hangzhou.aliyuncs.com 叫做 "Registry域名"。 acs 叫做 "命名空间"。 agent 叫做 "仓库名称"。 0.8 叫做 "Tag"、"镜像标签"(非必须,默认latest)。将这个几个完全独立的概念组合一下,还有几个术语。 registry.cn-hangzhou.aliyuncs.com/acs/agent 称为 "仓库坐标"。 acs/agent 称为 "仓库全名"(通常在API中使用)。 基本使用 本文的重点是介绍Docker最常用的三个命令:login、pull、push。 docker login 以阿里云杭州公网Registry为例:登陆时必须指明登陆的 "Registry域名" docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com Username: sample@alibaba-inc.com Password: Login Succeeded 登陆成功之后会显示 Login Succeeded。 另外你还可以通过查看这个文件,确认您的登陆信息。 docker@default-online:~$ cat ~/.docker/config.json { "auths": { "registry.cn-hangzhou.aliyuncs.com": { "auth": "XXXXXXXXXXXXXXXXXXXXXX" } } } 子账户如何登陆 首先子账户需要登录控制台,设置一下自己的Registry登陆密码。然后使用[子账户名]@[企业别名]作为用户名进行登陆。RAM控制台可以设置与查看主账户的企业别名。如果没有企业别名,企业别名默认为主账户的UID。 举例:子账户名为subaccount,企业别名为misaka-network docker@default-online:~$ docker login registry.cn-hangzhou.aliyuncs.com Username: subaccount@misaka-network Password: Login Succeeded docker pull 拉取镜像首先需要提示您的是。 如果你要拉取Docker官方的镜像的话。参考一下下方相关链接中的加速器文章。 如果你要拉取公共仓库下的镜像的话,不登陆Registry也是可以拉去的。 以容器服务的公共镜像 registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 为例 docker@default-online:~$ docker pull registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 0.8: Pulling from acs/agent 5a026b6c4964: Already exists e4b621e8d9cb: Already exists 8bc2fd04bdd4: Pull complete a977b0087b3e: Pull complete 8f6e00ea13c6: Pull complete 875dd8c9666f: Pull complete 9c07bcabc35d: Pull complete Digest: sha256:cac848bd31bccf2a041bda7b57e3051341093abde6859df9ee9d332dfec6ddd9 Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 查看一下下载下来的镜像(注意仓库坐标和Tag,这两个概念) docker@default-online:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-hangzhou.aliyuncs.com/acs/agent 0.8 b9ba5841bdb0 24 hours ago 42.18 MB docker push 镜像在本地环境构建或是打包好之后,就可以推到Registry啦。当然前提条件是,你有对这个仓库的读写权限或是读写授权。否则你会看到下面这样的错误。 docker@default-online:~$ docker push registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8 The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/acs/agent] 359f80267111: Layer already exists 7e5fa28d90b8: Layer already exists b20d7f600f63: Layer already exists 4a159b4f8370: Layer already exists 7c3712ebe877: Layer already exists d91d130a53aa: Layer already exists fcad8ad5a40f: Layer already exists unauthorized: authentication required FAQ docker login 失败 主要需要排查有两种可能 用户使用了阿里云账户的登陆密码,而没有使用Registry的独立登陆密码。Registry的登陆密码是在容器镜像服务的控制台上设置与修改的。 用户使用了sudo进行登陆,这个时候系统第一个要求输入的密码是Linux的用户密码。很多用户在这里输入了Registry的登陆密码,导致登陆操作失败。区分这个错误的方式很简单,Linux的用户密码大多允许尝试三次,错误时会提示try again.。而Registry的登陆密码错误一次之后就会退出,并返回以下错误。 Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthorized: authentication required docker pull 失败 提示Error: image xxx not found 自己下载的是公共仓库,那么问题应该在镜像地址不正确。请在控制台搜索一下这个公共仓库,检查一下想要下载的这个镜像版本是不是真实存在。 自己想要下载的是一个私有仓库中的镜像,这时首先确认一下Registry登陆状态。cat ~/.docker/config.json可以看到所有登陆的Registry域名。里面是不是包括你想要下载镜像的Registry域名。如果没有的话,您需要参考上面的文档,先进行登陆操作。如果这里已经登陆了的话,那么您需要确认的就是您登陆的这个账户是否有权限下载这个镜像。子账户默认是没有任何权限的,参考下方相关链接中主子账户授权的文章。 提示Error: filesystem layer verification failed for digest 极少数情况下偶现,下载的块文件检验失败。一般重试可以解决。 docker push 失败 提示denied: requested access to the resource is denied 主要的排查步骤和docker pull基本一致,仅仅是授权要求的级别较pull更高一些。 相关链接 容器镜像服务 控制台容器镜像服务 主子账户授权容器镜像服务 镜像安全扫描Docker Engine 镜像源站Docker Toolbox 镜像源站Docker 镜像加速器
ubuntu16.04上只能安装1.11.0以上版本的Docker
所以都可以使用配置文件直接配置:
/etc/docker/daemon.json(没有时新建该文件)
{
"registry-mirrors": ["<your accelerate address>"]
}
然后重启Docker Daemon就可以了
docker的可执行文件名称从docker改成了dockerd,导致原有脚本无法在1.12.0版本的docker上使用,建议使用上述方法配置。
ubuntu16.04上只能安装1.11.0以上版本的Docker
所以都可以使用配置文件直接配置:
/etc/docker/daemon.json(没有时新建该文件)
{
"registry-mirrors": ["<your accelerate address>"]
}
然后重启Docker Daemon就可以了