相关命令详解

(1)push推送

  • 将镜像推送到由其名称或标签指定的仓库中。与pull命令相对。
[root@docker ~]# docker push --help
Usage: docker push [OPTIONS选项] NAME仓库名[:TAG标签]
Push an image or a repository to a registry # 推送一个镜像或仓库到注册中心
Options:
--disable-content-trust Skip image signing (default true) # 跳过镜像签名 # 例子:
[root@docker ~]# docker push 用户名/testdocker:22.03

(2)commit提交

  • 从容器创建一个新的镜像。
[root@docker ~]# docker commit --help
Usage: docker commit [OPTIONS选项] CONTAINER容器 [REPOSITORY仓库名[:TAG标签]]
Create a new image from a containers changes
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true) # 创建镜像过程中容器暂停

(3)login登录 和 logout退出

  • 使用 docker login 命令登录docker注册中心。
# 语法
[root@docker docker]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon. # 如果server没有指定,默认从daemon获取。
Options:
-p, --password string Password # 密码
--password-stdin Take the password from stdin # 标准输入输入密码
-u, --username string Username # 用户名 # 示例:
[root@docker ~]# docker login --username=zzz(用户名) registry.cn-hangzhou.aliyuncs.com
  • 使用 docker logout 命令退出注册中心登录。
# 语法
[root@hqs docker]# docker logout --help
Usage: docker logout [SERVER]
Log out from a Docker registry.
If no server is specified, the default is defined by the daemon. # 示例:
[root@docker docker]# docker logout
Removing login credentials for https://index.docker.io/v1/

操作示例步骤

(1)docker hub 镜像上传

1.修改镜像镜像加速器

[root@docker ~]# cd /etc/docker/
[root@docker docker]# vi daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@docker docker]# systemctl daemon-reload
[root@docker docker]# systemctl restart docker

2.登录docker hub官网注册账号

https://hub.docker.com/signup

3.登录账户,创建一个仓库

“Create Repository”——> 输入命名空间和仓库名——> “Description”填写描述信息——> “visibility”中选择是创建public仓库还是private仓库——> 点击“Create”创建仓库

4.登录Docker Hub

[root@docker docker]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you dont have a Docker ID, head over to https://hub.docker.com to create one.
Username: zzz # 输入创建的用户名
Password: # 输入密码并按回车
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded

5.构建镜像

[root@docker docker-hello]# docker build -t zzz/testdocker .
Sending build context to Docker daemon 865.3kB
Step 1/3 : FROM scratch
--->
Step 2/3 : COPY hello /
---> 2322533b4210
Step 3/3 : CMD ["/hello"]
---> Running in 5994e2099b8d
Removing intermediate container 5994e2099b8d
---> 32fedb0d83ba
Successfully built 32fedb0d83ba
Successfully tagged zzz/testdocker:latest

6.为已存在的镜像重新设置标签

[root@docker docker-hello]# docker tag 32fedb0d83ba zzz/testdocker:22.03
[root@docker docker-hello]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hqs2212586/testdocker 22.03 32fedb0d83ba About a month ago 861kB
hqs2212586/testdocker latest 32fedb0d83ba About a month ago 861kB

7.推送镜像

[root@docker docker-hello]# docker push  zzz/testdocker:22.03
The push refers to repository [docker.io/zzz/testdocker]
88dc11111fec: Pushed
22.03: digest: sha256:c9225ad48cb94c8f160e839187e81ce28f85dbff8316e7443879f5169f41cfb0 size: 527

8.在docker hub上检查推送的仓库

[仓库地址](https://hub.docker.com/repository/docker/zzz/testdocker)

(2)容器生成镜像提交docker hub

1.登录官网账户,创建一个仓库

“Create Repository”——> 输入命名空间和仓库名——> “Description”填写描述信息——> “visibility”中选择是创建public仓库还是private仓库——> 点击“Create”创建仓库

2.容器提交生成镜像

[root@docker docker-hello]# docker commit 4decee095428 zzz/ubuntu:22.03
sha256:a4b85b3fb73e23e75440430252477b77aee8927fdf9495160297b86dcf5f917c
[root@docker docker-hello]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zzz/ubuntu 22.03 a4b85b3fb73e 1 seconds ago 72.8MB

3.推送镜像

[root@docker docker-hello]# docker push zzz/ubuntu:22.03
The push refers to repository [docker.io/zzz/ubuntu]
b954f8dfd459: Pushed
9f54eef41275: Mounted from library/ubuntu
22.03: digest: sha256:573bc189eba09934db466a2344edee5f46cd7d98fb765690b4ba7b1e9dd26623 size: 735

4.在docker hub上检查推送的仓库

[仓库地址](https://hub.docker.com/repository/docker/zzz/ubuntu)

(3)第三方Docker注册中心

  • 阿里云除了提供 Docker Hub 的镜像加速服务,还提供自己的仓库注册服务————容器镜像服务。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,打造云上使用Docker的一体化体验。

    阿里云容器镜像服务(简称 ACR)是提供安全的应用镜像托管能力,精确的镜像安全扫描功能,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。
  • 阿里云仓库的格式:域名/命名空间/仓库名称:标签。示例:registry.cn-hangzhou.aliyuncs.com/zzz/docker_test:22.03

1.登录aliyun平台,注册登录

[阿里云官网地址](https://www.aliyun.com)

2.在阿里云控制台创建仓库

打开阿里云控制台——> 产品与服务列表——> 弹性计算里的容器镜像服务,进入容器镜像服务控制台

点击“个人实例”——> 点击左侧“镜像仓库”——> 点击“创建镜像仓库”——> 输入仓库名称、选择仓库类型、输入仓库的摘要或描述等信息——> 点击“下一步”——> 选择“本地仓库”——> 点击“创建镜像仓库”

3.设置registry登录密码

使用docker login通过密码登录镜像服务实例,需要先设置或获取临时密码或固定密码。

容器镜像服务——> 个人实例——> 仓库管理菜单里的访问凭证——> 设置固定密码

4.登录阿里云Docker Registry

[root@docker docker-hello]# docker logout
Removing login credentials for https://index.docker.io/v1/
[root@docker docker-hello]# docker login --username=zzz registry.cn-hangzhou.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

5.构建镜像

[root@docker docker-hello]# docker build -t registry.cn-hangzhou.aliyuncs.com/zzz(命名的空间)/docker_test:22.03 .
Sending build context to Docker daemon 865.3kB
Step 1/3 : FROM scratch
--->
Step 2/3 : COPY hello /
---> Using cache
---> 846e09a540e6
Step 3/3 : CMD ["/hello"]
---> Using cache
---> a5dbf1d93254
Successfully built a5dbf1d93254
Successfully tagged registry.cn-hangzhou.aliyuncs.com/zzz/docker_test:22.03

6.将镜像推送到Registry

[root@docker docker-hello]#  docker push registry.cn-hangzhou.aliyuncs.com/zzz/docker_test:22.03
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/zzz/docker_test]
88dc11111fec: Pushed
22.03: digest: sha256:b1d135c19b018cfbbba32085948cb125507b508549a8296568c25a81f5b0709b size: 527

7.验证镜像上传

访问容器镜像服务控制台——> 个人实例——> 镜像仓库——> 点击仓库名docker_test——> 点击镜像版本 可以看到我们上传的镜像。

(4)自建Docker注册中心

  • 因为安全和网络问题,用户可以建立自己的注册中心提供镜像仓库注册服务

1.基于容器安装运行Registry

  • 使用的 Docker Registry工具 已经开源,可以在Docker Hub上下载镜像启动容器。
[root@docker ~]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
3d2430473443: Pull complete
5bf98bf80c2f: Pull complete
950c199aa45b: Pull complete
92504897768b: Pull complete
c6488f74dce8: Pull complete
Digest: sha256:65be6503496c34ec234e89a831ca248b18c2e04c800d9d74af73866e3cda8578
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@docker ~]# docker run -d -p 5000:5000 --restart=always --name myregistry -v /opt/data/registry:/var/lib/registry registry
3cac187c798b08d12da5f292a03621e2e27021763481e9313b6f7de57a722354
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cac187c798b registry "/entrypoint.sh /etc…" 30 seconds ago Up 29 seconds 0.0.0.0:5000->5000/tcp myregistry # 验证刚建立的注册中心
[root@docker ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":[]} # 此结果说明运行正常,注册中心还没有任何镜像

2.将镜像上传到自建的注册中心

  • 要注意自建的注册中心仓库标签格式:[主机:端口]/仓库名称:标签
# 1.给已有的镜像打标签符合自建注册中心格式
[root@docker ~]# docker tag ubuntu 127.0.0.1:5000/ubuntu:v1
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zzz/ubuntu 22.03 93a86f5131ec 5 hours ago 72.8MB
127.0.0.1:5000/ubuntu v1 ba6acccedd29 1 months ago 72.8MB
ubuntu latest ba6acccedd29 1 months ago 72.8MB
[root@docker ~]# docker tag zzz/testdocker 127.0.0.1:5000/testdocker:v1 # 2.执行镜像上传
[root@docker ~]# docker push 127.0.0.1:5000/ubuntu:v1
The push refers to repository [127.0.0.1:5000/ubuntu]
9f54eef41275: Pushed
v1: digest: sha256:7cc0576c7c0ec2384de5cbf245f41567e922aab1b075f3e8ad565f508032df17 size: 529
[root@docker ~]# docker push 127.0.0.1:5000/testdocker:v1
The push refers to repository [127.0.0.1:5000/testdocker]
88dc11111fec: Pushed
v1: digest: sha256:b1d135c19b018cfbbba32085948cb125507b508549a8296568c25a81f5b0709b size: 527 # 3.执行测试
[root@docker ~]# curl http://127.0.0.1:5000/v2/_catalog
{"repositories":["testdocker","ubuntu"]}

3.从自建注册中心下载镜像

[root@docker ~]# docker rmi 127.0.0.1:5000/testdocker:v1
Untagged: 127.0.0.1:5000/testdocker:v1
Untagged: 127.0.0.1:5000/testdocker@sha256:b1d135c19b018cfbbba32085948cb125507b508549a8296568c25a81f5b0709b
[root@docker ~]# docker pull 127.0.0.1:5000/testdocker:v1
v1: Pulling from testdocker
Digest: sha256:b1d135c19b018cfbbba32085948cb125507b508549a8296568c25a81f5b0709b
Status: Downloaded newer image for 127.0.0.1:5000/testdocker:v1
127.0.0.1:5000/testdocker:v1
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
127.0.0.1:5000/testdocker v1 a5dbf1d93254 5 hours ago 861kB

4.配置注册中心地址

本地服务器情况下使用127.0.0.1或者localhost作为注册中心地址都是可以的。

但如果使用主机的域名或IP地址提供服务,会报错,这是因为1.3版本后,docker注册中心默认使用的https,但是搭建私有注册中心默认使用的是http。

解决方法:修改docker客户端/etc/docker/daemon.json文件,将地址添加到insecure-registries列表中,允许不安全的通信即可。

# 示例
{
"insecure-registries":["192.168.88.101:5000"]
}
# 保存后重启docker
systemctl restart docker

docker注册中心相关操作的更多相关文章

  1. 三、Docker镜像的相关操作

    原文:三.Docker镜像的相关操作 一.查看本地镜像: docker images 二.使用某个镜像来运行容器: docker run -t -i xxxx(镜像名):xx.xx(版本,不带即最新) ...

  2. Eureka服务注册中心相关错误com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect

    启动项目报错如下 原因: 在默认设置下,Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,所以会出现 com.sun.jersey.api.client.ClientHandlerExce ...

  3. 开发dubbo应用程序(二)dubbo注册中心相关概述

    1.注册中心概述 ​ 在Dubbo微服务体系中,注册中心是其核心组件之一.Dubbo通过注册中心实现了分布式环境中各微服务之间的注册与发现,是各分布式节点之间的纽带.其主要作用如下: 动态加入.一个服 ...

  4. 【快学Docker】Docker镜像相关操作

    前言 镜像是Docker的三大核心概念之一(另外两个分别是:容器和仓库). Docker运行容器前需要本地存在镜像,如果本地不存在镜像,Docker则会尝试从远端仓库拉去镜像.镜像是Docker一大核 ...

  5. 阿里注册中心nacos使用整合Dubbo-原创

    阿里注册中心nacos是今年开源的框架,一开始以为就是个zk.后面看了图才明白他对标的竟然是consul\eureka,最重要是完美支持dubbo.我想今年开源它也是别有用意 .(目前nacos0.7 ...

  6. Dubbo源码学习总结系列七---注册中心

    Dubbo注册中心是框架的核心模块,提供了服务注册发现(包括服务提供者.消费者.路由策略.覆盖规则)的功能,该功能集中体现了服务治理的特性.该模块结合Cluster模块实现了集群服务.Dubbo管理控 ...

  7. 手动造轮子——为Ocelot集成Nacos注册中心

    前言     近期在看博客的时候或者在群里看聊天的时候,发现很多都提到了Ocelot网关的问题.我之前也研究过一点,网关本身是一种通用的解决方案,主要的工作就是拦截请求统一处理,比如认证.授权.熔断. ...

  8. [源码阅读] 阿里SOFA服务注册中心MetaServer(1)

    [源码阅读] 阿里SOFA服务注册中心MetaServer(1) 目录 [源码阅读] 阿里SOFA服务注册中心MetaServer(1) 0x00 摘要 0x01 服务注册中心 1.1 服务注册中心简 ...

  9. SpringCloud 源码系列(1)—— 注册中心 Eureka(上)

    Eureka 是 Netflix 公司开源的一个服务注册与发现的组件,和其他 Netflix 公司的服务组件(例如负载均衡.熔断器.网关等)一起,被 Spring Cloud 整合为 Spring C ...

随机推荐

  1. 论HashMap、Hashtable、TreeMap、LinkedHashMap的内部排序

    参考文章 论HashMap.Hashtable.TreeMap.LinkedHashMap的内部排序

  2. Intel的CPU系列说明

    至强可扩展系列是英特尔推出的新一代至强处理器系列,如今距离该系列推出几乎过去一年了.新的CPU并没有延续E系列的命名,英特尔将至强可扩展系列以金属命名,将该系列分为"铂金Platinum&q ...

  3. .net MVC微信开发自定义View类型菜单时在相应控制器获取用户OpenID的问题

    因为公司的项目在接收微信服务器Post过来的数据包是有指定的入口,所以在相应控制器里无法接收到微信服务器Post过来的数据,所以无法获得OpenID,也尝试过先在入口哪里解析获得OpenID再通过Se ...

  4. Identity Server 4客户端认证控制访问API

    项目源码: 链接:https://pan.baidu.com/s/1H3Y0ct8xgfVkgq4XsniqFA 提取码:nzl3 一.说明 我们将定义一个api和要访问它的客户端,客户端将在iden ...

  5. SpringMVC-01

    1. 概述 1.1 概念 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 项目请求响应架构演进: 软件三层 软件三层 ...

  6. Python语言之面向对象

    Python语言之面向对象 前言 面向对象 -- Object Oriented 简写:OO 面向对象设计 -- Object Oriented Design 简写:OOD 面向对象编程 -- Obj ...

  7. Pytorch 中 tensor的维度拼接

    torch.stack() 和 torch.cat() 都可以按照指定的维度进行拼接,但是两者也有区别,torch.satck() 是增加新的维度进行堆叠,即其维度拼接后会增加一个维度:而torch. ...

  8. 工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03

    作者:vivo 互联网服务器团队- Cheng Wangrong 本文是<vivo营销自动化技术解密>的第4篇文章,分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了 ...

  9. Java开发学习(十八)----AOP通知获取数据(参数、返回值、异常)

    前面的博客我们写AOP仅仅是在原始方法前后追加一些操作,接下来我们要说说AOP中数据相关的内容,我们将从获取参数.获取返回值和获取异常三个方面来研究切入点的相关信息. 前面我们介绍通知类型的时候总共讲 ...

  10. 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 ...