docker 镜像管理命令

docker 镜像管理命令

​ Docker 镜像含有启动容器所需要的文件系统及所需要的内容,因此镜像主要用于创建并启动 docker 容器。

​ Docker 镜像含里面是一层层文件系统,叫做 Union FS(联合文件系统),联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统,虚拟文件系统的目录结构就像普通 linux 的目录结构一样,docker 通过这些文件再加上宿主机的内核提供了一个 linux 的虚拟环境,每一层文件系统我们叫做一层 layer,联合文件系统可以对每一层文件系统设置三种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker 镜像中每一层文件系统都是只读的,构建镜像的时候,从一个最基本的操作系统开始,每个构建的操作都相当于做一层的修改,增加了一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层把底层遮住了一样,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层也不需要知道里面有几层,结构如下:

mark

​ 一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成,bootfs(boot file system) 主要包含 bootloader 和 kernel,bootloader 主要用于引导加载 kernel,当 kernel 被加载到内存中后 bootfs 会被 umount 掉,rootfs (root file system) 包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc 等标准目录和文件,下图就是 docker image 中最基础的两层结构,不同的 linux 发行版(如 ubuntu 和 CentOS ) 在 rootfs 这一层会有所区别。

​ 但是对于 docker 镜像通常都比较小,官方提供的 centos 基础镜像在 200MB 左右,一些其他版本的镜像甚至只有几 MB,docker 镜像直接调用宿主机的内核,镜像中只提供 rootfs,也就是只需要包括最基本的命令、工具和程序库就可以了,比如alpine 镜像,在 5M左右。下图就是有两个不同的镜像在一个宿主机内核上实现不同的rootfs。

mark

容器、镜像父镜像:

mark

docker 命令是最常使用的 docker 客户端命令,其后面可以加不同的参数以实现响应的功能,常用的命令如下:

1、搜索镜像

在官方的docker 仓库中搜索指定名称的docker镜像,也会有很多三方个人上传的镜像。

OFFICIAL 表示个人的镜像 ,stars 表示收藏数,也可以在 https://hub.docker.com/ 中搜索

docker search centos #不带版本号默认latest 
root@z2:~# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5992                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              128                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   114                                     [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   75                                      
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      46                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   44                                      
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   11                                      

mark

2. 下载镜像

格式: docker pull 仓库服务器:端口/项目名称/镜像名称:tag(版本)号

如果不加端口 默认是: latest

docker pull centos:centos7.8.2003   带指定版本号
docker pull centos   不带指定版本号

查看镜像版本,看tag

mark

3 、查看本地镜像:
oot@z2:~# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos7.8.2003      afb6fca791e0        7 days ago          203MB
centos              8.1.1911            470671670cac        3 months ago        237MB
centos              latest              470671670cac        3 months ago        237MB
  • REPOSITORY #镜像所属的仓库名称
  • TAG #镜像版本号(标识符),默认为 latest
  • IMAGE ID #镜像唯一 ID 标示
  • CREATED #镜像创建时间
  • VIRTUAL SIZE #镜像的大小
4 、镜像导出:

可以将镜像从本地导出问为一个压缩文件,然后复制到其他服务器进行导入使用。

导出方法 1: 使用 -o

docker save centos:centos7.8.2003  -o /opt/centos1.tar.gz

导出方法 2: 使用 >

docker save centos:8.1.1911  >  /opt/centos2.tar.gz
5 、镜像导入

在另一台机器导入

方法 1: 使用 -i

root@z1:~# docker load -i centos1.tar.gz 
fb82b029bea0: Loading layer [==================================================>]  211.1MB/211.1MB
Loaded image: centos:centos7.8.2003

方法 2: 使用 <

shroot@z1:~# docker load  < centos2.tar.gz 
0683de282177: Loading layer [==================================================>]  244.9MB/244.9MB
Loaded image: centos:8.1.1911

发现tag 、imageID 没变

root@z1:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos7.8.2003      afb6fca791e0        7 days ago          203MB
centos              8.1.1911            470671670cac        3 months ago        237MB
6、删除镜像

docker rmi 镜像 ID/镜像名称

#删除指定 ID 的镜像,通过镜像启动容器的时候镜像不能被删除,除非将容器全部关闭 Remove one or more images

docker rm 容器 ID/容器名称

#删除容器 Remove one or more containers

docker rm 容器 ID/容器名 -f

#强制删除正在运行的容器

root@z1:~# docker rmi centos:centos7.8.2003 
Untagged: centos:centos7.8.2003
Deleted: sha256:afb6fca791e071c66276202f8efca5ce3d3dc4fb218bcddff1bc565d981ddd1e
Deleted: sha256:fb82b029bea0a2a3b6a62a9c1e47e57fae2a82f629b2d1a346da4fc8fb53a0b6

root@z1:~# docker rmi 470671670cac 
Untagged: centos:8.1.1911
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007


root@z1:~# docker  images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值