zoukankan      html  css  js  c++  java
  • Docker-----仓库

    1、安装registry

    安装并启动docker

    yum -y install docker
    systemctl enable docker
    systemctl start docker
    

    下载registry镜像

    docker pull registry
    docker images
    

    启动一个容器

    docker run -d -p 4000:5000 --name registry --restart=always --privileged=true -v /registry:/var/lib/registry registry  
    


    参数说明:
    -d后台执行
    -p 端口映射, 宿主机4000端口映射给容器的5000端口
    --restart=always 容器意外关闭后, 自动重启(如果重启docker服务, 带这个参数的, 能自动启动为Up状态, 不带这个的,不会自动启动)
    -v /registry:/var/lib/registry :默认情况下,会将仓库存放于容器内的/var/lib/registry目录下,指定本地目录挂载到容器
    -privileged=true :CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)错误

    进入容器

    docker exec -it 688d5d308b56 sh
    

    构建镜像

    docker有两种方法构建镜像

    1、用docker commit命令来创建镜像

    通过docker run命令启动容器
    修改docker镜像内容
    docker commit 容器名 仓库/镜像名  #提交修改的镜像
    docker run新的镜像
    

     2、用Dockerfile构建镜像

    1、将需要的版本tomcat和jdk放在所建文件夹下
     
    2、创建文件夹并编写Dockerfile文件
    touch Dockerfile

    内容如下:
    FROM e934aafc2206 #这串数字是一个centos镜像的镜像id,在这里作为tomcat的基础镜像
    MAINTAINER Bourbon Tian "bourbon@XXXX.com"  #定义作者以及联系方式
    WORKDIR /  #切换镜像目录,进入/目录  
    RUN mkdir jdk1.7 #在/下创建jdk目录,用来存放jdk文件  
    RUN mkdir tomcat7012 #在/下创建tomcat7012目录,用来存放tomcat
    ADD jdk1.7.0_79 /jdk1.7 #将宿主机的jdk目录下的文件拷至镜像/jdk1.7目录下
    ADD tomcat7012 /tomcat7012 #将宿主机的tomcat目录下的文件拷至镜像的/tomcat7012目录下
    #设置环境变量
    ENV JAVA_HOME=/jdk1.7
    ENV JRE_HOME=$JAVA_HOME/jre
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
    EXPOSE 8080 #公开端口
    ENTRYPOINT ["/tomcat7012/bin/catalina.sh","run"] #设置启动命令
    

    参数官方文档:https://docs.docker.com/engine/reference/builder/


    3、构建镜像

    docker build -t 10.1.50.240:5000/tomcat7012 .
    --no-chche  #略过缓存功能
    

     
    4、查看镜像信息
     
    5、启动容器测试
    docker run --name tomcat2  -d -p 8081:8080 10.1.50.240/tomcat7012

    上传镜像到仓库

    在docker公共仓库下载一个镜像

    docker pull docker.io/centos
    

     
    来修改一下该镜像的tag(前面必须要加上仓库域名或IP地址和端口号)

    docker tag centos 10.1.50.240:4000/icos/ljy-centos
    

     
    把打了tag的镜像上传到私有仓库

    docker push 10.1.50.240:4000/icos/ljy-centos
    

    此处可能会有报错Get https://XXX.XXX.XXX.XXX:4000/v2/: http: server gave HTTP response to HTTPS client

    因为从 docker1.3.2 开始,docker registry 默认都是使用 https 协议而不使用 http,需要修改一下配置,让你的私有仓库支持 http

    [root@localhost docker]# more daemon.json 
    {
        "insecure-registries":["0.0.0.0/0"]
    }
    [root@localhost docker]# 
    

    修改后,重启docker

    仓库下载镜像

    在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入
    # 添加这一行

    "insecure-registries":["10.1.50.240:4000"]
    

     
    //多个私服写法,逗号分隔即可

    {
        "insecure-registries": [
            "registry:4000",
            "registry2:4000"
        ]
    }
    

     
    下载私有仓库镜像
    docker pull 10.1.50.240:4000/icos/ljy-centos

    查看本地仓库镜像
    curl http://10.1.50.240:4000/v2/_catalog

    仓库删除镜像

    私有仓库中删除镜像
    删除的原理就是把索引删掉,但磁盘上的数据是删不掉的。这是由于各个镜像之间的不同层共用的关系,可能导致删除一个镜像后其余的镜像也无法使用了。


    更改registry容器内/etc/docker/registry/config.yml文件
    在storage中添加如下参数允许删除镜像
    delete:
      enabled: true


    1.打开镜像的存储目录,删除镜像文件夹
    $ docker exec <容器名> rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>
     
    2.执行垃圾回收操作,注意2.4版本以上的registry才有此功能
    进入容器执行命令
    $ registry garbage-collect /etc/docker/registry/config.yml

    2、安装harbor

    Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

    yum -y install docker
    yum install epel-release -y
    yum install docker-compose -y
    

    下载harbor文件

    离线安装包
     $ wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
     $ tar xvf harbor-offline-installer-v1.1.2.tgz
    

     配置Harbor

    解压缩之后,目录下回生成harbor.conf文件,该文件就是Harbor的配置文件

    ## Configuration file of Harbor
    # hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
    hostname = docker.ljy.com
    # 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
    ui_url_protocol = http
    # mysql数据库root用户默认密码root123,实际使用时修改下
    db_password = root123
    max_job_workers = 3 
    customize_crt = on
    ssl_cert = /data/cert/server.crt
    ssl_cert_key = /data/cert/server.key
    secretkey_path = /data
    admiral_url = NA
    # 邮件设置,发送重置密码邮件时使用
    email_identity = 
    email_server = smtp.mydomain.com
    email_server_port = 25
    email_username = sample_admin@mydomain.com
    email_password = abc
    email_from = admin <sample_admin@mydomain.com>
    email_ssl = false
    # 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
    harbor_admin_password = 1qaz@WSX
    # 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
    auth_mode = db_auth
    # LDAP认证时配置项
    #ldap_url = ldaps://ldap.mydomain.com
    #ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
    #ldap_search_pwd = password
    #ldap_basedn = ou=people,dc=mydomain,dc=com
    #ldap_filter = (objectClass=person)
    #ldap_uid = uid 
    #ldap_scope = 3 
    #ldap_timeout = 5
    # 是否开启自注册
    self_registration = on
    # Token有效时间,默认30分钟
    token_expiration = 30
    # 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
    project_creation_restriction = everyone
    verify_remote_cert = on
    

     启动 Harbor

    修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各 
    

     启动完成后,我们访问刚设置的hostname即可 http://docker.ljy.com,默认是80端口,如果端口占用,我们可以去修改docker-compose.yml文件中,对应服务的端口映射。windows,hosts文件地址:C:WindowsSystem32driversetc,将域名与ip添加进去即可。

    重启harbor

    [root@master2 ~]# cd harbor/
    [root@master2 harbor]# docker-compose down -v
    [root@master2 harbor]# docker-compose up -d
    或者直接执行安装文件./install
    

    如果使用域名的话主要以下:

    1、配置文件harbor.cfg

    #DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
    hostname = harbor.ljy.com
    

    增加docker配置文件

    vim /etc/docker/daemon.json

    {
     "insecure-registries":["harbor.ljy.com"]
    }
    

     重启docker

    systemctl daemon-reload
    systemctl restart docker
    
  • 相关阅读:
    heml学习笔记
    离线安装
    linux 监测网络流量的工具 ifstat
    Python的 “内存管理机制”,转载,内存泄漏时感觉应该看下
    http 请求
    Java之调用Python代码 转载:https://mp.weixin.qq.com/s/cr8dXzwsQhtei9TfXwcMcA
    python 加密 so 转载:https://mp.weixin.qq.com/s/xmr3fs72XeJn-sMIoGftNA
    migrate
    查看 GPU 基本信息 nvidia-smi 命令
    MVC 基于 AuthorizeAttribute 实现的登陆权限控制
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10724760.html
Copyright © 2011-2022 走看看