ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自建docker仓库

2022-07-03 02:31:58  阅读:171  来源: 互联网

标签:word 自建 仓库 vip docker root v0.1 alpine


一、仓库安装

1、系统:CentOS7.9,采用yum安装方式

[root@master ~]# yum install docker-distribution -y
... ...
[root@master ~]# rpm -ql docker-distribution
/etc/docker-distribution/registry/config.yml
/usr/bin/registry
/usr/lib/systemd/system/docker-distribution.service
/usr/share/doc/docker-distribution-2.6.2
/usr/share/doc/docker-distribution-2.6.2/AUTHORS
/usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
/usr/share/doc/docker-distribution-2.6.2/LICENSE
/usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
/usr/share/doc/docker-distribution-2.6.2/README.md
/var/lib/registry
[root@master ~]# systemctl start docker-distribution.service
[root@master ~]# systemctl enable docker-distribution.service

2、配置文件解读

vim /etc/docker-distribution/registry/config.yml

version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /data/registry    # 定义仓库镜像存储路径
http:
    addr: 127.0.0.1:5000    # 定义监听端口

监听5000端口

3、nginx配置

upstream registry {
       server 127.0.0.1:5000;
}

server {
        listen       80;
        server_name  www.hello-word.vip hello-word.vip;

        location / {
            proxy_set_header Host $host;
	    proxy_pass http://registry;
        }

        access_log  logs/access.log  main;
        error_log   logs/error.log;
}

二、使用自建仓库

注意:以下操作均在树莓派4b上操作的,所以打出来的镜像只能用在arm64架构下;想在amd64架构下运行,需要将Dockerfile文件以及python文件复制到amd64架构的机器下打包;

1、准备Dockerfile文件和测试Python文件

Dockerfile

FROM alpine:3.9.5
RUN apk update && apk add --no-cache python3 net-tools
COPY ["app.py","/tmp"]

ENV HOST="localhost"
ENV PORT="80"

CMD python3 /tmp/app.py $HOST $PORT

测试Python文件

#!/usr/bin/env python3
#conding: utf-8
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import sys
import socket

def hostname():
    return socket.gethostname()

def ipa():
    return socket.gethostbyname(hostname())

data = {hostname(): ipa()}

def httpserver(ipadd='127.0.0.1',sport=8888):
    host = (ipadd, sport)
    server = HTTPServer(host, Resquest)
    server.serve_forever()

class Resquest(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        self.wfile.write(json.dumps(data).encode())

if len(sys.argv) == 1:
    httpserver()
elif len(sys.argv) == 3:
    httpserver(sys.argv[1],eval(sys.argv[2]))

2、构建镜像

root@raspberrypi:~/dockerfile/alpine # docker build -t alpine:arm-v0.1 ./
Sending build context to Docker daemon  3.584kB
Step 1/6 : FROM alpine:3.9.5
3.9.5: Pulling from library/alpine
eb93038481dd: Pull complete
Digest: sha256:115731bab0862031b44766733890091c17924f9b7781b79997f5f163be262178
Status: Downloaded newer image for alpine:3.9.5
... ...
Successfully built 30068fd6c4af
Successfully tagged alpine:arm-v0.1
root@raspberrypi:~/dockerfile/alpine # docker images
REPOSITORY                                                        TAG            IMAGE ID       CREATED              SIZE
alpine                                                            arm-v0.1       30068fd6c4af   About a minute ago   59.2MB

3、为镜像打tag

root@raspberrypi:~/dockerfile/alpine # docker tag alpine:arm-v0.1 hello-word.vip/alpine:arm64-v0.1
root@raspberrypi:~/dockerfile/alpine # docker images
REPOSITORY            TAG        IMAGE ID     CREATED       SIZE
alpine                arm-v0.1   30068fd6c4af 4 minutes ago 59.2MB
hello-word.vip/alpine arm64-v0.1 30068fd6c4af 4 minutes ago 59.2MB

4、修改docker的daemon.json配置文件

        因为docker私有仓库服务默认是基于https传输的,而我的自建仓库是http的,所以需要配置不使用https传输;配置路径:/etc/docker/daemon.json

{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://mirror.ccs.tencentyun.com"
    ],
"insecure-registries": ["http://hello-word.vip"]

}

        配置完daemon.json文件之后,需要重启docker服务,使配置文件生效;

5、上传镜像到私有仓库

root@raspberrypi:~/dockerfile/alpine # docker push hello-word.vip/alpine:arm64-v0.1
The push refers to repository [hello-word.vip/alpine]
b0782aba8029: Pushed
5f6ff48124a4: Pushed
a73aeeee9177: Pushed
arm64-v0.1: digest: sha256:7de8ac1fb179c539e3c130d2c03196835af3a2eee51aa59ed75629c31a5d5d17 size: 947

三、自建仓库的常用操作

1、获取仓库镜像列表

root@pinode1:~ # curl -s http://hello-word.vip/v2/_catalog | jq
{
  "repositories": [
    "alpine",
    "centos7/daemonapp",
    "nginxdemos/hello",
    "python-demo"
  ]
}

2、获取镜像的tag列表

root@pinode1:~ # curl -s http://hello-word.vip/v2/alpine/tags/list | jq
{
  "name": "alpine",
  "tags": [
    "arm64-v0.1"
  ]
}

四、验证

1、下载镜像

root@raspberrypi:/home/pi/k8s # docker pull hello-word.vip/alpine:arm64-v0.1
arm64-v0.1: Pulling from alpine
eb93038481dd: Already exists
1b4529d08552: Pull complete
43b89475a0ed: Pull complete
Digest: sha256:7de8ac1fb179c539e3c130d2c03196835af3a2eee51aa59ed75629c31a5d5d17
Status: Downloaded newer image for hello-word.vip/alpine:arm64-v0.1
hello-word.vip/alpine:arm64-v0.1
root@raspberrypi:/home/pi/k8s # docker images
REPOSITORY                                                        TAG          IMAGE ID       CREATED         SIZE
hello-word.vip/alpine                                             arm64-v0.1   30068fd6c4af   3 hours ago     59.2MB

2、运行镜像测试

root@raspberrypi:/home/pi/k8s # docker run --rm --env HOST=0.0.0.0 --env PORT=8085 -p 8888:8085 hello-word.vip/alpine:arm64-v0.1

开启另一个终端,访问宿主机的8888端口,返回了镜像的hostname以及ip地址;测试成功

root@raspberrypi:~ # ss -ntl
State              Recv-Q              Send-Q                           Local Address:Port                            Peer Address:Port             Process
LISTEN             0                   128                                    0.0.0.0:22                                   0.0.0.0:*
LISTEN             0                   4096                                   0.0.0.0:8888                                 0.0.0.0:*
... ...
root@raspberrypi:~ # curl 127.0.0.1:8888
{"8957ed456846": "172.17.0.2"}

 

标签:word,自建,仓库,vip,docker,root,v0.1,alpine
来源: https://www.cnblogs.com/zhangzhide/p/16439117.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有