安装docker:略
开启docker服务
systemctl start dockersystemctl status docker

安装docker镜像时,如果不指定源或默认进入外国网站下载,可以设置镜像下载源为阿里源
mkdir -p etc/dockertee etc/docker/daemon.json <<-'EOF'{"registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]}EOFsystemctl daemon-reloadsystemctl restart docker
阿里云镜像服务器加速地址:略
设置docker自启动服务:
systemctl enable docker
查看docker版本:
docker -vdocker version

docker命令分类:
Docker环境信息 — docker [info|version]容器生命周期管理 — docker[create|exec|run|start|stop|restart|kill|rm|pause|unpause]容器操作管理 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]容器rootfs命令 — docker [commit|cp|diff]镜像仓库 — docker [login|pull|push|search]本地镜像管理 — docker [build|images|rmi|tag|save|import|load]容器资源管理 — docker [volume|network]系统日志信息 — docker [events|history|logs]
从docker命令使用出发,梳理出如下命令结构图:

作为一名研发人员,则可以将镜像理解为类(Class)。是一个应用程序。首先需要先从镜像仓库服务中拉取镜像。常见的镜像仓库服务是 Docker Hub,但是也存在其他镜像仓 库服务。拉取操作会将镜像下载到本地 Docker 主机,可以使用该镜像启动一个或者多个容器。镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统 (OS),同时还包含应用运行所必须的文件和依赖包。因为容器的设计初衷就是快速和小巧,所以镜像通常都比较小。前面多次提到镜像就像停止运行的容器(类)。实际上,可以停止某个容器的运行,并从中创建新的镜 像。在该前提下,镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(runtime)结构,如下图所示。

docker镜像常用命令:
docker pull 镜像名:镜像版本
docker pull tomcat:9.0.20-jre8-alpine
镜像名和镜像tags确定我们在仓库中拉取那个镜像,使用阿里源后默认从阿里源下载,不然就从docker hub上拉取了,很慢。
问题一:小伙伴们可能会想到,如果多个不同的镜像中,同时包含了同一个层,这样重复下载,岂不是导 致了存储空间的浪费么? 实际上,Docker 并不会这么傻会去下载重复的层,Docker 在下载之前,会去检测本地是否会有同样 ID 的层,如果本地已经存在了,就直接使用本地的就好了。
问题二:另一个问题,不同仓库中,可能也会存在镜像重名的情况发生, 这种情况咋办?从严格意义上讲,我们在使用 pull命令时,还需要在镜像前面指定仓库地址(Registry), 如果不指定,则 Docker 会使用您默认配置的仓库地址。例如上面,由于我配置的是国内 docker.io的仓库地址,我在 pull 的时候,docker 会默认为我加上 docker.io/library 的前缀。
列出本机已有的镜像
docker images

各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
如果下载的镜像比较大,下可以保存在本地,使用时用再加载。
docker save命令:
先创建一个自定义的目录:mkdir -p data cd data
然后保存:
docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar
或
docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar
常用参数:-o :输出到哪个文件
保存后加载:
docker load -i linux.tar
docker load < tomcat9.0.20.tar
常用参数:--input , -i : 指定导入的文件。--quiet , -q : 精简输出信息。
获取镜像信息:
通过 docker inspect 命令,我们可以获取镜像的详细信息,其中,包括创建者,各层的数字摘要 等。
docker inspect 返回的是 JSON格式的信息,如果您想获取其中指定的一项内容,可以通过 -f 来指 定,如获取镜像大小列出本机已有的镜像
history命令
从前面的命令中,我们了解到,一个镜像是由多个层组成的,那么,我们要如何知道各个层的具体内容 呢?通过 docker history命令,可以列出各个层的创建信息,例如:查看 tomcat:9.0.20-jre8-alpine的各层 信息
docker history tomcat:9.0.20-jre8-alpine
tag命令
标记本地镜像,将其归入某一仓库。
docker tag tomcat:9.0.20-jre8-alpine myresp/tomcat:9
rmi命令 删除镜像:
docker rmi tomcat:9.0.20-jre8-alpine
或
docker image rm tomcat:9.0.20-jre8-alpine
常用参数 -f, -force : 强制删除镜像,即便有容器引用该镜像;-no-prune : 不要删除未带标签的父镜像
注意:当一个镜像正在使用时,是需要强制删除命令才可以的。
清理镜像
类似于清理缓存:
docker image prune
常用参数 -a, --all : 删除所有没有用的镜像,而不仅仅是临时文件;
-f, --force :强制删除镜像文件,无需弹出提示确认;




