【Docker】Docker 镜像仓库

这篇具有很好参考价值的文章主要介绍了【Docker】Docker 镜像仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💫3.4 仓库 Registry

3.4.1 基本概念

是什么?

镜像仓库:用于管理 Docker 的镜像

为什么需要?

  • 快速交付:当应用开发完成后,直接打包为一个镜像,将镜像上传到仓库后,可以在任何装有 Docker 的机器上下载该镜像,并运行为一个容器
  • 便于镜像的重复利用

能干什么?

  • 实现快速交付,可以更方便在其他机器上下载镜像运行容器
  • 可以存储公司内部私有镜像,避免暴露到外网
  • 提升镜像下载速度

3.4.2 常见的仓库

3.4.2.1 Docker Hub

官方站点:https://hub.docker.com

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

3.4.2.2 Aliyun

阿里云镜像仓库

3.4.2.2.1 本地镜像发布到阿里云流程

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

3.4.2.2.2 镜像的生成方法
  • 基于当前容器创建一个新的镜像,新功能增强
$ docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
  • 使用 Dockerfile 文件
3.4.2.2.3 将本地镜像推送到阿里云
  • 本地镜像素材原型
$ docker images
REPOSITORY               TAG             IMAGE ID       CREATED        SIZE
myubuntu                v1.0            a8375a7783cc   9 hours ago    174MB
  • 阿里云开发者平台
https://promotion.aliyun.com/ntms/act/kubernetes.html
  • 创建仓库镜像
  1. 选择控制台,进入容器镜像服务
  2. 选择个人实例
  3. 命名空间
  4. 仓库名称
  5. 进入管理界面获取脚本
  • 将镜像推送到阿里云

将继续推送到阿里云 registry

  • 管理界面脚本

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 脚本实例
# 1. 登录阿里云Docker Registry
$ docker login --username=kubedragonzw registry.cn-shenzhen.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码

# 3. 将镜像推送到Registry
$ docker login --username=kubedragonzw registry.cn-shenzhen.aliyuncs.com
$ docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:[镜像版本号]
$ docker push registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:[镜像版本号]

# docker tag myubuntu:v1.0 registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/myubuntu:v1.0
# docker push registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/myubuntu:v1.0
请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

3.4.2.2.4 将阿里云上的镜像下载到本地
# 3. 从Registry中拉取镜像
$ docker pull registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/ubuntu:[镜像版本号]

~ docker pull registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/ubuntu:1.0
~ docker history registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/ubuntu:1.0
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
e3587595bab1   44 minutes ago   /bin/bash                                       105MB     添加VIM软件
<missing>      9 months ago     /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      9 months ago     /bin/sh -c #(nop) ADD file:5d68d27cc15a80653…   72.8MB
~ docker run -itd --name au1 registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/ubuntu:1.0 /bin/bash
~ docker exec -it au1 /bin/bash
root@10dc9cc87e81:/# vim --version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Feb 01 2022 09:16:32)

# docker pull docker push registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:[镜像版本号]
# 拉取镜像
$ docker pull registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:v2.0
# 查看镜像的历史记录
$ docker history registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:v2.0
IMAGE          CREATED         CREATED BY                                      SIZE      COMMENT
7e52ca924574   3 hours ago     nginx -g daemon off;                            1.23kB    nginx container
<missing>      16 months ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>      16 months ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B
<missing>      16 months ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>      16 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
<missing>      16 months ago   /bin/sh -c #(nop) COPY file:09a214a3e07c919a…   4.61kB
<missing>      16 months ago   /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB
<missing>      16 months ago   /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0…   1.96kB
<missing>      16 months ago   /bin/sh -c #(nop) COPY file:65504f71f5855ca0…   1.2kB
<missing>      16 months ago   /bin/sh -c set -x     && addgroup --system -…   61.1MB
<missing>      16 months ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1~bullseye   0B
<missing>      16 months ago   /bin/sh -c #(nop)  ENV NJS_VERSION=0.7.1        0B
<missing>      16 months ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.5     0B
<missing>      16 months ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>      16 months ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      16 months ago   /bin/sh -c #(nop) ADD file:09675d11695f65c55…   80.4MB

# 将镜像运行成容器
$ docker run -it --name nginx-demo -d -P registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:v2.0
$ docker ps -l
CONTAINER ID   IMAGE                                                                   COMMAND                  CREATED         STATUS         PORTS                   NAMES
af6fcf5626c1   registry.cn-shenzhen.aliyuncs.com/dragonzw_personal_images/nginx:v2.0   "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:32770->80/tcp   nginx-demo
$ curl 127.0.0.1:32770
<h1>Welcome to My Nginx ...</h1>
🌈3.4.2.3 自主搭建(私服仓库)
💫3.4.2.3.1 Nexus 的简介和搭建

Nexus

Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用 Nexus 你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个 Artifact。Nexus 是一套 “开箱即用” 的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。Nexus 支持 WebDAV 与 LDAP 安全身份认证。

# 创建持久化目录
$ mkdir -p /opt/docker/nexus
# 开放权限
$ chmod 777 -R /opt/docker

# 启动 nexus 容器
# 5000 数据上传容器内的端口 5001 是进行仓库拉取镜像的端口
$ docker run -d --restart=always \
  -p 10880:8081 -p 5000:5000 -p 5001:5001 \
  --name nexus \
  -v /opt/docker/nexus:/nexus-data \
  sonatype/nexus3
# nexus 第一次启动会比较慢,需要一定时间进行初始化过程
$ docker logs -f -n 200 nexus

# 查看默认密码
$ docker exec -it nexus cat /nexus-data/admin.password
d775567d-c1b5-492b-a481-96f011d80415

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 右上角点击"Sign in"进行登录。用户名:admin/密码:d775567d-c1b5-492b-a481-96f011d80415[需要查看文件得到]
  • 根据向导进行配置即可。

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • maven-pulibc 是一个分组,所有的访问都可以从 maven-pulibc 进行访问
  • maven-release 是发布后的 jar 包(即测试通过后的 jar 包)
  • maven-snapshots 是测试代码存放的位置
  • maven-central 是一个只读的位置,是一个代理,可以将请求发送到配置阿里云镜像仓库

Type 类型:

  • hosted 会把代码数据提交上来并保存在私服仓库的本地
  • proxy 是连接远程的 Maven 仓库,访问远程的代理
  • group 是将创建的 Repository 仓库进行聚合在一起

创建存储器

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

创建 Docker 仓库

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 创建 docker(hosted) 仓库

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 创建 docker(proxy) 代理仓库[ 配置好代理地址即可创建主机 ]

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 创建 docker(group) 分组

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

💫3.4.2.3.2 Nexus 的使用

修改Docker 配置文件

# 在Docker机制中,默认除Docker认证服务以外的其他非https协议直接禁用
# 5000 数据上传容器内的端口 5001 是进行仓库拉取镜像的端口
$ vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://po13h3y1.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","http://f1361db2.m.daocloud.io"],
  "insecure-registries": ["http://10.0.0.30:5000","http://10.0.0.30:5001"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

# 重启 Docker 服务
$ systemctl daemon-reload && systemctl restart docker
# 查看 Nexus 容器的状态
$ docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                                                       NAMES
2decf8b528ae   sonatype/nexus3   "sh -c ${SONATYPE_DI…"   41 minutes ago   Up 11 seconds   0.0.0.0:5000-5001->5000-5001/tcp, 0.0.0.0:10880->8081/tcp   nexus
# 查看容器的日志
$ docker logs nexus

# 使用 Nexus 账号和密码进行登录
$ docker login --username admin --password Admin@h3c 10.0.0.30:5000
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

Nexus 完成镜像管理命令

推送镜像

$ docker pull alpine:latest

# 拉取镜像并推送镜像到Nexus的仓库
$ docker tag alpine:latest 10.0.0.30:5000/alpine:v1.0.0
$ docker push 10.0.0.30:5000/alpine:v1.0.0
The push refers to repository [10.0.0.30:5000/alpine]
8d3ac3489996: Pushed
v1.0.0: digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3 size: 528

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

拉取镜像

$ docker pull 10.0.0.30:5000/alpine:v1.0.0
v1.0.0: Pulling from alpine
Digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3
Status: Downloaded newer image for 10.0.0.30:5000/alpine:v1.0.0
10.0.0.30:5000/alpine:v1.0.0

$ docker login --username admin --password Admin@h3c 10.0.0.30:5001
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
$ docker pull 10.0.0.30:5001/alpine:v1.0.0
v1.0.0: Pulling from alpine
Digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3
Status: Downloaded newer image for 10.0.0.30:5000/alpine:v1.0.0
10.0.0.30:5001/alpine:v1.0.0

注意:

Nexus 中的 5000 是代表docker-snapshots的仓库,现在下载的镜像刚好是docker-snapshots的仓库的镜像,故可以正常下载;

但是如果下载的镜像不在docker-snapshots的仓库中,是真正的 Nginx / Tomcat 的镜像,那么就无法在docker-snapshots的仓库中进行下载,就需要在docker-central的仓库中下载,docker-central的仓库并没有配置访问路径,只配置了docker-public分组,docker-public是配置5001端口。

所以要实现找到本地仓库镜像就下载,找不到就去远程DockerHub等进行下载,就需要登录到 5001 的下载。

Nexus 将上传和下载分成了两个不同的端口,上传镜像就使用 5000 端口,为了方便下载则使用 5001 端口

💫3.4.2.3.3 Harbor 的简介和搭建

Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,可以用来构建企业内部的Docker镜像仓库。

它在Docker的开源项目 Distribution的基础上,添加了一些企业需要的功能特性,如镜像同步复制、漏洞扫描和权限管理等。

Harbor是由VMWare公司开源的容器镜像仓库。事实上,Harbor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制,AD/LDAP集成以及审计日志等,足以满足基本企业需求。

Harbor 是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理 (RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

  • 基于角色的访问控制 - 用户与 Docker 镜像仓库通过 “项目” 进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
  • 镜像复制 - 镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
  • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
  • AD/LDAP 支持 - Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
  • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
  • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
  • RESTful API - RESTful API 提供给管理员对于 Harbor 更多的操控,使得与其它管理软件集成变得更容易。
  • 部署简单 - 提供在线和离线两种安装工具, 也可以安装到 vSphere 平台 (OVA 方式) 虚拟设备。
# 除了 Docker Hub 以外最早的一个比较受欢迎的 Docker 企业级 Registry 服务器。
# 使用 Harbor 必须要先安装 docker 以及 docker-compose

Docker Compose

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 安装

sudo curl -L "http://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

创建软链:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

docker-compose --version

🌈注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。

  • 安装 Harbor
$ wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz
$ tar -zxvf harbor-offline-installer-v2.8.0.tgz

$ cd harbor/
# 编辑harbor.yml
$ cp -av harbor.yml.tmpl harbor.yml
$ vim harbor.yml
hostname: 10.0.0.30

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 20880
# HTTPS协议进行注释

# 进行安装Harbor应用(进行预编译)
$ bash prepare
# 进行Harbor的安装
$ bash install.sh

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

$ docker-compose ps
      Name                     Command                  State                 Ports
---------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)
harbor-db           /docker-entrypoint.sh  13        Up (healthy)
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:20880->8080/tcp
redis               redis-server /etc/redis.conf     Up (healthy)
registry            /home/harbor/entrypoint.sh       Up (healthy)
registryctl         /home/harbor/start.sh            Up (healthy)

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

Harbor WebUI 用户名:admin

Harbor WebUI 密码:Harbor12345

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

💫3.4.2.3.3 Harbor 的使用
  • 创建用户[ 后续用户可以登录到 Harbor 仓库中 ]

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 创建项目[ 在Harbor中的"项目"选择"新建项目" ]

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

  • 项目中可以添加相应的成员信息

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

修改Docker 配置文件

# 在Docker机制中,默认除Docker认证服务以外的其他非https协议直接禁用
# 5000 数据上传容器内的端口 5001 是进行仓库拉取镜像的端口
$ vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://po13h3y1.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","http://f1361db2.m.daocloud.io"],
  "insecure-registries": ["http://10.0.0.30:20880"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

# 重启 Docker 服务
$ systemctl daemon-reload && systemctl restart docker
# 查看 Docker 受信任的仓库地址
$ docker info | grep -A 4 "Insecure Registries"
 Insecure Registries:
  10.0.0.30:20880
  10.0.0.30:5000
  10.0.0.30:5001
  127.0.0.0/8

# 查看 Harbor 容器的状态
$ docker ps
974f2e26ae4c   goharbor/harbor-jobservice:v2.8.0                                       "/harbor/entrypoint.…"   20 minutes ago   Restarting (2) Less than a second ago                                                               harbor-jobservice
d83ad739e189   goharbor/nginx-photon:v2.8.0                                            "nginx -g 'daemon of…"   20 minutes ago   Exited (128) 43 seconds ago             0.0.0.0:20880->8080/tcp                                     nginx
f10f8e72f4fe   goharbor/harbor-core:v2.8.0                                             "/harbor/entrypoint.…"   20 minutes ago   Exited (128) 43 seconds ago                                                                         harbor-core
2021486d3b04   goharbor/redis-photon:v2.8.0                                            "redis-server /etc/r…"   20 minutes ago   Up 28 seconds (health: starting)                                                                    redis
e6794c64cd5b   goharbor/registry-photon:v2.8.0                                         "/home/harbor/entryp…"   20 minutes ago   Up 29 seconds (health: starting)                                                                    registry
651c0103f8fb   goharbor/harbor-db:v2.8.0                                               "/docker-entrypoint.…"   20 minutes ago   Up 28 seconds (health: starting)                                                                    harbor-db
c051eca3ae33   goharbor/harbor-registryctl:v2.8.0                                      "/home/harbor/start.…"   20 minutes ago   Exited (137) 33 seconds ago                                                                         registryctl
adcece30aac6   goharbor/harbor-portal:v2.8.0                                           "nginx -g 'daemon of…"   20 minutes ago   Up 28 seconds (health: starting)                                                                    harbor-portal
6c5ed1f7f802   goharbor/harbor-log:v2.8.0                                              "/bin/sh -c /usr/loc…"   20 minutes ago   Up 29 seconds (health: starting)        127.0.0.1:1514->10514/tcp                                   harbor-log

# 直接重新部署 Harbor(进入到harbor根目录)
$ docker-compose down && docker-compose up -d
$ docker-compose ps
      Name                     Command                       State                     Ports
------------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (health: starting)
harbor-db           /docker-entrypoint.sh  13        Up (health: starting)
harbor-jobservice   /harbor/entrypoint.sh            Up (health: starting)
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (health: starting)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (health: starting)
nginx               nginx -g daemon off;             Up (health: starting)   0.0.0.0:20880->8080/tcp
redis               redis-server /etc/redis.conf     Up (health: starting)
registry            /home/harbor/entrypoint.sh       Up (health: starting)
registryctl         /home/harbor/start.sh            Up (health: starting)

# 使用 Harbor 账号和密码进行登录
$ docker login --username admin --password Harbor12345 10.0.0.30:20880
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

Harbor 完成镜像管理命令

推送镜像

$ docker pull alpine:latest
$ docker tag alpine:latest 10.0.0.30:20880/web_cloud/alpine:v1.0.0
$ docker push 10.0.0.30:20880/web_cloud/alpine:v1.0.0
The push refers to repository [10.0.0.30:20880/web_cloud/alpine]
8d3ac3489996: Pushed
v1.0.0: digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3 size: 528

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

拉取镜像

# 可以使用WebUI提示的拉取命令
# 别的机器执行会报错
$ docker pull 10.0.0.30:20880/web_cloud/alpine@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3
Error response from daemon: Get https://10.0.0.30:20880/v2/: http: server gave HTTP response to HTTPS client
# 因为并没有在别的机器daemon.json文件里面配置安全访问的仓库地址

$ vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://po13h3y1.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","http://f1361db2.m.daocloud.io"],
  "insecure-registries": ["http://10.0.0.30:20880"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

# 重启 Docker 服务
$ systemctl daemon-reload && systemctl restart docker

# 建议使用可读性较好的标签命令进行下载(因为是私库所以需要使用用户名和密码进行登录)
$ docker login --username admin --password Harbor12345 10.0.0.30:20880
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

# 拉取镜像
$ docker pull 10.0.0.30:20880/web_cloud/alpine:v1.0.0
$ docker pull 10.0.0.30:20880/web_cloud/alpine@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3
sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3: Pulling from web_cloud/alpine
Digest: sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3
Status: Image is up to date for 10.0.0.30:20880/web_cloud/alpine@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3

docker 镜像仓库,Docker | Kuebrnetes,docker,容器,运维

3.4.3 仓库的使用

3.4.3.1 配置

/etc/docker/damon.json 文件中加入 *insecure*-registries: ["仓库访问地址"]

3.4.3.2 认证
docker login -u 用户名 仓库地址
3.4.3.3 推送镜像到仓库

第一步:基于镜像打标签

阿里云:

docker tag <image id> registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名称:版本

私服仓库:

docker tag <image id> 仓库路径/镜像名称:版本

第二步:推送

docker push <tagName>[:版本]
3.4.3.4 从仓库拉取镜像

登录:文章来源地址https://www.toymoban.com/news/detail-714745.html

docker login -u用户名 仓库地址
docker pull 仓库路径/镜像名称:版本

到了这里,关于【Docker】Docker 镜像仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker 将容器打包成镜像&推送镜像到仓库

    示例: 1.登录仓库进行身份验证 2.将本地镜像重命名与仓库格式相匹配 3.推送镜像到仓库

    2024年02月09日
    浏览(36)
  • Docker 基础实战:环境搭建、容器、仓库、镜像

    可以使用 docker help 或者 man docker-run 来获取完整的 Docker 命令列表,本文只介绍一些常用的命令与参数。 考虑到安装流程过于繁琐,在 CentOS 中,可以使用官方提供的脚本来快速安装 Docker: 可以从 https://get.docker.com/ 查看支持的操作系统。 当安装完毕后,设置开机自启动 Doc

    2024年02月16日
    浏览(40)
  • Docker镜像、容器、仓库及数据管理

    使用docker pull命令,使用docker search命令可以搜索远端仓库中共享的镜像。 使用docker run [OPTIONS] IMAGE [COMMAND] [ARG...]命令,如:docker run --name ubuntu_test --rm -it ubuntu:test /bin/bash,其中选项如下: --name 指定容器名。 --rm 表示容器退出后将其删除。 -t选项让Docker分配一个伪终端并绑定

    2024年02月09日
    浏览(33)
  • 面向对象视角下,理解Docker 镜像容器和仓库

    今天带大家在面向对象的视角下,理解镜像,容器和仓库到底是什么关系,相信大家读完本文一定会有更深刻的理解。 注:面向对象语言有很多,本文基于Java语言进行描述 首先创建一个类,用来模拟 Docker 中的一个镜像 tomcat8,其中暴露了一个获取版本号和启动的方法 创建

    2024年01月19日
    浏览(36)
  • Docker基础入门:镜像、容器导入导出与私有仓库搭建

    💖The Begin💖点点关注,收藏不迷路💖 1.镜像导入 是复制的过程。 2.容器导入 是将当前容器 变成一个新的镜像。 save 和 export区别: 1)save 保存镜像所有的信息-包含历史信息。 2)export 只导出当前的信息。 首先,两者的操作对象不同。docker save是将一个镜像保存为一个tar包

    2024年02月12日
    浏览(40)
  • 【微服务实战之Docker容器】第四章-【微服务实战之Docker容器】第三章-镜像仓库

    【微服务实战之Docker容器】第一章-下载及安装 Docker挂载主机目录访问如果出现cannot open directory .: Permission denied解决办法: 在挂载目录后多加一个–privileged=true参数即可 如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的

    2024年02月07日
    浏览(35)
  • Docker三大核心概念(镜像、容器和仓库)与虚拟化

    目录 1. Docker是什么 2. Docker与虚拟化 3. Docker虚拟化的好处 4. Docker核心概念    4.1.镜像    4.2.容器    4.3.仓库 5. CentOS7 安装docker(在线方式)    5.1.内核版本信息检查      5.2 卸载可能存在的旧版本      5.3 安装必要的系统工具    5.4 添加docker-ce安装源    5.5 更新yum缓存

    2023年04月17日
    浏览(29)
  • 【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性

    👧个人主页:@小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 🔑本章内容:Docker工具核心组件构成(镜像、容器、仓库)及性能属性 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇文章正文内容,下面案例可供参考 Docker 是一个开放源代码的容器化平

    2024年02月14日
    浏览(39)
  • 【运维知识大神篇】运维人必学的Docker教程1(Docker安装部署+Docker镜像管理+容器管理常用命令+搭建docker的本地yum源+windows系统安装docker环境)

    本篇文章开始给大家介绍Docker,这个是我非常喜欢的一个服务,介绍给大家,希望大家也能喜欢! 目录 何为容器 Docker环境安装部署 一、yum安装(CentOS7.9) 二、rpm包安装(CentOS) 三、卸载docker环境 四、安装指定的docker版本 五、Ubuntu安装docker环境 六、使用deb安装docker 七、

    2024年01月18日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包