Docker镜像仓库管理

一、公共镜像仓库

https://hub.docker.com/search?q=

二、私有镜像仓库

创建一个普通仓库

① 创建仓库

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry  registry

② 修改配置文件,使之支持http

[root@docker01 ~]# cat  /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries": ["10.0.0.100:5000"]
}

insecure-registries:此步用于让 docker信任私有仓库地址

③ 重启docker让修改生效

systemctl restart  docker.service

④ 测试

打开浏览器 输入地址http://10.0.0.100:5000/v2/_catalog看到

{"repositories":[]}

表示私有仓库搭建成功并且内容为空

创建basic认证的仓库

① 安装加密工具

yum install httpd-tools  -y

② 设置认证密码

mkdir /opt/registry-var/auth/ -p
        htpasswd  -Bbn clsn 123456  > /opt/registry-var/auth/htpasswd

③ 启动容器,在启动时传入认证参数

docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

④ 测试

打开浏览器 输入地址https://10.0.0.100:5000/v2/_catalog看到

{"repositories":[]}

表示私有仓库搭建成功并且内容为空
 

镜像上传至私有仓库

① 标记此镜像为私有仓库的镜像

docker tag jdk1.8 192.168.184.141:5000/jdk1.8 

② 再次启动私服容器

docker start registry 

③ 上传标记的镜像

docker push 192.168.184.141:5000/jdk1.8

三、镜像仓库管理

登录仓库

docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker login [参数] [仓库名称]

参数说明:

参数

作用

-u

账号

-p

密码

--password-stdin

通过 STDIN 提供密码

# 交互式登录
docker login

# 登陆到Docker Hub (这样不安全,通过linux的history命令,能够查看到明文密码)
docker login -u 用户名 -p 密码

# 先将密码存储在 pwd.txt 文件中,在登陆到Docker Hub 
cat 密码文件.txt | docker login -u 用户名 --password-stdin

docker login -u 用户名 -p 密码 registry.cn-hangzhou.aliyuncs.com

登出仓库

docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker logout [仓库名称]

# 登出Docker Hub  
docker logout  

docker logout registry.cn-hangzhou.aliyuncs.com

查看登录状态

Docker会将token存储在~/.docker/config.json文件中,从而作为拉取私有镜像的凭证。

当退出服务器时会自动删除token

[root@localhost .docker]# cat ~/.docker/config.json
{
    "auths": {
        "harbor.docker-plus.xyz": {
            "auth": "YWRtaW46SGFyYm1yMTIzNDU="
        },
        "https://index.docker.io/v1/": {
            "auth": "d2FsbGV6ejoxN1gxMTA1MzExNQ=="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/18.09.6 (linux)"
    }
}

搜索镜像

从仓库中搜索镜像

docker search [参数] 镜像名称[:镜像标签]

参数说明:

参数

作用

–automated

只列出 automated build类型的镜像

–no-trunc

显示完整的镜像描述

--limit

显示的数量

-f <过滤条件>

列出指定条件的镜像

支持的过滤器:

  • stars 镜像的星数
  • is-automated 是否是自动构建的镜像
  • is-official 是否是官方镜像

--format

格式化输出
模板的有效占位符:

  • .name       镜像名称
  • .Description 镜像描述
  • .StarCount 镜像星数
  • .IsOfficial 官方镜像
  • .IsAutomated 自动构建的镜像

使用 --format 选项时,search 命令将完全按照模板的声明输出数据。如果显示列标题,需要加上 table 伪指令

# 搜索 tomcat 镜像
docker search tomcat

# 显示前十条 tomcat 镜像
docker search --limit 10 tomcat

# 搜索官方版本的 tomcat 镜像
docker search --filter is-official=true tomcat

# 搜索自动构建的,且至少3颗星的 tomcat 镜像
docker search --filter is-automated=true --filter stars=3 tomcat

# 以 “镜像名:星数” 且不带列标题的格式显示 tomcat 镜像
docker search --format "{{.Name}}: {{.StarCount}}" tomcat

字段名

字段描述

NAME

仓库名称

DESCRIPTION

镜像描述

STARS

用户评价

OFFICIAL

是否官方

AUTOMATED

自动构建,表示该镜像由Docker Hub自动构建流程创建的

也可以去官网可视化页面搜索镜像

https://hub.docker.com/search?q=

拉取镜像

从镜像仓库中拉取或者更新指定镜像

docker pull [参数] 镜像名称[:镜像标签]

参数说明:

参数

作用

–a

拉取所有 tagged 镜像

–-disable-content-trust

忽略镜像的校验,默认开启

# 从Docker Hub下载java最新版镜像
docker pull java

# 从Docker Hub下载REPOSITORY为java的所有镜像
docker pull -a java

# 拉第三方镜像方法
docker pull index.tenxcloud.com/tenxcloud/httpd

上传镜像

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push [参数] 镜像名称[:镜像标签]

参数说明:

参数

作用

–-disable-content-trust

忽略镜像的校验,默认开启

# 上传本地镜像myapache:v1到镜像仓库中
docker push myapache:v1

docker push x.xx.xx.xx:5000/zwx/nginx

删除镜像

从私有仓库中删除镜像

docker rmi x.xx.xx.xx:5000/zwx/nginx

四、镜像仓库推送实战

docker推送镜像时,私有仓库的地址要求是https,如果你想推送到http的私有仓库,需要修改docker配置文件

vi /etc/docker/daemon.json

"insecure-registries": ["192.168.0.30:30002"]

修改完毕后,重启docker

# 登录仓库
docker login 192.168.0.30:30002 -u admin

# 构建镜像
docker build -t 192.168.0.30:30002/hcbmp-test/hcbmp-front:0.0.1 -f Dockerfile .

# 上传镜像
docker push 192.168.0.30:30002/hcbmp-test/hcbmp-front:0.0.1

# 登出仓库
docker logout 192.168.0.30:30002
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值