Docker
基本概念
- 世界领先的软件容器平台
- 优点
- Docker的镜像提供了除内核外完整的运行时环境,确保了运行环境一致性
- 秒级的启动时间
- 磁盘使用空间少,一般为MB,单机支持上千个容器
- 生命周期
- 镜像(一个特殊的文件系统)
- 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
- 镜像不包含任何动态数据,其内容在构建之后也不会被改变
- 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层
- 容器(镜像运行时的实体)
- 容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
- 容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失
- 使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失
- 仓库(集中存放镜像文件的地方)
- 一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本
- 镜像(一个特殊的文件系统)
- example
- 建好房子,房子当做镜像放到包里,可以在别的地方变出房子
- 包是Docker仓库,放在包里的是Docker镜像,空地上的床是Docker容器
使用
下载镜像
-
下载镜像(仓库/镜像名:版本)
localhost:~ didi$ docker pull docker.io/mysql:5.7
-
验证(查看本地镜像)
localhost:~ didi$ docker images
-
细节
bf5952930446: Pull complete 8254623a9871: Pull complete 938e3e06dac4: Pull complete ea28ebf28884: Pull complete f3cef38785c2: Pull complete
- 一个镜像由多个层组成,类似bf5952930446这样的串表示层的唯一ID,重复的层使用本地的即可
-
pull子命令
-a,--all-tags=true|false
: 是否获取仓库中所有镜像,默认为否--disable-content-trust
: 跳过镜像内容的校验,默认为 true
Docker查看镜像信息
-
images命令列出镜像
localhost:~ didi$ docker images localhost:~ didi$ docker image ls
-
使用tag命令为镜像添加标签
localhost:~ didi$ docker tag docker.io/mysql:5.7 wy_mysql:5.7
-
使用inspect命令查看镜像详细信息
localhost:~ didi$ docker inspect docker.io/mysql:5.7 localhost:~ didi$ docker inspect -f {{".Size"}} docker.io/mysql:5.7
-
使用history命令查看镜像历史
localhost:~ didi$ docker history docker.io/mysql:5.7 localhost:~ didi$ docker history --no-trunc docker.io/mysql:5.7
Docker搜索镜像
-
search命令
docker search [option] mysql localhost:~ didi$ docker search mysql
-
search子命令
-f,--filter filter
: 过滤输出的内容--limitint
:指定搜索内容展示个数--no-index
: 不截断输出内容--no-trunc
:不截断输出内容
//搜索官方提供的 mysql 镜像 localhost:~ didi$ docker search --filter=is-official=true mysql //搜索 Stars 数超过 100 的 mysql 镜像 localhost:~ didi$ docker search --filter=stars=100 mysql
Docker删除镜像
-
通过标签删除镜像
localhost:~ didi$ docker rmi wy_mysql:5.7 localhost:~ didi$ docker image rm wy_mysql:5.7
-f,-force
: 强制删除镜像,即便有容器引用该镜像-no-prune
: 不要删除未带标签的父镜像
-
通过ID删除镜像(先删除标签,再删除镜像本身)
localhost:~ didi$ docker rmi ee7cbd482336
-
删除镜像的限制
- 有容器正在引用镜像无法删除
-
清理镜像
localhost:~ didi$ docker image prune
-a,--all
: 删除所有没有用的镜像,而不仅仅是临时文件-f,--force
:强制删除镜像文件,无需弹出提示确认
Docker创建镜像
Docker导出&加载镜像
-
导出镜像
localhost:~ didi$ docker save -o mysql_5_7.tar mysql:5.7
-
加载镜像(别人导入本地镜像库)
localhost:~ didi$ docker load -i mysql_5_7.tar localhost:~ didi$ docker load < mysql_5_7.tar