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.
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
更多推荐
所有评论(0)