• Docker的核心概念镜像Images, 容器Containers, 数据卷Volumes


    写作时间:2020-01-30
    Docker: 2.1.0.2, MySQL: 8, MacOS: 10.15.2,

    说明
    Docker很容易部署应用和服务在容器Containers中,产生的数据可以存在数据卷Volumes,打包成镜像Images,所以可以容易迁移。这也使本地机器占用了磁盘去存储Images,Containers, Volumes,此文记录如何查询、删除相关数据.

    Docker 的元素与编程语言的对象对应关系如下:

    Docker 面向对象
    镜像Image 类
    容器Container 对象
    数据卷Volume 数据
    1. 清除所有没用的或者挂起的Images, Containers, Volumes, 和 Networks
    Docker提供一条简单的命令,清除所有被挂起资源(没有加载到容器Container里面的资源,运行或者停止的Container都不算挂起) — images, containers, volumes, 和 networks:

    $ docker system prune

    清除没有正在运行的容器Containers的资源:

    $ docker system prune -a

    2. 镜像Images
    显示Docker镜像Images列表

    $ docker images

    带上-a会显示依赖没有Repository为<none>的Images

    $ docker images -a

    比如:

    % docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    mysql 8 3a5e53f63281 2 weeks ago 465MB
    mysql latest 3a5e53f63281 2 weeks ago 465MB
    zgpeace/cheers2019 latest bc105f0ed7c1 4 months ago 4.01MB
    redis latest 63130206b0fa 4 months ago 98.2MB
    golang 1.11-alpine e116d2efa2ab 5 months ago 312MB
    1
    2
    3
    4
    5
    6
    7
    模糊搜索Images

    $ docker images -a | grep “pattern”

    比如搜索带sql字样的镜像

    % docker images | grep "sql"
    mysql 8 3a5e53f63281 2 weeks ago 465MB
    mysql latest 3a5e53f63281 2 weeks ago 465MB
    1
    2
    3
    删除镜像,可以一次删除多个Image(Image ID也可以删除)

    $ docker rmi ID_or_Name ID_or_Name

    比如笔者删除镜像zgpeace/cheers2019

    % docker rmi zgpeace/cheers2019
    Untagged: zgpeace/cheers2019:latest
    Untagged: zgpeace/cheers2019@sha256:08153d3589af5b3e723b694f4e2d9224b503b6610f3e15974a9856bfbe61bf61
    Deleted: sha256:bc105f0ed7c109237601d283b9bd9a3ffe7b51772ae152fc1e9bb2fef76493fc
    Deleted: sha256:bdaece6e0d6fe6324c1003d21df95d099d7afa6c053a4e9036d6340da71f82b7
    Deleted: sha256:258a9dfb81508874e634dcb3521410822c8977dab334bcc053ef2df2ec1738fd
    1
    2
    3
    4
    5
    6
    3. 容器Container
    显示正在运行容器

    $ docker ps

    显示所有容器(包括不运行的)

    $ docker ps -a

    搜索容器

    $ docker ps -a | grep "pattern”

    停止运行中的容器

    $ docker stop

    删除容器

    $ docker rm ID_or_Name ID_or_Name

    举个例子:

    % docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    e9488be5b71d mysql "docker-entrypoint.s…" 14 hours ago Up 14 hours 0.0.0.0:3306->3306/tcp, 33060/tcp docker-mysql
    23:39 zgpeace@zgpeaces-MacBook-Pro /Users/zgpeace
    % docker stop e9488be5b71d
    e9488be5b71d
    23:40 zgpeace@zgpeaces-MacBook-Pro /Users/zgpeace
    % docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    1
    2
    3
    4
    5
    6
    7
    8
    9
    4. 数据卷Volumes
    数据卷Volumes是Docker容器Containers推荐的数据持久化方式. 虽然绑定的文件系统bind mounts默认绑定于宿主机器, 数据卷volumes完全通过Docker管理. 数据卷Volumes相对于绑定的文件系统bind mounts有如下优势:

    数据卷Volumes更容易迁移.
    数据卷Volumes可以通过Docker命令行工具方便管理.
    数据卷Volumes适用于Linux 和 Windows 容器containers.
    数据卷Volumes在多个容器containers共享数据更安全.
    数据卷Volume驱动让你存储数据volumes或者远程机器hosts 或者云服务, 可以加密里面的内容,甚至添加其他方法.
    6.新的数据卷Volume可以保留之前容器Container产生的数据.
    此外, 数据卷volumes的持久化数据增加,是通过layer的方式叠加起来,从而不增加Container的大小


    创建一个数据卷volume:

    $ docker volume create my-vol

    查看数据卷的配置信息volume:

    $ docker volume inspect my-vol
    [
    {
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
    "Name": "my-vol",
    "Options": {},
    "Scope": "local"
    }
    ]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    查看数据卷Volumes列表

    $ docker volume ls

    模糊搜索数据卷Volumes

    $ docker volume ls | grep volume_name

    清除数据卷Volumes

    $ docker volume rm volume_name volume_name

    5. 参考
    https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes

    https://docs.docker.com/storage/volumes/
    ————————————————
    版权声明:本文为CSDN博主「AI架构师易筋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zgpeace/article/details/104111248/

  • 相关阅读:
    0302 随想
    1231递归下降语法分析程序设计
    《构建之法》1、2、3章读后感
    复利计算总结
    操作系统实验0
    学习进度条
    0302思考并回答一些问题
    评论
    c语言文法
    词法分析
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/15827989.html
Copyright © 2020-2023  润新知