0

如此处所述如何在 ubuntu 16.04 上设置 docker 私有注册表

/etc/hosts是这样改的:

192.168.1.154 registry-server
192.168.1.90 registry-client

然后我拉了注册表图像:

docker pull registry

然后我制作了证书文件

mkdir /etc/certs
cd /etc/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

我将其复制ca.crt到客户端主机中的这些路径:

/etc/certs/
/etc/docker/certs.d/registry-server:5000/

然后我在服务器主机上运行容器:

docker run -d -p 5000:5000 --restart=always --name registry -v /etc/certs:/etc/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/etc/certs/ca.key registry

我标记了图像

docker tag phpmyadmin/phpmyadmin:latest registry-server:5000/pma-test

但是当我想将图像推registry-server:5000/pma-test送到服务器时:

docker push registry-server:5000/pma-test:latest

出现以下错误:

来自守护进程的错误响应:打开 /etc/docker/certs.d/registry-server:5000: 权限被拒绝

=======================================

更新:

我跑了journalctl -xe,发现了这些错误:

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.229097561Z" level=debug msg="Calling GET /_ping"

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.238248010Z" level=debug msg="Calling POST /v1.38/images/registry-server:5000/pma -测试/推送?标签=“

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.238670117Z" level=debug msg="hostDir: /etc/docker/certs.d/registry-server:5000 "

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.238797277Z" level=debug msg="FIXME: Got an API for which error does not match any expected type!! !: 打开 /etc/docker/certs.d/registry-server:5000: 权限被拒绝" error_type="*os.PathError" module=api

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.238831133Z" level=error msg="Handler for POST /v1.38/images/registry-server:5000/ pma-test/push 返回错误:打开 /etc/docker/certs.d/registry-server:5000: 权限被拒绝”

9 月 30 日 13:58:37 docker.dockerd[926]: time="2019-09-30T13:58:37.238861895Z" level=debug msg="FIXME: Got an API for which error does not match any expected type!! !: 打开 /etc/docker/certs.d/registry-server:5000: 权限被拒绝" error_type="*os.PathError" module=api

9 月 30 日 13:58:37 审核 [926]:AVC apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/etc/docker/certs.d/registry-server:5000/ " pid=926 comm="dockerd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

9 月 30 日 13:58:37 内核:审计:type=1400 审计(1569851917.234:53):apparmor="DENIED" operation="open" profile="snap.docker.dockerd" name="/etc/docker/certs. d/registry-server:5000/" pid=926 comm="dockerd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

为什么会发生这个错误?

Docker 版本 19.03.2,构建 6a30dfc

docker-compose 版本 1.24.0,构建 0aa59064

服务器和客户端主机:Ubuntu 18.04

4

1 回答 1

1

最后,我找到了它:

我将以下行添加到/var/lib/snapd/apparmor/profiles/snap.docker.docker

/etc/docker/certs.d/** r,

然后我跑了:

apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.docker.dockerd

问题解决了。

于 2019-09-30T15:45:42.670 回答