Docker的镜像管理
目录
Docker的镜像管理命令
搜索镜像
格式:docker search 关键字(镜像名称或仓库名)
docker search nginx #搜索nginx的镜像
docker search clearlinux #搜索指定仓库clearlinux中的镜像
复制代码
获取镜像(下载镜像)
格式:docker pull 镜像名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 的镜像。
docker pull nginx #下载nginx镜像
复制代码
查看当前已下载镜像
镜像下载后存放在 /var/lib/docker
查看下载到本地的所有镜像 docker images
字段 | 注释 |
---|---|
REPOSITORY | 镜像属于的仓库 |
TAG | 镜像的标签信息,标记同一个仓库中的不同镜像 |
IMAGE ID | 镜像的唯一ID 号,唯一标识一个镜像 |
CREATED | 镜像创建时间 |
VIRTUAL SIZE | 镜像大小 |
镜像快速下载
由于官方的镜像源在国外,所以下载速度慢。所以通过从国内的镜像源获取实现加速。
阿里云网页地址:阿里云登录页 (aliyun.com)
-
点击左上角三条杠,选择容器镜像服务
-
点击镜像加速器,按要求配置镜像加速器
-
在/etc/docker下,按指示操作
-
docker info
查看
查看镜像的详细信息( 获取容器/镜像的元数据 )
格式:docker inspect 镜像ID号/容器ID
根据镜像的唯一标识 ID 号,获取镜像详细信息
内容解析
镜像层解释
镜像层数量可能会很多,所有镜像层会联合在一起组成一个统一的文件系统。如果不同层中有一个相同路径的文件,比如/a,上层的/a会覆盖下层的/a,也就是说用户只能访问到上层中的文件/a。在容器层中,用户看到的是一个叠加之后的文件系统。
文件操作 | 说明 |
---|---|
添加问价 | 在容器中创建文件时,新文件被添加到容器层中 |
读取文件 | 在容器中读取某个文件时,docker会从上往下依次在各个镜像层中查找此文件 |
修改文件 | 在容器中修改已存在的文件时,docker会从上往下依次在各镜像层中查找此文件。一旦找到,立即将其复制到容器层,然后修改 |
删除文件 | 在容器中删除文件时,docker也会从上往下依次在镜像层中查找此文件,找到后,会在容器层中记录此删除操作,(只是记录删除操作) |
- 容器层记录对镜像的修改,所有镜像层都只是只读的,一会对容器修改,所有镜像可以被多个容器共享
为本地的镜像添加新的标签
添加标签后,镜像的ID号并不会改变。
格式:docker tag 名称:[标签] [仓库名/]名称:[新标签]
示例:
docker tag nginx:latest mynginx:1.23 #为nginx镜像添加web标签
docker tag nginx:latest 仓库名/mynginx:1.23 #为镜像添加库标识,方便上传到官方仓库,因为上传镜像时必须指定仓库
docker images | grep nginx
复制代码
删除镜像
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
格式:docker rmi 镜像名:标签
#删除指定标签docker rmi 镜像ID -f
#删除指定镜像
-
当一个镜像有多个镜像名时,删除一个等于删除该镜像标签
-
当一个镜像有多个镜像名时,根据镜像ID能全删除(必须使用强制删除)
批量删除镜像
docker images #查看本地所有镜像
docker images -q #查看本地有哪些镜像,只显示镜像ID
docker rmi $(docker images -q) -f #批量删除本地所有镜像
复制代码
导出镜像
将镜像保存成为本地文件,实际是将镜像打包成一个tar包。
格式:docker save -o 存储文件名 存储的镜像
docker save -o mynginx.tar nginx:latest #打包镜像命名为mynginx.tar存在当前目录下
ls -lh
复制代码
载入镜像
格式:
docker load < 导出的文件
或者
docker load -i 导出的文件
复制代码
上传镜像
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号,hub.docker.com 。默认上传到公有仓库,其他人可以下载仓库中的镜像。如果想设置成私有仓库(仅自己可见),不允许其他人下载,需要付费。
可以使用 docker login
命令来输入用户名、密码和邮箱来完成注册和登录。docker logout
命令进行登出。
在上传镜像之前,还需要先对本地镜像添加新的标签,在镜像名称前加上仓库名,然后再使用 docker push
命令进行上传。
docker tag nginx:1.14 jie675010376/mynginx:jj #添加新的标签,在镜像名称前加上仓库名,jie9020536为仓库名称
docker login #登录公共仓库
Username: #账号
password: #密码
docker push jie675010376/mynginx:jj #向上推送
复制代码
之后通过docker pull jie675010376/mynginx:jj
,就能获取该镜像
总结
docker 是什么?
是go语言开发的开源的容器引擎
是在容器里运行应用的工具,可以看作是一种轻量级的“虚拟机”
可以实现容器应用的一次封装,到处运行
docker容器 和 虚拟机 区别
共享宿主机内核 拥有独立的操作系统内核
启动速度快,秒级 分钟级
性能接近原生,几乎无损耗 通过hypervisor对主机进行访问,会多占用一些资,性能源弱于容器,最多损耗50%
单机容量成百上千个 几十个
namespace资源隔离,cgroup资源限制 完全隔离
namespace:UTS(主机名,域名) IPC(信息量,消息队列和共享内存) PID(进程编号) NOUNT(挂载点) NETWORK(网络设备,网络栈,端口) USER(用户)
cgroup :容器能够使用的资源的上限
物理机 裸金属
虚拟机 VMware Workstation(个人级) VMware Sphere+ESXL(企业级) KVM(基于Linux内核) OpenStack(基于KVM) 公有云/专有云/混合云
容器 docker podman rocker containerd
容器编排 K8S docker swarm
docker核心概念:
镜像:创建容器的基础,就是一个可执行的压缩包,是一个只读模板,包含运行应用程序所需要的所有资源
容器:基于镜像创建的运行实例,容器间相互隔离
仓库:用于集中存放镜像的地方,可分为公有仓库和私有仓库
复制代码
docker 管理镜像的命令
命令 | 含义 |
---|---|
docker search <仓库/镜像名> | 搜索镜像 |
docker pull <仓库/镜像名> | 下载镜像 |
docker images | 查看本地的所有镜像 |
docker images -q | 只显示本地所有镜像的ID号 |
docker inspect <镜像ID/容器ID> | 查看镜像的详细信息( 获取镜像/容器的元数据 ) |
docker tag 名称:[标签] [仓库名/]名称:[新标签] | 为本地的镜像添加新的标签 |
docker rmi < 镜像名称:标签> | 删除镜像的某个标签 |
docker rmi <镜像ID> -f | 删除指定镜像 |
docker rmi $(docker images -q) | 删除本地所有镜像 |
docker save -o 镜像文件.tar 镜像名称:标签 | 存出镜像:将镜像保存为本地文件 |
docker load -i[或<] 镜像文件 | 载入镜像:将镜像文件导入到镜像库中 |
docker login | 登录公共仓库docker hub |
docker push 仓库名/镜像名:标签 | 上传镜像(将镜像上传到官方仓库) |
docker logout | 登出docker hub |
更多推荐
所有评论(0)