zoukankan      html  css  js  c++  java
  • docker-镜像管理基础

    Docker镜像

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

    • 采用分层构建机制,最底层为bootfs,其之为rootfs
    1. bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源
    2. rootfs:位于bootfs之上,表现为docker容器的跟文件系统;

        ①传统模式中,系统启动时,内核挂载rootfs时会首先将其挂载为"只读"模式,完整性自检完成后将其重新挂载为读写模式

        ②docker中,rootfs由内核挂载为"只读"模式,而后通过“联合挂载”技术额外挂载一个“可写”层

    基于容器制作镜像

    一、分布构建

    1、基于busybox镜像,启动一个名为b1的容器

    [root@node1 ~]# docker run --name b1 -it busybox
    / # ls 
    bin   dev   etc   home  proc  root  sys   tmp   usr   var
    / # mkdir -p /data/html
    / # 
    / # vi /data/html/index.html
    / # 

    2、以b1容器制作镜像,此时仓库、标签都为空

    [root@node1 ~]# docker commit -p b1
    sha256:f586aa9b0f116e2c2ed625f94057923d9f2f1173f851ab7da81131bdacb8a9c0
    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    <none>                   <none>              f586aa9b0f11        24 seconds ago      1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

    3、为其打上标签

    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    <none>                   <none>              f586aa9b0f11        2 minutes ago       1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
    [root@node1 ~]# docker tag f586aa9b0f11 mustark/httpd:v0.1-1
    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            v0.1-1              f586aa9b0f11        4 minutes ago       1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

      同一镜像打多个标签

    [root@node1 ~]# docker tag mustark/httpd:v0.1-1 mustark/httpd:latest
    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            latest              f586aa9b0f11        7 minutes ago       1.2MB
    mustark/httpd            v0.1-1              f586aa9b0f11        7 minutes ago       1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

      此时删除其中一个镜像,不会产生影响。类似“硬链接”

    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
    mustark/httpd            latest              0d3bbdaa506f        About a minute ago   1.2MB
    mustark/httpd            v0.1-1              0d3bbdaa506f        About a minute ago   1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago          1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago          30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago          17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago        44.6MB
    [root@node1 ~]# 
    [root@node1 ~]# docker image rm mustark/httpd:latest
    Untagged: mustark/httpd:latest
    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            v0.1-1              0d3bbdaa506f        2 minutes ago       1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
    [root@node1 ~]# 

    二、一步构建

    修改默认CMD,打上标签、仓库

    [root@node1 ~]# docker commit -a "Mustark <1005403299@qq.com>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 mustark/httpd:v0.2
    sha256:f36ec7798fe63e4e13eb339e74cf4ecd0b15bfd126bf142b302265907daec619
    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            v0.2                f36ec7798fe6        4 seconds ago       1.2MB
    mustark/httpd            v0.1-1              0d3bbdaa506f        9 minutes ago       1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

    基于mustark/httpd:v0.2这个镜像启动一个容器

    [root@node1 ~]# docker run --name t2 mustark/httpd:v0.2
    
    
    [root@node1 ~]# docker container ls
    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
    5a94ded28cfe        mustark/httpd:v0.2   "/bin/httpd -f -h /d…"   19 seconds ago      Up 18 seconds                           t2
    fcba9b952998        busybox              "sh"                     30 minutes ago      Up 30 minutes                           b1
    125c76bcd270        redis:4-alpine       "docker-entrypoint.s…"   6 hours ago         Up 6 hours          6379/tcp            kvstor1
    fac034deb8a7        nginx:1.14-alpine    "nginx -g 'daemon of…"   6 hours ago         Up 6 hours          80/tcp              web01

    进入容器获取地址

    [root@node1 ~]# docker inspect t2

    访问172.17.0.5

    [root@node1 ~]# curl 172.17.0.5
    <h1>Busybox httpd server.</h1>

    保存制作的镜像

    一、docker hub

    创建一个Repositories

    推镜像前先登录,默认login登录为docker hub

    [root@node1 ~]# docker login -u mustark
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded

    进行推送镜像

    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            v0.2                f36ec7798fe6        18 minutes ago      1.2MB
    mustark/httpd            v0.1-1              0d3bbdaa506f        28 minutes ago      1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
    [root@node1 ~]# docker push mustark/httpd
    The push refers to repository [docker.io/mustark/httpd]
    8c5f5b80130c: Pushed 
    683f499823be: Mounted from library/busybox 
    v0.1-1: digest: sha256:289223ea342ab3c5142b122d915684da6f265b62d0b0c48ad91be4cd450daf47 size: 734
    8c5f5b80130c: Layer already exists 
    683f499823be: Layer already exists 
    v0.2: digest: sha256:cde5b6de7d22af4be7f824b9fc08e365407a2b50a41067b919f77e5e53144fa9 size: 734

    此时docker hub下也会同步有这些镜像

    二、阿里云

    创建命名空间

    创建镜像仓库

    第三方镜像仓库都会有自己的镜像管理规则,例如登录、镜像命名

    修改镜像名字

    [root@node1 ~]# docker image ls
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd            v0.2                f36ec7798fe6        18 minutes ago      1.2MB
    mustark/httpd            v0.1-1              0d3bbdaa506f        28 minutes ago      1.2MB
    busybox                  latest              3a093384ac30        3 weeks ago         1.2MB
    redis                    4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                    1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
    [root@node1 ~]# docker tag mustark/httpd:v0.2 registry.cn-shenzhen.aliyuncs.com/mustark/httpd:v0.2
    [root@node1 ~]# docker image ls
    REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd                                     v0.2                f36ec7798fe6        36 minutes ago      1.2MB
    registry.cn-shenzhen.aliyuncs.com/mustark/httpd   v0.2                f36ec7798fe6        36 minutes ago      1.2MB
    mustark/httpd                                     v0.1-1              0d3bbdaa506f        45 minutes ago      1.2MB
    busybox                                           latest              3a093384ac30        3 weeks ago         1.2MB
    redis                                             4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                                             1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel                            v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB

    登录(登录密码是Registry密码,不是阿里云账号登录的密码)

    [root@node1 ~]# docker login --username=chen_虫儿飞 registry.cn-shenzhen.aliyuncs.com
    Password: 
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded

    推送镜像到仓库

    [root@node1 ~]# docker push registry.cn-shenzhen.aliyuncs.com/mustark/httpd
    The push refers to repository [registry.cn-shenzhen.aliyuncs.com/mustark/httpd]
    8c5f5b80130c: Pushed 
    683f499823be: Pushed 
    v0.2: digest: sha256:cde5b6de7d22af4be7f824b9fc08e365407a2b50a41067b919f77e5e53144fa9 size: 734

    镜像导出

    [root@node1 ~]# docker images
    REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd                                     v0.2                f36ec7798fe6        About an hour ago   1.2MB
    registry.cn-shenzhen.aliyuncs.com/mustark/httpd   v0.2                f36ec7798fe6        About an hour ago   1.2MB
    mustark/httpd                                     v0.1-1              0d3bbdaa506f        About an hour ago   1.2MB
    busybox                                           latest              3a093384ac30        3 weeks ago         1.2MB
    redis                                             4-alpine            37abb58bfd68        4 weeks ago         30MB
    nginx                                             1.14-alpine         c5b6f731fbc0        4 weeks ago         17.7MB
    quay.io/coreos/flannel                            v0.10.0-amd64       f0fad859c909        12 months ago       44.6MB
    [root@node1 ~]# docker save -o myimages.gz mustark/httpd:v0.2 mustark/httpd:v0.1-1
    [root@node1 ~]# ls
    anaconda-ks.cfg  git_test  myimages.gz

    镜像导入,将打包好的镜像发送到另外一个节点node2

    [root@node1 ~]# scp myimages.gz root@10.0.0.62:/
    root@10.0.0.62's password: 
    myimages.gz  

    在node2节点上导入镜像

    [root@node2 ~]# docker load -i myimages.gz 
    683f499823be: Loading layer [==================================================>]  1.416MB/1.416MB
    8c5f5b80130c: Loading layer [==================================================>]  4.608kB/4.608kB
    Loaded image: mustark/httpd:v0.2
    Loaded image: mustark/httpd:v0.1-1
    [root@node2 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mustark/httpd       v0.2                f36ec7798fe6        About an hour ago   1.2MB
    mustark/httpd       v0.1-1              0d3bbdaa506f        2 hours ago         1.2MB
  • 相关阅读:
    Codeforces 1515 H. Phoenix and Bits 题解
    Codeforces 1511 F. Chainword 题解
    Codeforces 1369F. BareLee 题解
    莫队学习笔记
    圆方树学习笔记
    虚树学习笔记
    NOIP2020退役记
    CSP-S2 2021 场外
    我。
    WC2021 游记
  • 原文地址:https://www.cnblogs.com/mustark/p/10312082.html
Copyright © 2011-2022 走看看