使用docker镜像

获取镜像

我们首先获取下镜像,这个是基础,获取镜像的时候要tag标签打全,否则会下载latest镜像,可能是不稳定版本。

# docker pull ubuntu:18.04

《使用docker镜像》

查看镜像信息

使用images命令列出镜像

# docker images

《使用docker镜像》

其中的image id,如果2个镜像的id相同说明指向了同一个镜像,只是tag标签不同而已。

使用tag命令来添加镜像标签

为了方便后续工作中使用镜像,我们可以为本地镜像添加任意标签

# docker tag ubuntu:18.04 myubuntu:18.04

《使用docker镜像》

可以看到ID都是相同的,实际是同一个镜像,只是别名不同而已。相当于做了个链接。

使用inspect命令查看详细信息

这个命令可以查看镜像的详细信息,包括作者,适应架构等

# docker inspect ubuntu:18.04

《使用docker镜像》

上面返回了一个JSON格式的消息,如果只要其中的一段,可以-f参数来指定

# docker inspect -f {{“.Architecture”}} ubuntu:18.04

《使用docker镜像》

使用history命令来查看镜像历史

镜像文件是由多个层组成的,我们可以使用history命令查看各层的创建信息。

# docker history ubuntu:18.04

《使用docker镜像》

搜寻镜像

docker的命令search可以搜索官方库里的镜像

搜索官方的nginx镜像

# docker search –filter=is-official=true nginx

《使用docker镜像》

搜索收藏数量超过4的tensorflow镜像

# docker search –filter=stars=4 tensorflow

《使用docker镜像》

删除和清理镜像

rm和prune命令

使用标签删除镜像

rmi或image rm命令删除镜像

-f强制删除镜像,即使有容器依赖

-no-prune 不清理未带标签的父镜像

删除ubuntu 18.04镜像

# docker rmi myubuntu:18.04

《使用docker镜像》

当同一个镜像有多个标签时,只删除了这个镜像标签的指定标签而已,不影响原来的镜像文件。

我们这里还能看到原来的镜像

《使用docker镜像》

如果镜像只有一个标签就要小心了,会彻底删除镜像。

下面就是删除只有一个标签的镜像,彻底删除这个镜像的所有层了

《使用docker镜像》

使用镜像ID来删除镜像

使用rmi删除镜像id(也可以是能区分的部分id串前缀),会先尝试删除所有指向该镜像的标签,然后删除镜像文件本身。

当用这个镜像创建了容器时,这个镜像时无法删除的。

可以用docker ps -a 查看本机存在的所有容器。

如果要强行删除镜像使用-f参数

docker rmi -f ubuntu:18.04

然后使用ID来删除镜像

# docker rmi 93fd78260bd1

《使用docker镜像》

清理镜像

使用docker一段时间后,系统中会有一些临时的镜像文件,以及一些没用被使用的镜像,可以通过docker image prune命令来清理。

下面的命令演示自动清理临时的遗留镜像文件层,最后会提示释放的存储空间

# docker image prune -f

《使用docker镜像》

创建镜像

创建镜像的方法主要有三种,基于已有的镜像的容器来创建,基于本地模板导入,基于dockerfile创建。

基于已有容器创建

首先,启动一个镜像,并在其中进行修改操作,例如创建一个test文件,之后退出

# docker run -it ubuntu:18.04 /bin/bash

root@486c30677dc2:/# touch test

root@486c30677dc2:/# exit

《使用docker镜像》

记住容器id为486c30677dc2

这时镜像和原来的相比以机发生了改变,可以用命令来提交作为一个新的镜像。提交时可以使用ID或名称来指定容器

docker commit -m “Added a new file” -a “Docker New” 486c30677dc2 test:0.1

《使用docker镜像》

此时查看本地镜像列表,会发现新的镜像已经存在了

《使用docker镜像》

基于本地模板导入

可以直接从一个操作系统模板文件导入一个镜像,主要使用docker import命令。

我们从openvz提供的模板来创建,https://download.openvz.org/template/precreated/下载地址

我们随便下一个

# wget https://download.openvz.org/template/precreated/ubuntu-16.04-x86_64.tar.gz

然后导入

# cat ubuntu-16.04-x86_64.tar.gz | docker import – ubuntu:16.04

《使用docker镜像》

基于Dockerfile创建

这是最常见的方式,Dockerfile是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。以后会做这个实验

存出和载入镜像

save和load命令

存出镜像

可以加-o参数,导出镜像到指定的文件中

导出本地ubuntu:18.04镜像为文件ubuntu_18.04.tar

# docker save -o ubuntu-18.04.tar ubuntu:18.04

《使用docker镜像》

然后就可以把这个文件分享给别人

载入镜像

可以将导出的tar文件在导入到本地的镜像库,可以用-i参数,从指定文件中读入镜像内容。

# docker load -i ubuntu-18.04.tar

或者# docker load < ubuntu-18.04.tar

《使用docker镜像》

这将导入镜像及相关的元数据信息包括标签,导入成功后可以用docker images命令查看,与原镜像一致。

上传镜像

push命令,默认上传到Docker Hub官方仓库,需要登陆。要去官方注册下。

用户user上传本地的test:lastest镜像,可以先添加新的标签user/test:lastest,然后docker push命令上传

docker tag test:latest user/test:lastest

docker push user/test:lastest

第一次上传会提示输入用户名密码,以后就会记录到本~/。docker目录下。

 

点赞

发表评论