一次镜像,处处运行

Docker必须运行在Linux内核的系统上

在线浏览思维导图

Docker2022

  • 基本组成

    • 镜像(image)

      一个文件,镜像文件

    • 容器(container)

      运行的实例

    • 仓库(repository)

      集中存放镜像的场所

  • Docker为什么比虚拟机快

    • 不需要硬件资源虚拟化
    • 不需要加载一个操作系统内核
  • 使用阿里云镜像

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://0p9pn5mo.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  • 镜像命令

    • docker images

      列出本地主机上的镜像

      image-20230222194319398

      说明:

      • REPOSITORY镜像的仓库源
      • TAG镜像的版本号
      • IMAGE ID镜像ID
      • CREATED镜像创建时间
      • SIZE镜像大小

      参数说明:

      • -a列出本地所有的镜像(包括映像层)
      • -q只显示镜像ID
    • docker search xxx

      搜索镜像

      image-20230222194909975

      参数说明

      • --limit xxx

        只列出xx个镜像,默认25个

        image-20230222195030146

    • docker pull 镜像名字[:TAG]

      没有TAG就是最新版,相当于docker pull 镜像名字:latest

      image-20230222195437044

      [root@localhost ~]# docker pull redis
      Using default tag: latest
      latest: Pulling from library/redis
      a2abf6c4d29d: Pull complete 
      c7a4e4382001: Pull complete 
      4044b9ba67c9: Pull complete 
      c8388a79482f: Pull complete 
      413c8bb60be2: Pull complete 
      1abfd3011519: Pull complete 
      Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
      Status: Downloaded newer image for redis:latest
      docker.io/library/redis:latest
      [root@localhost ~]# docker images
      REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
      redis         latest    7614ae9453d1   14 months ago   113MB
      hello-world   latest    feb5d9fea6a5   17 months ago   13.3kB
    • docker system df

      查看镜像/容器/数据卷所占用空间

      image-20230222195859488

      [root@localhost ~]# docker system df
      TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
      Images          2         1         112.7MB   112.7MB (99%)
      Containers      1         0         0B        0B
      Local Volumes   0         0         0B        0B
      Build Cache     0         0         0B        0B
    • docker rmi 镜像名称|镜像ID

      删除某些镜像

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

      image-20230222200236474

      [root@localhost ~]# docker rmi hello-world
      Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container f8ea79e8208f is using its referenced image feb5d9fea6a5
      [root@localhost ~]# docker rmi -f hello-world
      Untagged: hello-world:latest
      Untagged: hello-world@sha256:6e8b6f026e0b9c419ea0fd02d3905dd0952ad1feea67543f525c73a0a790fefb
      Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b341

      参数说明

      • -f强制删除
    • 虚悬镜像

      仓库名、标签名都是\<none>的标签

      image-20230222200552555