docker私有仓库搭建(registry)

一、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仓库中的镜像信息。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker私有仓库是一种用于存储、管理和分发Docker镜像的服务器。搭建一个私有仓库可以帮助开发者更好地管理自己的Docker镜像,也可以提高镜像的安全性。 以下是搭建Docker私有仓库的步骤: 1. 安装Docker 首先需要在服务器上安装Docker,可以根据操作系统类型选择合适的安装方法。 2. 下载Docker Registry镜像 在Docker Hub上下载Docker Registry镜像,可以使用以下命令: ``` docker pull registry:2 ``` 3. 运行Docker Registry容器 使用以下命令运行Docker Registry容器: ``` docker run -d -p 5000:5000 --restart=always --name registry registry:2 ``` 这里使用了-p参数将容器的5000端口映射到主机的5000端口,使得外部可以通过主机的IP地址和端口号访问私有仓库。使用--restart参数可以设置容器在重启后自动启动。使用--name参数可以指定容器的名称。 4. 配置Docker客户端 为了能够访问私有仓库,需要在Docker客户端中配置私有仓库的地址。可以通过以下方式修改Docker客户端的配置文件: ``` vi /etc/docker/daemon.json ``` 在文件中添加以下内容: ``` { "insecure-registries" : ["your-registry:5000"] } ``` 这里的your-registry私有仓库所在的主机IP地址或域名。 5. 推送和拉取镜像 现在可以使用Docker客户端推送和拉取镜像到私有仓库了。推送镜像使用以下命令: ``` docker tag your-image your-registry:5000/your-image docker push your-registry:5000/your-image ``` 这里的your-image是要推送的镜像名称。拉取镜像使用以下命令: ``` docker pull your-registry:5000/your-image ``` 这里的your-image是要拉取的镜像名称。 至此,Docker私有仓库搭建完成。需要注意的是,私有仓库的安全性需要开发者自行维护,例如限制访问权限、定期备份等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值