zoukankan      html  css  js  c++  java
  • 【docker容器】docker使用笔记-docker镜像

    镜像

    • 搜索镜像
    docker search IMAGE_NAME

     注:

    NAME: 镜像仓库源的名称

    DESCRIPTION: 镜像的描述

    OFFICIAL: 是否 docker 官方发布

    stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

    AUTOMATED: 自动构建。

    • 查看当前本机所有镜像
    docker images

      注:

    REPOSITORY:表示镜像的仓库源

    TAG:镜像的标签

    IMAGE ID:镜像ID

    CREATED:镜像创建时间

    SIZE:镜像大小

    • 下载镜像(当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。但我们最好预先下载这个镜像,使用 docker pull 命令来下载它。)
    docker pull IMAGE_NAME:tag  

     

      关于tag:没有指定tag则默认使用最新的tag,如上图

     关于域名:使用 docker pull {IMAGE_NAME} 拉取镜像时,有两种情况:

    1、IMAGE_NAME 第一个斜杠之前有域名标识

    Docker 会将 IMAGE_NAME 识别为带域名的镜像。例如,myregistry.io/space1/image1:latest ,Docker 会去 myregistry.io 指向的服务器请求镜像数据。一个 Docker 镜像分为很多层,如果本地存在该层,则不会再次拉取。

    2、IMAGE_NAME 第一个斜杠之前没有域名标识

    Docker 会将 IMAGE_NAME 拼接为 docker.io/IMAGE_NAME 请求镜像数据。事实上,$ docker pull docker.io/shaowenchen/images1 与 $ docker pull shaowenchen/images1 同等效果。对于 DockerHub 提供的镜像,国内访问速度较慢,可以通过添加镜像源的方式加速。

    • 删除镜像
    docker rmi IMAGE_NAME

      当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

    1、从已经创建的容器中更新镜像,并且提交这个镜像

    2、使用 Dockerfile 指令来创建一个新的镜像

    • 更新镜像

    首先需要先将已有镜像作为容器运行。

    docker run -t -i IMAGE_NAME:tag /bin/bash

    docker run -t -i IMAGE_ID /bin/bash  

     在运行的容器内使用 apt-get update 命令进行更新。 在完成操作之后,输入 exit 命令来退出这个容器。

     

     此时 容器的ID(非镜像ID) 为 cff4280baebd的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。 

    docker commit -m="your description" -a="author" container_id IMAGE_NAME:tag

    各个参数说明:

    • -m: 提交的描述信息

    • -a: 指定镜像作者

    • container_id:容器ID
    • IMAGE_NAME:tag: 指定要创建的目标镜像名及tag

    我们可以使用 docker images 命令来查看我们的新镜像 

     更新的新镜像可以来启动容器,通过docker ps可查询其已作为容器启动。

     

    • 构建镜像

    我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。Dockerfile如下:

    复制代码
    #声明基础镜像来源
    FROM IMAGE_NAME:tag
    #声明镜像拥有者
    MAINTAINER author
    #RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行。 <命令行命令> 等同于,在终端操作的 shell 命令。
    RUN your command
    #开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。这一条待确认是否必须。
    ENTRYPOINT ping www.aliyun.com
    复制代码

    注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

    复制代码
    FROM centos
    RUN yum install wget
    RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
    RUN tar -xvf redis.tar.gz
    以上执行会创建 3 层镜像。可简化为以下格式:
    FROM centos
    RUN yum install wget 
        && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" 
        && tar -xvf redis.tar.gz
    复制代码

    然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

    docker build -t IMAGE_NAME:tag .

    参数说明:

    • -t :指定要创建的目标镜像名(注意镜像名称中不能有大写字母)

    • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

    使用docker images 查看创建的镜像已经在列表中存在,如下图:

    • 镜像打标签
    docker tag IMAGE_ID IMAGE_NAME:tag

    参数说明:

    • IMAGE_ID : 镜像ID

    • IMAGE_NAME:tag:新镜像源名(repository name)和新的标签名(tag)

    使用 docker images 命令可以看到,镜像多一个标签。

    • 推送镜像到仓库

    docker login --username=XXXXX registry.cn-shanghai.aliyuncs.com #执行后输入镜像仓库密码

    docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]

    docker push registry.cn-shanghai.aliyuncs.com/dtstack123/test:[标签]

    参数说明:

    • --username : 输入仓库用户名

    • registry.cn-shanghai.aliyuncs.com:仓库名称

    注意:先打tag,再登录仓库,在push到仓库。 

  • 相关阅读:
    模式识别及相关领域的重要期刊列表转载
    Spotify敏捷模式详解三部曲第三篇:工程文化
    Spotify敏捷模式详解三部曲第二篇:研发过程
    Scrum工具Leanoo思维导图
    真心推荐的项目管理工具
    Spotify敏捷模式详解三部曲第一篇:研发团队
    敏捷开发必须要选的scrum工具
    什么是用户故事?用Leangoo怎么管理?
    Scrum工具Leangoo“免费版”与“企业版”对比
    参加scrum中文网ScrumMaster认证培训
  • 原文地址:https://www.cnblogs.com/chooperman/p/14367437.html
Copyright © 2011-2022 走看看