docker私有仓库建立及DOCKER_OPTS配置不生效的解决

1. 搭建环境

docker私有仓库服务器(系统:ubuntu 16.04,IP:10.0.2.10)

docker私有仓库客户机(系统:ubuntu 16.04,IP:10.0.2.11,10.0.2.12)

2. 搭建过程

(1)三台机器分别安装docker-ce最新版

curl  -sSL   https://get.docker.com/   |   sh 安装docker-ce

(2)10.0.2.10服务器上更改docker hub镜像为国内镜像,获取registry镜像,使用registry镜像创建私有仓库

1)修改 /etc/default/docker 中源镜像选项

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com" 

2)获取registry镜像

docker pull registry 

3)配置创建registry仓库

docker run -d   --name=my-docker-registry-2  --restart=always -p 5000:5000   -v  /opt/data/registry:/tmp/registry    registry 创建私有仓库,默认会将仓库创建在容器的/tmp/registry目录下,可以通过-v参数来将镜像文件存放在本地指定路径

(3)10.0.2.10服务器上管理仓库

1)拉取busybox

docker pull busybox

2)将该镜像加标签

docker tag busybox 10.0.2.10:5000/busybox 其中标签第一部分为服务器地址和端口号,以便于registry识别

3)将打标签的busybox上传至本地仓库

docker push 10.0.2.10:5000/busybox

4)报错信息及解决方法

报错:The push refers to repository [10.0.2.10:5000/busybox]

Get https://10.0.2.10:5000/v2/: http: server gave HTTP response to HTTPS client

原因:docker push 默认是https而registry设置的为http,因此需要做一些修改

解决:修改/etc/default/docker中

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.2.10:5000"

(4)重启docker

systemctl daemon-reload 加载docker.service

systemctl restart docker.service 重启docker服务

(5)仍报同样错误,经检查发现docker配置没有生效

修改/lib/systemd/system/docker.service,否则docker配置文件/etc/default/docker无法成功配置

修改EnvironmentFile=-/etc/default/docker

修改ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

重启docker服务

(6)上述(3)(4)(5)的另一种解决方法

在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

{ "insecure-registries":["10.0.2.10:5000"] }

然后重启

3.docker仓库服务器检查

(1)上传至仓库服务器

docker push 10.0.2.10:5000/busybox 显示

The push refers to repository [10.0.2.10:5000/busybox]
c5183829c43c: Pushed 

latest: digest: sha256:c7b0a24019b0e6eda714ec0fa137ad42bc44a754d9cea17d14fba3a80ccc1ee4 size: 527

(2)删除busybox镜像

docker rmi busybox

docker rmi 10.0.2.10:5000/busybox

(3)从本地仓库拉取镜像

docker pull 10.0.2.10:5000/busybox

(4)检查

docker images 显示已经拉取10.0.2.10:5000/busybox

4. docker本地仓库客户机配置

此时docker本地仓库服务器已经配置完成,但其他机器不能从服务器拉取镜像,客户机也要配置

(1)修改/etc/default/docker中

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.2.10:5000"

(2)修改/lib/systemd/system/docker.service,否则docker配置文件/etc/default/docker无法成功配置

修改EnvironmentFile=-/etc/default/docker

修改ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS

(3)重启docker

5.docker本地仓库客户机验证

(1)curl http://10.0.2.10:5000/v2/_catalog 输出
{"repositories":["busybox"]}

(2)docker pull 10.0.2.10:5000/busybox 显示拉取成功

此时,docker本地仓库服务器搭建成功,局域网内主机可以进行拉取服务

6. ubuntu后台进程在重启下容器不关闭设置

sudo   vim  /etc/docker/daemon.json
添加"live-restore": true选项,比如:
{

    "live-restore": true,

}

参考:https://docs.docker.com/registry/deploying/#considerations-for-air-gapped-registries




你可能感兴趣的:(docker)