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

news/2024/6/3 17:32:20 标签: docker, 容器, 运维

写作时间: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/


http://www.niftyadmin.cn/n/957773.html

相关文章

Python requests 移除SSL认证,控制台输出InsecureRequestWarning取消方法。

转载自&#xff1a;https://blog.csdn.net/xie_0723/article/details/53424809 今天遇到在requests设置移除SSL认证的时候&#xff0c;控制台会抛出以下警告&#xff1a; 问题C:\Python27\lib\site-packages\requests\packages\urllib3\connectionpool.py:843: InsecureReque…

Error:java: Compilation failed: internal java compiler error 解决办法

具体参考:Error:java: Compilation failed: internal java compiler error 解决办法 - 程序猿的故事 - CSDN博客 1、查看项目的jdk&#xff08;CtrlAltshiftS&#xff09; File ->Project Structure->Project Settings ->Project 2、查看工程的jdk&#xff08;CtrlAl…

-source 1.5 中不支持 diamond 运算符

maven编译时报“-source 1.5 中不支持 diamond 运算符”错误 D:\maven3.5.3\conf\settings.xml <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> …

Python去除多余空格

转载自&#xff1a;https://www.cnblogs.com/wzzkaifa/p/6978537.html 今天做爬虫时。发现结果中好多多余的空格。然后有强迫症的我当然不会放过 " xyz ".strip() # returns "xyz" " xyz ".lstrip() # returns …

maven报错Blocked mirror for repositories解决方案

maven报错Blocked mirror for repositories解决方案 maven报错Blocked mirror for repositories解决方案 关键报错信息 Could not resolve dependencies for project XXXCould not transfer artifact XXXBlocked mirror for repositories XXX 基本出现在mvn package的时候&a…

[plugin:vite:import-analysis] Failed to resolve import “axios“ from “src/utils/axios.js“. Does the f

[plugin:vite:import-analysis] Failed to resolve import “axios” from “src/utils/axios.js”. Does the file exist? 这是什么bug&#xff1f; [vite] Internal server error: variable link-color is undefinedPlugin: vite:cssFile: /Users/ivyone/hami54/guagua1/sr…

Python:将utf-8格式的文件转换成gbk格式的文件

转载自&#xff1a;https://www.cnblogs.com/hongfei/p/4240112.html 需求&#xff1a;将utf-8格式的文件转换成gbk格式的文件 实现代码如下&#xff1a; def ReadFile(filePath,encoding"utf-8"): with codecs.open(filePath,"r",encoding) as f: …