zoukankan      html  css  js  c++  java
  • Docker学习笔记(三)——容器提交&上传镜像

    一、简要

      之前的文章已经讲过镜像的下载、运行,和容器的基本操作,接下来这篇文章是讲容器的提交和上传镜像。

      打个比方:如果你想要你的容器进行备份或者分享给其他用户使用(服务器、其他用户等),那就得将当前容器复制一份然后发给其他用户;又或者说,你当前容器在本机部署了应用系统运行,然后测试没问题了,想将该容器的发布到服务器里运行,可以节省服务器和本机环境配置不相同的时间,那么这个过程在Docker里如何体现的呢?下面有4个步骤:

      1.我们可以在本机将运行后的容器提交(commit)到本地镜像仓库;

      2.然后将本地镜像上传(push)到DockerHub;

      3.服务器/其他用户机器,在DockerHub上下载镜像(pull)

      4.服务器/其他用户机器,将下载后的镜像运行;

    一、注册&登录DockerHub用户

     官网地址:https://hub.docker.com/

    1.注册

    点击上面官网地址,自行注册。

    2.登录

    在操作系统输入命令:docker login

    [root@hejl nginx]# docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: hejianliang
    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
    You have new mail in /var/spool/mail/root
    

    按照步骤输入用户名和密码。

    二、创建DockerHub镜像地址

    在官网登录DockerHub后,来到个人首页:

    点击"Create Repository"

    输入相应信息,点击"Create"即可。

    以下是我已经创建好的镜像仓库:

    Tags and Scans:表示仓库的标签/版本;

    Docker commands:表示仓库的上传(push)命令;

    三、实操-容器提交&上传镜像

    列出本地镜像列表(如果没有镜像,自行pull镜像):

    [root@hejl nginx]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    hejianliang/centos   java_nginx          7d33387c23ca        17 hours ago        765MB
    hejianliang/centos   <none>              f7dbccc37e60        9 days ago          686MB
    hejianliang/centos   v1                  4173d0975bbe        2 weeks ago         774MB
    centos               latest              0d120b6ccaa8        3 months ago        215MB

    列出本地容器列表(如没有容器,自行run镜像):

    [root@hejl nginx]# docker ps -a
    CONTAINER ID        IMAGE                           COMMAND             CREATED             STATUS                       PORTS               NAMES
    26dc75058b6e        hejianliang/centos:java_nginx   "/sbin/init"        17 hours ago        Exited (137) 4 minutes ago                       centos_java_nginx
    a8bde2ae13aa        hejianliang/centos:v1           "/bin/bash"         6 days ago          Exited (0) 6 days ago                            172.18.0.3
    

    接下来我要将容器 id为 "26dc75058b6e" 的容器,提交到镜像仓库,提交语法:

    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    OPTIONS说明:
    
    -a :提交的镜像作者;
    
    -c :使用Dockerfile指令来创建镜像;
    
    -m :提交时的说明文字;
    
    -p :在commit时,将容器暂停。
    

    提交命令:

    [root@hejl nginx]# docker commit -a "hejianliang" -m "整合Nginx、Tomcat、Keepalived服务" -p 26dc75058b6e hejianliang/centos:java_nginx_v2
    sha256:9549e4d937c82ab46193b3faabd3bf3f4cb6a46acd54f52199b8d2c0edc66842
    

    提交成功,docker images 查看本地镜像仓库:

    [root@hejl nginx]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED              SIZE
    hejianliang/centos   java_nginx_v2       9549e4d937c8        About a minute ago   801MB
    hejianliang/centos   java_nginx          7d33387c23ca        18 hours ago         765MB
    hejianliang/centos   <none>              f7dbccc37e60        9 days ago           686MB
    hejianliang/centos   v1                  4173d0975bbe        2 weeks ago          774MB
    centos               latest              0d120b6ccaa8        3 months ago         215MB
    

    镜像"hejianliang/centos:java_nginx_v2" 已提交成功了,容量大小是801MB,现在我们进行第二步上传镜像,上传语法:

    docker push [OPTIONS] NAME[:TAG]
    OPTIONS说明: --disable-content-trust :忽略镜像的校验,默认开启

    上传镜像命令:

    [root@hejl nginx]# docker push hejianliang/centos:java_nginx_v2
    The push refers to repository [docker.io/hejianliang/centos]
    3434a2f802c2: Pushed 
    076ecd3c326f: Layer already exists 
    291f6e44771a: Layer already exists 
    java_nginx_v2: digest: sha256:2f846fabd91e5b78023ead48b7bd3642ba2cdad8446d97f88ce02b0d3908b51d size: 954
    

    上传镜像成功。

    四、实操-镜像下载

    刚才已经把镜像上传到官网上了,现在我们可以切换到另外一台机器/本机(注:机器上需安装Docker并启动),将上传的镜像下载到机器上。

    我们可以从docker上查询刚才上传的镜像,命令:docker search hejianliang

    [root@localhost ~]# docker search hejianliang
    NAME                 DESCRIPTION         STARS               OFFICIAL            AUTOMATED
    hejianliang/centos   centos仓库            1                                       
    hejianliang/ubuntu                       0 
    

    仓库地址已搜索出来,接下来下载镜像:

    [root@localhost ~]# docker pull hejianliang/centos:java_nginx_v2
    java_nginx_v2: Pulling from hejianliang/centos
    3c72a8ed6814: Pull complete 
    0f414fdba906: Pull complete 
    a8a9d4720f65: Pull complete 
    Digest: sha256:2f846fabd91e5b78023ead48b7bd3642ba2cdad8446d97f88ce02b0d3908b51d
    Status: Downloaded newer image for hejianliang/centos:java_nginx_v2
    docker.io/hejianliang/centos:java_nginx_v2
    [root@localhost ~]# docker images
    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
    hejianliang/centos   java_nginx_v2       9549e4d937c8        About an hour ago   801MB
    test/ubuntu          v1                  ed488aac8ae1        3 weeks ago         72.9MB
    <none>               <none>              9076a9ac1911        3 weeks ago         0B
    <none>               <none>              5a5fa4f0a2f9        3 weeks ago         0B
    <none>               <none>              03be7b389780        3 weeks ago         0B
    <none>               <none>              b74f768c6588        3 weeks ago         72.9MB
    rethinkdb            latest              fc02d4327225        4 weeks ago         131MB
    hejianliang/ubuntu   15.10               9140108b62dc        6 weeks ago         72.9MB
    ubuntu               latest              9140108b62dc        6 weeks ago         72.9MB
    hello-world          latest              bf756fb1ae65        10 months ago       13.3kB
    ubuntu               15.10               9b9cb95443b5        4 years ago         137MB
    training/webapp      latest              6fae60ef3446        5 years ago         349MB
    

    镜像下载后,我们通过查看镜像命令,我们的 "hejianliang/centos" 镜像也在本地仓库里了。

    下载过后的镜像,和平时一样运行,这里就不一一操作了,可以回顾作者之前的文章。

    五、总结

      个人认为Docker这种容器管理方式很便捷,就类似GitHub、MavenRepository等,使用起来很易上手,就是要记的命令多些;以往我没使用Docker之前,是用虚拟机进行系统部署测试,没问题再将系统部署上云服务器。但体验过两种方式过后(Docker和虚拟机),感觉Docker的效率更高,而且操作系统的环境也不用担心不一致的问题,还有虚拟机占用的空间及内存比较多,处理效率也没Docker高。这就是我使用这两种虚拟容器的感受。

  • 相关阅读:
    python--多线程&多进程
    python--MyRequest请求模块封装
    python--面向对象
    python--异常处理
    python--sys.argv 运行python文件时获取参数
    python--搭建测试环境
    mac常用快捷键
    九、django通过forms对页面数据校验
    八、django后台管理
    七、django页面请求处理
  • 原文地址:https://www.cnblogs.com/hejianliang/p/13962154.html
Copyright © 2011-2022 走看看