zoukankan      html  css  js  c++  java
  • Docker 入门 2 镜像基本操作

    前言

    我们实现了 为 Debian 获取 Docker Engine - Community ,本文接着简述 Docker 容器的基本操作。

    Docker Image 镜像是:容器的基石、层叠的只读文件系统、联合加载。

    使用 Docker 镜像

    镜像仓库和标签

    仓库 Repository 是镜像仓库, 用于存储具体的docker镜像,起到的是仓库存储作用。例如:ubuntu 是 Ubuntu:latest、Ubuntu:20.04、Ubuntu:18.04、Ubuntu:14.04.1 等等的 Repository

    仓库 Registry 是同系列镜像的集合(默认是官方的),用于管理镜像仓库,起到的是服务器下放资源的作用。

    拿近期的新冠病毒的热点来举例:

    • “口罩” 有 k95、kn95、一次性医用口罩、棉布口罩等等。“酒精” 是浓度 90%、75%、50% 等等。而你拿 一次性医用口罩75% 浓度的酒精塑料袋打包 在一起带回了家。

    • 一次性医用口罩 就是 口罩 Repository 下的一个 image ,它的 Tag 就是 “一次性医用”;

    • 75% 浓度的酒精 就是 酒精 Repository 的一个 image ,它的 Tag 就是 “75% 浓度”;

    • 打包成一个塑料袋,这个塑料袋就是你的一个 Registry

    获取镜像

    对于官方 Docker Hub 中存在的公开仓库的镜像,可以使用如下指令:

    docker pull [OPTIONS] NAME [:TAG]
    
    • -a :默认 --all-tags=false ,将所有匹配到搜索名字的镜像全部下载到本地。
    • 可添加标签拉取。

    特别的,对于 Docker Hub 官方认证的镜像可以省略 用户名

    docker pull [用户名]/[镜像名]:[TAG]
    

    当不显式使用 TAG 进行指定镜像版本信息时,默认使用 latest 作为 TAG 。就稳定性而言,因 latest 标签的镜像会就发布的最新版本进行更新,所以应尽量指定非 latest 的镜像。

    对于其他第三方或者本地仓库而言,则需要再仓库名称前指定完整的仓库地址。

    查找镜像

    docker search [OPTIONS] TERM
    
    • 最多一次返回25个结果
    • --automated :默认 false ,自动化显示镜像
    • --no-trunc :默认 false ,不截断显示输出
    • -s :--stars=0 ,限定显示结果的最低星级

    列出镜像列表

    docker images [OPTIONS] [REPOSITORY]
    
    • 无参数
    • -a :--all=false ,显示所有镜像,默认不显示中间层的镜像,默认截断镜像的唯一 id 。
    • -f :--filter=[] ,在显示时的过滤条件。
    • --no-trunc :不使用截断的方式显示数据。
    • -q :--quiet=false ,只显示镜像的唯一 id 。

    查看镜像信息

    docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
    
    • -f :--format=""

    删除镜像

    docker rmi [OPTIONS] IMAGE [IMAGE]
    
    • -f :--force=false ,强制删除镜像
    • --no-prune :=false,保留要删除镜像的父镜像

    注意:

    现在 ubuntu 仓库下 看上去 有三个镜像,实际上只有两个,可以通过 IMAGE ID 查看。

    每个镜像都可以有多个不同的标签 TAG 。

    $ docker images ubuntu
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              latest              72300a873c2c        3 weeks ago         64.2MB
    ubuntu              18.04               72300a873c2c        3 weeks ago         64.2MB
    ubuntu              14.04               6e4f1fe62ff1        2 months ago         64.2MB
    

    一个镜像是 72300a873c2c ,它有两个TAG :latest、18.04。

    删除 ubuntu:18.04

    $ docker rmi ubuntu:18.04
    Untagged: ubuntu:18.04
    

    这里 看上去 删除了一个镜像,实际上并没有真正删除这个镜像。

    真正删除镜像要通过 ID 来删除:

    $ docker rmi <IMAGE ID>
    

    当然,你也可能遇见如下问题:

    Error response from daemon: conflict: unable to delete 704eae0e0bc3 (must be forced) - image is being used by stopped container c24e348b3014
    

    这是由于基于该镜像的容器依然存在,需要移除该容器才能删除镜像。

  • 相关阅读:
    洛谷[ZJOI2008]骑士(基环树二次DP法+树形DP)
    洛谷P5022 旅行(基环树+断环法)
    AtCoder Beginner Contest 174 ——D.Alter Altar(思维)
    洛谷P1972 [SDOI2009]HH的项链(离线+树状数组)
    CF1365D Solve The Maze (BFS)
    codeforces1426——F. Number of Subsequences(DP)
    codeforces1324——E.Sleeping Schedule(DP+初始化)
    codeforces319——B. Psychos in a Line(思维+单调栈)
    codeforces292——D. Connected Components(并查集+前缀和优化)
    codeforces1013——D. Chemical table(思维+转化+并查集)
  • 原文地址:https://www.cnblogs.com/Yogile/p/12506803.html
Copyright © 2011-2022 走看看