Docker认为私有注册表是安全的还是不安全的。在本节的其余部分中,注册表用于私有注册表,并且myregistry:5000 是私有注册表的占位符示例。
安全注册表使用TLS,并将其CA证书的副本放置在Docker主机上,网址为/etc/docker/certs.d/myregistry:5000/ca.crt。不安全的注册表要么未使用TLS(即侦听纯文本HTTP),要么正在使用带有Docker守护进程未知的CA证书的TLS。当在下没有找到证书时/etc/docker/certs.d/myregistry:5000/,或者证书验证失败(例如,错误的CA)时,可能会发生后者 。
默认情况下,Docker假设所有注册表都是安全的。如果Docker认为注册表是安全的,则无法与不安全的注册表通信。为了与不安全的注册表进行通信,Docker守护程序需要--insecure-registry以下两种形式之一:
- --insecure-registry myregistry:5000 告诉Docker守护程序myregistry:5000应该被认为是不安全的。
- --insecure-registry 10.1.0.0/16 告诉Docker守护程序,其域解析为IP地址的所有注册表都是CIDR语法描述的子网的一部分,应被视为不安全。
可以多次使用该标志,以允许将多个注册表标记为不安全。
如果不安全的注册表没有被标记为不安全的,docker pull, docker push,和docker search将导致一个错误消息,提示用户或者安全或通过--insecure-registry如上所述标志提供给多克尔守护进程。
从Docker 1.3.2开始,其IP地址在127.0.0.0/8范围内的本地注册表会自动标记为不安全。不建议依赖此方法,因为将来可能会更改。
- --insecure-registry在运行本地注册表时,启用(即允许未经加密和/或不受信任的通信)可能很有用。但是,由于使用它会产生安全漏洞,因此仅应出于测试目的将其启用。为了提高安全性,用户应将其CA添加到系统的受信任CA列表中,而不要启用--insecure-registry。
旧版注册表
不再支持针对仅支持旧版v1协议的注册表的操作。具体来说,守护进程不会尝试push,pull并login 以V1登记。唯一的例外是search仍可以在v1注册中心上执行。