docker私有仓库搭建(registry)
文章目录一、pull registry镜像二、启动registry容器三、配置参数(两种方式二选一)方式一方式二四、重启docker服务五、尝试推送镜像六、Docker Registry WebUI 工具一、pull registry镜像docker pull registry二、启动registry容器docker run -d -p 5000:5000 --name docker-regist
文章目录
一、pull registry镜像
docker pull registry
二、启动registry容器
docker run -d -p 5000:5000 --name docker-registry --restart=always registry
docker run命令:创建一个新的容器并运行一个命令
语法:
docker run [OPTIONS] IMAGE
解释一下上面启动容器命令的OPTIONS参数含义:
-d
: 后台运行容器,并返回容器ID;
-p
: 指定端口映射,格式为:主机(宿主)端口:容器端口
--ame
: 为容器指定一个名称;
--restart=always
:重启docker后会自动启动容器
运行完上面的docker run命令之后,可以使用docker ps
查看运行中的容器,也可以使用curl http://10.192.10.168:5000/v2/_catalog
来查看该私有仓库中的镜像列表,当然容器刚创建起来的时候仓库里面是没有镜像的,只会返回{“repositories”:[]}。
三、配置参数(两种方式二选一)
此时如果直接使用docker push
去推送镜像,会报错http: server gave HTTP response to HTTPS client,因此需要配置信任私有仓库。
以下两种方式请二选一,不可以两处都配,否则重启docker服务会失败。
方式一
这种方式不用去修改主文件 docker.service的参数,通过daemon.json配置文件来管理,更为安全、合理。
vi /etc/docker/daemon.json
如果该文件不存在,则会被自动创建,在文件中添加以下内容:
{
"insecure-registries": ["10.192.10.168:5000"]
}
如果该文件原先就存在,例如:
{
"registry-mirrors": [
"http://10.192.10.168:5000"
],
"data-root":"/var/lib/docker"
}
更改方式如下(其实还是一样的):
{
"registry-mirrors": [
"http://10.192.10.168:5000"
],
"insecure-registries":
["10.192.10.168:5000"],
"data-root":"/var/lib/docker"
}
方式二
1、修改/etc/default/docker文件
在docker配置文件/etc/default/docker中新增以下内容:
DOCKER_OPTS="--insecure-registry=10.192.10.168:5000"
2、修改/lib/systemd/system/docker.service文件
在[Service]下面更改
①新增以下内容:
EnvironmentFile=-/etc/default/docker
②修改ExecStart值为如下:(建议注释掉原来的,再在下面新增一句,以免之后需要恢复)
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
四、重启docker服务
service docker restart
注意此时可能会提示:docker.service changed on disk. Run ‘systemctl daemon-reload’ to reload units
那么按照提示执行systemctl daemon-reload
,再service docker restart
即可。
如果在第三步中方式一和二都做了,那么重启服务的时候会报如下错误:
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
此时参照提示使用systemctl status docker.service
命令,可以看到详情,其中部分错误提示:
Dec 14 16:24:02 master systemd[1]: Starting Docker Application Container Engine...
Dec 14 16:24:03 master dockerd[9389]: unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: insecure-registries: (from flag: [xx.xx.xx.xx:50... [xx.xx.xx.xx:xxxx])
如果是这样,删除/恢复daemon.json或docker.service文件其中一处的配置,再重启容器即可。
五、尝试推送镜像
之前写过一篇docker上传镜像的文章,在此不再赘述,有需要可以参考。
docker push 10.192.10.168:5000/test/xxxx:Vx.x.x
此时如果你之前创建容器的时候没有设置–restart=always,就会发现报错connect: connection refused,是因为容器没有启动,手动再启动下容器就可以了。
手动启动容器命令:
docker start 容器ID
如果此时你找不到容器ID了,使用docker ps -a命令,可以显示所有的容器信息(包括未启动的),container id一栏就是容器ID
docker ps -a
推送成功后,再使用curl http://10.192.10.168:5000/v2/_catalog
命令,就可以验证是否push成功了。
六、Docker Registry WebUI 工具
使用WebUI工具管理镜像会更方便,可以直观地看到registry 中的资源情况。(此步我并没有做,放上来仅供参考)
Docker Registry WebUI 工具: docker-registry-web
1、下载 docker-registry-web 镜像
docker pull hyper/docker-registry-web
2、启动 registry-web
docker run -d -p 8080:8080 --name registry-web --link registry -e REGISTRY_URL=http://10.192.10.168:5000/v2 -e REGISTRY_NAME=10.192.10.168:5000 hyper/docker-registry-web
3、访问web界面
浏览器输入10.192.10.168:8080,即可查看registry仓库中的镜像信息。
更多推荐
所有评论(0)