docker学习

一,介绍

Docker是一种开源的容器化平台,可用于构建、部署和运行应用程序。它使用容器技术,将应用程序及其依赖项打包在一个独立的、可移植的容器中,以便在不同的环境中运行。

Docker的主要用途包括:(一次构建、随处运行 )
1. 应用程序的快速部署和交付:Docker可以将应用程序及其依赖项打包成一个独立的容器,使应用程序在不同的环境中具有一致的运行方式,简化了应用程序的部署和交付过程。
2. 资源的高效利用:Docker可以在宿主机上运行多个独立的容器,每个容器都是相互隔离的,可以有效地利用宿主机的资源,提高资源利用率。
3. 环境的一致性:Docker容器包含了应用程序及其依赖项,可以确保在不同的环境中容器的运行结果一致,避免了由于环境差异导致的问题。
4. 快速扩展和弹性伸缩:Docker可以快速创建和销毁容器,使应用程序的扩展和伸缩更加灵活和快速,可以根据需求动态地调整容器的数量。
5. 简化开发环境的配置:Docker可以将开发环境打包成容器,使开发者可以在不同的机器上快速搭建相同的开发环境,提高开发效率。

Docker的作用原理如下:
1. 镜像(Image):Docker使用镜像作为容器的基础,镜像是一个只读的文件系统,包含了运行应用程序所需的所有文件和配置。镜像可以通过Dockerfile定义,也可以从Docker Hub等镜像仓库中获取。
2. 容器(Container):容器是从镜像创建的一个运行实例,它是一个独立的、可执行的应用程序。容器与宿主机之间共享操作系统内核,但彼此之间是相互隔离的,每个容器都有自己的文件系统、进程空间和网络接口。
3. Docker引擎(Docker Engine):Docker引擎是Docker的核心组件,它负责管理和运行容器。它包括了Docker守护进程(Docker Daemon)和Docker客户端(Docker Client)。Docker守护进程负责管理容器的生命周期、资源分配和网络配置等,而Docker客户端则提供了与Docker守护进程进行交互的命令行工具或API。
4. Docker网络(Docker Networking):Docker提供了一种灵活的网络模型,可以创建多种类型的网络,如桥接网络、主机网络和覆盖网络等。这些网络可以连接不同的容器,实现容器之间的通信和网络访问。
5. Docker存储(Docker Storage):Docker提供了多种存储驱动,用于管理容器的持久化数据。它可以将容器的数据保存在宿主机的文件系统、网络存储或云存储中。

二,安装

  • 前提条件

    • 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x

  • 查看自己的内核

    • uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。uname -r

1.基本组成

  • 镜像(image)

    • Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

    • 容器与镜像的关系就像面向对象编程中的对象和类

      Docker面向对象
      镜像
      容器对象

  • 容器(container)

    • 从面向对象角度,Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

    • 从镜像容器角度,可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

  • 仓库(repository)

    • 仓库(Repository)是集中存放镜像文件的场所。

    • 类似于:

      • Maven仓库,存放各种jar包的地方;

      • github仓库,存放各种git项目的地方;

      • Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

    • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    • 最大的公开仓库是 Docker Hub(https://hub.docker.com/)

    • 存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

  • 小总结

    • 需要正确的理解仓库/镜像/容器这几个概念:

      • Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

      • image文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    • 镜像文件

      • image文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    • 容器实例

      • 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器

    • 仓库

      • 就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。

2.基本步骤

Install Docker Engine on CentOS | Docker Docs  -----帮助文档

  • 卸载旧版本

  yum remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
  • yum安装gcc相关

    • CentOS7能上外网

    • yum -y install gcc

    • yum -y install gcc-c++

  • 安装需要的软件包

  yum install -y yum-utils
  • 设置stable镜像仓库

  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum 软件包索引

  yum makecache fast
  • 安装DOCKER CE

  yum install docker-ce docker-ce-cli containerd.io
  • 启动docker

  systemctl start docker
  • 测试

    • docker version

    • docker run hello-world

  • 卸载

    • systemctl stop docker

    • yum remove docker-ce docker-ce-cli containerd.io

    • rm -rf /var/lib/docker

    • rm -rf /var/lib/containerd

3.添加加速器

是什么

注册一个属于自己的阿里云账户(可复用淘宝账号)

获得加速器地址连接

粘贴脚本直接执行

  # 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
  mkdir -p /etc/docker
  tee /etc/docker/daemon.json <<-'EOF'
  {
    "registry-mirrors": ["https://ifr3l35w.mirror.aliyuncs.com"]
  }
  EOF

重启服务器

  sudo systemctl daemon-reload
  sudo systemctl restart docker

4.运行原理

为什么Docker会比VM虚拟机快

  • docker有着比虚拟机更少的抽象层

    • 由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。

  • docker利用的是宿主机的内核,而不需要加载操作系统OS内核

    • 当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

四,常用命令

1.帮助启动类

  • 启动docker: systemctl start docker

  • 停止docker: systemctl stop docker

  • 重启docker: systemctl restart docker

  • 查看docker状态: systemctl status docker

  • 开机启动: systemctl enable docker

  • 查看docker概要信息: docker info

  • 查看docker总体帮助文档: docker --help

  • 查看docker命令帮助文档: docker 具docker 体命令 --help

2.镜像命令

  • docker images

    • 列出本地主机上的镜像(选项说明)

      • REPOSITORY:表示镜像的仓库源

      • TAG:镜像的标签版本号

      • IMAGE ID:镜像ID

      • CREATED:镜像创建时间

      • SIZE:镜像大小

        同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

    • OPTIONS说明:

      • -a :列出本地所有的镜像(含历史映像层)

      • -q :只显示镜像ID。

  • docker search 某个XXX镜像名字

    • 网站:https://hub.docker.com

    • 命令:docker search [OPTIONS] 镜像名字

    • 案例:docker search redis

      • NAME:镜像名称

      • DESCRIPTION:镜像说明

      • STARS:点赞数量

      • OFFICIAL:是否官方的

      • AUTOMATED:是否是自动构建的

    • OPTIONS说明:

      • --limit : 只列出N个镜像,默认25个

      • docker search --limit 5 redis

  • docker pull 某个XXX镜像名字

    • 目的:下载镜像

    • docker pull 镜像名字[:TAG]

    • docker pull 镜像名字

      • 没有TAG就是最新版,等价于docker pull 镜像名字:latest

  • docker system df 查看镜像/容器/数据卷所占的空间

  • docker rmi 某个XXX镜像名字ID

    • 目的:删除镜像

    • 删除单个:docker rmi -f 镜像ID

    • 删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG

    • 删除全部:docker rmi -f $(docker images -qa)

3.容器命令

  • 新建+启动容器

    • docker run [OPTIONS] IMAGE COMMAND

      • OPTIONS说明(出现问题注意命令顺序)

        • OPTIONS说明(常用):有些是一个减号,有些是两个减号

        • --name="容器新名字" 为容器指定一个名称;

        • -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

        • -i:以交互模式运行容器,通常与 -t 同时使用;

        • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);

        • -P: 随机端口映射,大写P

        • -p: 指定端口映射,小写p

        参数说明
        -p hostPort:containerPort端口映射 -p 8080:80
        -p ip:hostPort:containerPort配置监听地址 -p 10.0.0.100:8080:80
        -p ip::containerPort随机分配端口 -p 10.0.0.100::80
        -p hostPort:containerPort:udp指定协议 -p 8080:80:tcp
        -p 81:80 -p 443:443指定多个
        • 启动交互式容器(前台命令行)

        • docker images

        • docker run -it centos /bin/bash

  • 列出当前所有正在运行的容器

    • docker ps [OPTIONS]

      • -a :列出当前所有正在运行的容器+历史上运行过的

      • -l :显示最近创建的容器。

      • -n:显示最近n个创建的容器。

      • -q :静默模式,只显示容器编号。

  • 启动已停止运行的容器

    • docker start 容器ID或者容器名

  • 重启容器

    • docker restart 容器ID或者容器名

  • 停止容器

    • docker stop 容器ID或者容器名

  • 强制停止容器

    • docker kill 容器ID或容器名

  • 删除已停止的容器

    • docker rm 容器ID

    • 一次性删除多个容器实例

      • docker rm -f $(docker ps -a -q)

      • docker ps -a -q | xargs docker rm

  • 重要

    • 有镜像才能创建容器,这是根本前提(下载一个Redis6.0.8镜像演示)

    • 启动守护式容器(后台服务器)

      • 在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的后台运行模式。

      使用镜像centos:latest以后台模式启动一个容器

      docker run -d centos

      问题:然后docker ps -a 进行查看, 会发现容器已经退出 很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程. 容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

      这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。

      • docker run -d 容器名

      • redis 前后台启动演示case

        • 前台交互式启动:docker run -it redis:6.0.8

        • 后台守护式启动:docker run -d redis:6.0.8

    • 查看容器日志

      • docker logs 容器ID

    • 查看容器内运行的进程

      • docker top 容器ID

    • 查看容器内部细节

      • docker inspect 容器ID

    • 进入正在运行的容器并以命令行交互

      • docker exec -it 容器ID bashShell

      • 重新进入docker attach 容器ID

      • 案例演示,用centos或者unbuntu都可以

      • 上述两个区别

        • attach 直接进入容器启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。

        • exec 是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。

        • 推荐大家使用 docker exec 命令,因为退出容器终端,不会导致容器的停止。

        • 用之前的redis容器实例进入试试

          • 进入redis服务

            • docker exec -it 容器ID /bin/bash

            • docker exec -it 容器ID redis-cli

            • 一般用-d后台启动的程序,再用exec进入对应容器实例

    • 从容器内拷贝文件到主机上

      • 容器→主机

      • docker cp 容器ID:容器内路径 目的主机路径

4.镜像commit操作案例

  • docker commit提交容器副本使之成为一个新的镜像

  • docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

  • 案例演示ubuntu安装vim

    • 从Hub上下载ubuntu镜像到本地并成功运行

    • 原始的默认Ubuntu镜像是不带着vim命令的

      [root@51143a3abecf /]# vim
      bash: vim: command not found
    • 外网连通的情况下,安装vim

      yum install vim

    如果碰到以下问题:Failed to download metadata for repo ‘AppStream’ Error: Failed to download metadata for repo ‘AppStream’

    因为centOS8于2021年12月31日停止了源的服务,而现在时间是2022年2月10日,所以之前的方法都不行的原因所在(本质是源的问题)。

    解决办法:

      cd /etc/yum.repos.d/
      sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
      sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
      yum update -y

    • 安装完成后,commit我们自己的新镜像

      [root@iZ2ze2rikqlh3ql1n2cw61Z yum.repos.d]# docker commit -m="add vim cmd" -a="renzhe" 51143a3abecf chenxin/mycentos:1.1
      sha256:48faf74abbfa82dc9de8d893df616438faa5e2b1e4f8f3bf0282d7cd42bfe516
      [root@iZ2ze2rikqlh3ql1n2cw61Z yum.repos.d]# docker images
      REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
      renzhe/mycentos   1.1       48faf74abbfa   25 seconds ago   559MB
      tomcat             latest    fb5657adc892   9 months ago     680MB
      redis              latest    7614ae9453d1   9 months ago     113MB
      hello-world        latest    feb5d9fea6a5   12 months ago    13.3kB
      centos             latest    5d0da3dc9764   12 months ago    231MB

5.上传到阿里云

  • 本地镜像素材类型

  [root@iZ2ze2rikqlh3ql1n2cw61Z yum.repos.d]# docker images chenxin/mycentos
  REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
  renzhe/mycentos   1.1       48faf74abbfa   16 minutes ago   559MB
  • 阿里云开发者平台

  • 创建镜像仓库

    • 选择控制台,进入容器镜像服务

    • 选择个人实例

    • 命名空间—继续

    • 仓库名称—继续

    • 进入管理界面获得脚本

  • 将镜像推送到阿里云(按官方给的案例执行即可)

    • 将镜像推送到阿里云registry

      • 管理界面脚本

      • 脚本实例

      #1. 登录阿里云Docker Registry
      $ docker login --username=yunfei.ji@aliyun.com registry.cn-hangzhou.aliyuncs.com
      #用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
      ​
      #您可以在访问凭证页面修改凭证密码。
      ​
      #2. 从Registry中拉取镜像
      $ docker pull registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]
      ​
      #3. 将镜像推送到Registry
      $ docker login --username=yunfei.ji@aliyun.com registry.cn-hangzhou.aliyuncs.com
      $ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]
      $ docker push registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]
      #请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
      ​
      #4. 选择合适的镜像仓库地址
      #从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
      ​
      #如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
      ​
      #5. 示例
      #使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
      ​
      $ docker images
      REPOSITORY                          TAG          IMAGE ID       CREATED             VIRTUAL SIZE
      registry.aliyuncs.com/acs/agent     0.7-dfb6816  37bb9c63c8b2   7 days ago          37.89 MB
      $ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
      #使用 "docker push" 命令将该镜像推送至远程。
      ​
      $ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
  • 将阿里云上的镜像下载到本地

  #2. 从Registry中拉取镜像
  $ docker pull registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong:[镜像版本号]

6.本地镜像发布到私有库

6.1、是什么

  • 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。

  • Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。

  • Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

6.2、将本地镜像推送到私有库

6.2.1、下载镜像Docker Registry
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker pull registry
  Using default tag: latest
  latest: Pulling from library/registry
  79e9f2f55bf5: Pull complete 
  0d96da54f60b: Pull complete 
  5b27040df4a2: Pull complete 
  e2ead8259a04: Pull complete 
  3790aef225b9: Pull complete 
  Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
  Status: Downloaded newer image for registry:latest
  docker.io/library/registry:latest
6.2.2、运行私有库Registry,相当于本地有个私有Docker hub
  # 默认情况,仓库被创建在容器的/usr/local/myregistry/目录下,建议自行用容器卷映射,方便于宿主机联调
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker run -d -p 5000:5000  -v /usr/local/myregistry/:/tmp/registry --privileged=true registry
  ab87e780b72e89abe7f5181283edd63813800f495cba58fd09ef0fd12cec92bd

查看镜像:

6.2.3、案例演示创建一个新镜像,ubuntu安装ifconfig命令
  • 从Hub上下载ubuntu镜像到本地并成功运行

  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker run -it ubuntu /bin/bash
  Unable to find image 'ubuntu:latest' locally
  latest: Pulling from library/ubuntu
  7b1a6ab2e44d: Pull complete 
  Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
  Status: Downloaded newer image for ubuntu:latest
  • 原始的Ubuntu镜像是不带着ifconfig命令的

  root@52690518b4c3:/# ifconfig
  bash: ifconfig: command not found
  • 外网连通的情况下,安装ifconfig命令并测试通过

  apt-get update
  apt-get install net-tools
  ifconfig

  • 安装完成后,commit我们自己的新镜像

  # docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
  # 命令:在容器外执行,记得
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker commit -m="ifconfig cmd add" -a="renzhe.zz" ab87e780b72e renzheubuntu:1.2
  sha256:4c8297d97b9c7fabfcca447dc36f11a003bf7893299bdea5917372c377681969
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker images
  REPOSITORY                                                    TAG       IMAGE ID       CREATED          SIZE
  renzheubuntu                                                 1.2       4c8297d97b9c   40 seconds ago   26.2MB
  renzhe/mycentos                                              1.1       48faf74abbfa   55 minutes ago   559MB
  registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong   1.1       48faf74abbfa   55 minutes ago   559MB
  tomcat                                                        latest    fb5657adc892   9 months ago     680MB
  redis                                                         latest    7614ae9453d1   9 months ago     113MB
  registry                                                      latest    b8604a3fe854   10 months ago    26.2MB
  ubuntu                                                        latest    ba6acccedd29   11 months ago    72.8MB
  hello-world                                                   latest    feb5d9fea6a5   12 months ago    13.3kB
  centos                                                        latest    5d0da3dc9764   12 months ago    231MB

  • 启动我们的新镜像并和原来的对比

  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker commit -m="ifconfig cmd add" -a="yunfeiji" ab87e780b72e renzheubuntu222:1.2
  sha256:cdd9732578cd5b44ad57702a2122c8e71503bdf99674f5dcd1adb6d2a62b6730
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker images
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker run -it renzheubuntu222:1.2 /bin/bash

6.2.4、curl验证私服库上有什么镜像
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]#  curl -XGET http://localhost:5000/v2/_catalog
  {"repositories":[]} # 空的,可以看到,目前私服库没有任何镜像上传过

6.2.5、将新镜像zzyyubuntu:1.2修改符合私服规范的Tag
  # 按照公式: docker   tag   镜像:Tag   Host:Port/Repository:Tag
  # 自己host主机IP地址,填写同学你们自己的,不要粘贴错误
  # 使用命令 docker tag 将renzheubuntu222:1.2 这个镜像修改为localhost:5000/renzheubuntu222:1.2
  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker tag renzheubuntu222:1.2 localhost:5000/renzheubuntu222:1.2

查看镜像:

  [root@iZ2ze2rikqlh3ql1n2cw61Z local]# docker images
  REPOSITORY                                                    TAG       IMAGE ID       CREATED             SIZE
  renzheubuntu222                                              1.2       cdd9732578cd   9 minutes ago       26.2MB
  localhost:5000/renzheubuntu222                               1.2       cdd9732578cd   9 minutes ago       26.2MB
  renzheubuntu                                                 1.2       0f4a22da2e25   13 minutes ago      26.2MB
  <none>                                                        <none>    4c8297d97b9c   27 minutes ago      26.2MB
  renzhe/mycentos                                              1.1       48faf74abbfa   About an hour ago   559MB
  registry.cn-hangzhou.aliyuncs.com/douluodalu/qibaoliulizong   1.1       48faf74abbfa   About an hour ago   559MB
  tomcat                                                        latest    fb5657adc892   9 months ago        680MB
  redis                                                         latest    7614ae9453d1   9 months ago        113MB
  registry                                                      latest    b8604a3fe854   10 months ago       26.2MB
  ubuntu                                                        latest    ba6acccedd29   11 months ago       72.8MB
  hello-world                                                   latest    feb5d9fea6a5   12 months ago       13.3kB
  centos                                                        latest    5d0da3dc9764   12 months ago       231MB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值