zoukankan      html  css  js  c++  java
  • Docker 镜像管理

    docker 镜像系统简介

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

      Docker 采用分层构建机制, 最底层为 bootfs , 其之为 rootfs.

    • Bootfs: 用于系统引导的文件系统, 包括 bootloader 和 kernel ,容器启动完成后会被卸载以解决内存资源.
    • Rootfs: 位于 bootfs 之上, 表现为 docker 容器的根文件系统.

        传统模式中,系统启动之时, 内核挂载 rootfs 时会首先将其挂载为 "只读" 模式, 完整性自检完成后将其重新挂载为只读模式.
    Docker 中, rootfs 有内核挂载为 "只读模式" ,而后通过 "联合挂载" 技术额外挂载一个 "可写" 层.

     

    Docker Image Layer

      位于下层的镜像称为父镜像(parent image), 最底层的称为基础镜像(base image)
    最上层为 "可写层",以下均为 "只读" 层.

    Docker Registry

      启动容器时, docker daemon 会试图从本地获取相关的镜像, 本地镜像不存在时, 其将从 Registry 中下载镜像并保存到本地.

     Docker Registry 分类:

      Registry 用于保存 docker 镜像, 包括镜像的层次结构和元数据.用户可自建 Registry, 也可以使用官方的 Docker Hub

    • Sponsor Registry: 第三方的 Registry, 供客户和 Docker 社区使用.
    • Mirror Registry: 第三方的 Registry, 只让客户使用.
    • Vendor Registry: 由 Docker 镜像的供应商提供的 Registry.
    • Private Registry: 通过设有防火墙和额外安全层的私有实体提供的 Registry.

    Docker 采用的分层文件系统

      OvrlayFs 是目前使用比较广泛的层次文件系统, 他是类似 Aufs 的一种堆叠文件系统, 与 2014 年正式合入 Linux 3.18 主线内核.

      OverlayFS文件系统,实现简单,而且性能很好,可以充分利用不同或则相同Overlay文件系统的Page Cache,具有:上下合并、同名遮盖、写时拷贝等特点。
      Docker虚拟化Overlay存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。 从Docker1.12起,Docker也支持Overlay2存储驱动,相比于Overlay来说,Overlay2在inode优化上更加高效。但Overlay2驱动只兼容Linux kernel 4.0+以上的版本。
      OverlayFS加入Linux Kernel主线后,在Linux Kernel模块中的名称从Overlayfs改名为Overlay。在真实使用中,OverlayFS代表整个文件系统,而Overlay/Overlay2表示Docker的存储驱动。

    docker镜像管理常用命令

    用户登录

      用于登录 docker hub 如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

    [root@node4 ~]# docker login -u xxxx -p xxxx
    Login Succeeded
    # 退出登录
    docker logout

    镜像搜索

    [root@node4 ~]# docker search nginx
    INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/nginx                              Official build of Nginx.                        13313     [OK]       
    docker.io   docker.io/jwilder/nginx-proxy                Automated Nginx reverse proxy for docker c...   1820                 [OK]
    docker.io   docker.io/richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable ...   778                  [OK]
    docker.io   docker.io/linuxserver/nginx                  An Nginx container, brought to you by Linu...   114                  
    docker.io   docker.io/bitnami/nginx                      Bitnami nginx Docker Image                      84                   [OK]
    docker.io   docker.io/tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rt...   75                   [OK]
    docker.io   docker.io/alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from s...   66                   [OK]
    docker.io   docker.io/jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ...   63                   

    镜像上传下载

      上传镜像需要提前对镜像打好标签,也需要提前登录

    1. 下载镜像
    [root@node4 ~]# docker image pull nginx
    
    2. 上传镜像
    [root@node4 ~]# docker push yanshicheng/test:v1.1

    镜像标签管理

    docker tag nginx yanshicheng/test:v1.1

    镜像导入导出

    1. 镜像导出
    [root@node4 ~]# docker image save yanshicheng/test:v1.1 nginx > /root/nginx_all.tar.gz
    2. 镜像导入
    [root@node4 ~]# docker image load -i nginx_all.tar.gz

    其他命令

      

    1. 查看镜像
    docker image ls
    
    2. 删除镜像
    docker image rm image_name:tag
    
    3. 镜像制作
        使用当前目录的 Dockerfile 创建镜像,标签为 nginx/nginx:v1.2
    docker image build -t nginx/nginx:v1.2
        也可以通过 -f Dockerfile 文件的位置
    docker image build -f /path/to/a/Dockerfile
    
    4. 查看镜像的创建历史
    docker image history nginx
    
    5. 从归档文件中创建镜像
    docker import  nginx.tar.gz nginx/nginx:v1.5  

    docker容器管理常用命令

    容器启动

    docker container run --name ngixn -d -p 80:80  nginx

    参数:

    • --name: 指定用户名
    • -d: 后台运行
    • -i: interactive 交互
    • -t: tty 终端.
    • --rm: 停止后删除
    • -p: 暴露端口

    容器启动停止

    停止
    docker container stop ngixn
    运行
    docker container start ngixn

    容器详细信息

    docker container inspect ngixn

    进入容器

    docker container exec -it ngixn /bin/bash

    其他命令

  • 相关阅读:
    选择语句(if else) 习题(2017/12/1)
    Java代码空格问题
    设置背景图片
    寄存器
    8086微处理器的组成和工作原理
    8086引脚
    换行的训练
    彩票 双色球 36选7
    函数
    字符串
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/13081671.html
Copyright © 2011-2022 走看看