跳转至

03-Docker镜像管理

搜索Docker镜像

docker官方hub仓库地址:https://hub.docker.com/

[root@linux-bkce-node21 ~]# docker search centos        #搜索所有centos的docker镜像
INDEX          NAME(名称) DESCRIPTION(描述) STARS(下载次数) OFFICIAL(官方)     AUTOMATED(自动化)
docker.io         docker.io/centos The official build of CentOS. 1781           [OK]
docker.io     docker.io/jdeathe/centos-ssh CentOS-6 6.7 x86_64 /   14        [OK]
[root@linux-bkce-node21 ~]# docker pull centos:7.9.2009

如果想搜索其他版本可以使用如下命令

docker search centos:7.6.1810
docker pull centos:7.6.1810

docker pull nginx:1.20.2
docker pull nginx:1.19.9

获取Docker镜像

可以使用docker pull命令来从仓库获取所需要的镜像。下面的例子将从Docker Hub仓库下载一个Centos操作系统的镜像。

[root@linux-bkce-node21 ~]# docker pull centos                #获取centos镜像
[root@linux-bkce-node21 ~]# docker pull alpine                #获取最小的镜像文件
[root@linux-bkce-node21 ~]# docker pull nginx                 #获取nginx镜像

查看docker镜像

镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。

TAG信息来区分不同发行版本,如果不指定具体标记,默认使用latest标记信息。

[root@linux-bkce-node21 ~]# docker images
#查看docker镜像
REPOSITORY(来自那个仓库) TAG(标签) IMAGE ID(唯一ID) CREATED(创建时间) VIRTUAL SIZE(大小)
docker.io/centos         latest 60e65a8e4030     5 days ago     196.6 MB
docker.io/nginx         latest 813e3731b203     13 days ago     133.8 MB

导出Docker镜像

如果要导出镜像到本地文件,可以使用docker save命令。

[root@linux-bkce-node21 ~]# docker save centos > /opt/centos.tar.gz  #导出docker镜像至本地
[root@linux-bkce-node21 ~]# ll /opt/
-rw-r–r–. 1 root root 204205056 12月 30 09:53 centos.tar.gz

批量导出docker镜像的脚本:

vim docker_image_save.sh
#!/bin/bash

echo 3 > /proc/sys/vm/drop_caches &>/dev/null
output_dir=/opt/dockerimage
mkdir -p $output_dir

docker_images_list=$(docker images|grep -v REPOSITORY|awk '{print $1}'|xargs)
for n in $docker_images_list
do
    echo 3 > /proc/sys/vm/drop_caches &>/dev/null
    docker_images_link=$n
    docker_images_name=$(echo "$n" |awk -F "/" '{print $NF}'|xargs)
    docker_images_version=$(docker images|grep -v REPOSITORY|grep "^${n} "|awk '{print $2}'|xargs)
    #echo $docker_images_link $docker_images_name $docker_images_version

    echo $docker_images_link $docker_images_name $docker_images_version
    docker save ${docker_images_link}:${docker_images_version} > ${output_dir}/${docker_images_name}-${docker_images_version}.tar.gz
done

ls -l $output_dir
echo 3 > /proc/sys/vm/drop_caches &>/dev/null
cd /opt/ ; tar zcf dockerimage.tar.gz dockerimage
ls -l /opt/dockerimage.tar.gz

删除Docker镜像

如果要移除本地的镜像,可以使用docker rmi命令(在删除镜像之前先用docker rm删除依赖于这个镜像的所有容器)。注意docker rm 命令是移除容器。

[root@linux-bkce-node21 ~]# docker rmi centos:7.9.2009
#删除docker镜像(可以指定镜像名称+tags 也可以指定镜像ID)

导入Docker镜像

可以使用docker load从本地文件中导入到本地docker镜像库

[root@linux-bkce-node21 ~]# docker load < /opt/centos.tar.gz 

查看镜像导入情况

[root@linux-bkce-node21 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
docker.io/centos latest 60e65a8e4030 5 days ago 196.6 MB



vim docker_image_load.sh

#!/bib/bash

echo 3 > /proc/sys/vm/drop_caches &>/dev/null

if [ ! -d /opt/dockerimage  ];then
    cd /opt/ ; tar xf dockerimage.tar.gz
fi

input_dir=/opt/dockerimage

docker_images_list=$(ls ${input_dir}|xargs)
for n in $docker_images_list
do
    echo 3 > /proc/sys/vm/drop_caches &>/dev/null
    docker_images_name=$n

    echo $docker_images_name
    docker load  < ${input_dir}/$docker_images_name
done

echo 3 > /proc/sys/vm/drop_caches &>/dev/null
docker images