暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker镜像

Whoooops 2021-08-04
877

安装docker:略

开启docker服务 

    systemctl start docker
    systemctl status docker

    安装docker镜像时,如果不指定源或默认进入外国网站下载,可以设置镜像下载源为阿里源

      mkdir -p etc/docker
      tee etc/docker/daemon.json <<-'EOF'
      {
      "registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]
      }
      EOF
      systemctl daemon-reload
      systemctl restart docker

      阿里云镜像服务器加速地址:略

      设置docker自启动服务:

        systemctl enable docker

        查看docker版本:

          docker -v
          docker 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 :强制删除镜像文件,无需弹出提示确认;

            文章转载自Whoooops,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论