如何解決docker的tls(ssl)證書過期問題

問題現象:

[root@localhost ~]# docker image pull xxx.com.cn/centos7

Using default tag: latest

Error response from daemon: Get https://xxx.com.cn/v1/_ping: x509: certificate has expired or is not yet valid


可能的原因分析:

linux使用查看date查看當前時間,與證書的有效時間作比對,得出具體的原因,可能爲以下二種之一:

1.本機的時間不對;

2.Registry的證書確實已過期;


解決方法:

1.本機的時間不對;

修改本機時間即可

2.Registry的證書確實已過期;

  • 對 Registry 創建 SSL 安全例外,放棄對 Registry 服務器證書合法性校驗,但是具有安全風險.  

 insecure registries 使能後, Docker 將以以下步驟嘗試https連接:

  • 首先嚐試使用HTTPS.
    • 如果 HTTPS 連接可達但是證書不可用, 忽略證書錯誤;
    • 如果 HTTPS 連接不可用, 使用 HTTP.

    centos 在 /etc/docker/  目錄下創建daemon的配置文件 daemon.json ,將你的目標 Registry 所處的 IP 地址段或者具體的服務域名端口號寫入 json 文件,

    舉個例子,筆者的服務器所在網段爲10.0.0.0/8.那麼內容如下:


{
    "insecure-registries" : ["10.0.0.0/8"]
}

   也可以使用域名加端口號,示例如下:

{
  "insecure-registries" : ["myregistrydomain.com:5000"]
}

    windows 則修改文件  C:\ProgramData\docker\config\daemon.json ,格式與linux操作的一樣.

 

  • 重啓docker服務.
  • 查看是否生效,注意 Insecure Registries 字段.
[root@localhost ~]# docker info

docker info :
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 17.05.0-ce
Storage Driver: overlay
 Backing Filesystem: xfs
 Supports d_type: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9048e5e50717ea4497b757314bad98ea3763c145
runc version: 9c2d8d184e5da67c95d601382adf14862e4f2228
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.74GiB
Name: localhost.localdomain
ID: 755F:OEFV:VP3S:BMGQ:VUFW:WGT5:YQHO:EW6T:AAVE:NHS2:TPV3:SBTJ
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 10.0.0.0/8
 127.0.0.0/8
Live Restore Enabled: false

如何查看服務器證書有效期

以火狐瀏覽器爲例


參考:

https://docs.docker.com/engine/reference/commandline/dockerd/#insecure-registries

https://docs.docker.com/registry/insecure/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章