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:\Windows\System32\drivers\etc,将域名与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

Docker-----仓库的更多相关文章

  1. 试用 Nexus OSS 3.0 的docker仓库 (二)

    试用 Nexus OSS 3.0 的docker仓库 (一) : http://www.cnblogs.com/wzy5223/p/5410990.html 三. 创建docker私有仓库,docke ...

  2. 试用 Nexus OSS 3.0 的docker仓库 (一)

    Nexus 3.0 可以创建三种docker仓库: 1. docker (proxy)      代理和缓存远程仓库 ,只能pull 2. docker (hosted)    托管仓库 ,私有仓库, ...

  3. 使用 Nexus Repository Manager 搭建私有docker仓库

    使用容器安装Nexus3 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d --name nexus  -- ...

  4. Docker仓库

    仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(t ...

  5. docker简单介绍----docker仓库的应用

    docker hub:主要用来存储docker镜像的仓库 docker默认提供了一个docker仓库,我们也可以自建私有仓库或者使用第三方的docker仓库来pull或者push镜像 这里我们以阿里云 ...

  6. window10 Docker仓库访问

    window10 Docker仓库访问 docer官网 docker仓库 windown10 安装docker可以参考 window10安装docker 配置了加速器以后还访问不了,点击托盘处dock ...

  7. docker仓库harbor搭建

    1.安装docker-compose [root@docker02 ~]# yum install epel-release [root@docker02 ~]# pip install docker ...

  8. 搭建Harbor企业级docker仓库

    搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如 ...

  9. docker+Nexus Repository Manager 搭建私有docker仓库

    使用容器安装Nexus3 1.下载nexus3的镜像: docker pull sonatype/nexus3 2.使用镜像启动一个容器: docker run -d -p 8081:8081 -p ...

  10. 【工具类】怎么进入阿里云docker仓库

    进入阿里云docker仓库. 1.进入官网 2.选择 开发者  --->点击 阿里开源项目 3.选择  服务 点击代码托管.仓库 下的 容器镜像服务 4.点击进入 管理控制台 5.点击镜像搜索, ...

随机推荐

  1. Eclipse中快捷键Ctrl + Alt + 向上箭头 或者 Ctrl + Alt + 向下箭头与Windows冲突

    原文地址:https://blog.csdn.net/buaaroid/article/details/50804608 clipse中按ctrl + alt + 向上箭头没有任何反应,按ctrl + ...

  2. Git操作记录

    记录一些用过的操作 增加远程推送分支 git remote add orgin http://xxxxx.git 直接新建本地分支,将远程分支提取出来. git checkout -t origin/ ...

  3. MySQL函数--(1)

    /*函数与存储过程的区别1.存储过程:可以有0个返回值,可以有多个返回值函数:有且仅有一个返回值*/ #创建语法create FUNCTION 函数名(参数列表) return 返回类型BEGIN函数 ...

  4. beanshell断言模版

    if("${createTime_1}".equals("${createTime_2}")){ Failure = false; FailureMessage ...

  5. Spring Cloud Netflix vs Spring Cloud Alibaba

    Spring Cloud Netflixhttps://spring.io/projects/spring-cloud-netflix spring-cloud-alibaba/README-zh.m ...

  6. 利用ajax技术 实现用户注册。

    一.ajax? 异步加载技术,在不刷新网页的前提下,实现部分网页内容的更新! AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容. 思考? 注册界面刚好可以应用 ...

  7. Docker常用镜像

    Docker,具有快捷方便的特性,机器上不需要安装软件和进行各种配置,拉取镜像,一行命令即可启动服务,不使用时,一行命令关闭容器即可,快捷方便,干净.利索.建议将本地的redis.mysql.kafk ...

  8. Markdown基础语法小结

    一.前言 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. --摘自百度百科 没想到一向不太靠谱的百度百科这次竟有了如此精辟的解释. ...

  9. Git——开启区分大小写

    前言 默认情况下git是忽略区分大小写的,多人合作的情况下不规范很容易造成问题,所以开启区分大小写. 步骤 开启 全局开启 git config --global core.ignorecase fa ...

  10. shutil、zipfile,tarfile

    shutil 模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. 1. shutil.copyfileobj(fsrc, fdst[, length]) 功 ...