美文网首页
Docker镜像

Docker镜像

作者: TheMrBigHead | 来源:发表于2018-09-11 08:00 被阅读0次

    Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库)。

    获取镜像

    使用docker pull命令从仓库获取镜像

    $ sudo docker pull ubuntu:12.04
    Pulling repository ubuntu 
    ab8e2728644c: Pulling dependent layers 
    511136ea3c5a: Download complete 
    5f0ffaa9455e: Download complete 
    a300658979be: Download complete 
    904483ae0c30: Download complete 
    ffdaafd1ca50: Download complete 
    d047ae21eeaf: Download complete
    

    下载镜像时指定仓库注册服务器地址:

    $ sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
    

    列出本地镜像

    使用docker images命令

    $ docker images
    

    然后会显示本地镜像信息:


    image.png image.png

    repository: 表明镜像来自哪个仓库
    tag: 镜像的标记
    image id: 镜像的唯一ID
    created: 镜像创建时间
    size: 镜像的大小

    tag信息用于标记来自同一仓库的不同镜像,例如ubuntu仓库有多个镜像,通过tag信息来区分发行版本,例如10,04、12.04、12.10等。

    启动时可以指定使用tag来精确指定镜像,默认使用latest标记

    $ sudo docker run -t -i ubuntu:14.04 /bin/bash
    

    创建镜像

    (1) 从docker hub获取镜像并更新
    (2) 使用Dockerfile创建镜像
    (3) 利用本地文件系统创建镜像

    修改已有镜像
    1. 首先使用镜像来启动容器:
    $ sudo docker run -t -i training/sinatra /bin/bash 
    root@0b2616b0e5a8:/#
    

    0b2616b0e5a8是容器ID

    1. 在容器中添加应用
    root@0b2616b0e5a8:/# gem install json
    
    1. 使用docker commit来提交更新后的副本

    首先exit退出容器
    然后执行docker commit

    $ sudo docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 
    4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
    

    -m: 来指定提交的说明信息
    -a: 指定更新的用户信息
    0b2616b0e5a8: 是容器的ID
    ouruser/sinatra: 是仓库名
    v2: 是镜像的tag

    查看新创建的镜像:

    $ sudo docker imagesd
    
    使用Dockerfile来创建镜像

    使用docker build命令。

    1. 新建一个目录和一个Dockerfile
    $ mkdir sinatra
    $ cd sinatra
    $ touch Dockerfile
    
    1. 编写Dockerfile

    Dockerfile 中每一条指令都创建镜像的一层,例如:

    # This is a comment
    FROM ubuntu:14.04
    MAINTAINER Docker Newbee <newbee@docker.com> RUN apt-get -qq update
    RUN apt-get -qqy install ruby ruby-dev
    RUN gem install sinatra
    
    Dockerfile 基本的语法

    . 使用#来注释
    . FROM指令来告诉Docker使用哪个镜像作为基础镜像
    . MAINTAINER是维护者信息
    . RUN 开头的指令会在创建中运行

    1. 使用docker build命令来生成镜像
    $ sudo docker build -t="ouruser/sinatra:v2" .
    Uploading context 2.56 kB
    Uploading context
    Step 0 : FROM ubuntu:14.04
    ---> 99ec81b80c55
    Step 1 : MAINTAINER Kate Smith <ksmith@example.com>
    ---> Running in 7c5664a8a0c1
    ---> 2fa8ca4e2a13
    Removing intermediate container 7c5664a8a0c1 Step 2 : RUN apt-get -qq update
    ---> Running in b07cc3fb4256
    ---> 50d21070ec0c
    Removing intermediate container b07cc3fb4256 Step 3 : RUN apt-get -qqy install ruby ruby-dev
    ---> Running in a5b038dd127e
    Selecting previously unselected package libasan0:amd64.
    (Reading database ... 11518 files and directories currently installed.) Preparing to unpack .../libasan0_4.8.2-19ubuntu1_amd64.deb ... Setting up ruby (1:1.9.3.4) ...
    Setting up ruby1.9.1 (1.9.3.484-2ubuntu1) ...
    Processing triggers for libc-bin (2.19-0ubuntu6) ...
    ---> 2acb20f17878
    Removing intermediate container a5b038dd127e Step 4 : RUN gem install sinatra
    ---> Running in 5e9d0065c1f7 ...
    Successfully installed rack-protection-1.5.3 Successfully installed sinatra-1.4.5
    4 gems installed
    ---> 324104cde6ad
    Removing intermediate container 5e9d0065c1f7 Successfully built 324104cde6ad
    

    -t 用于添加tag
    “.” 是当前路径,也可以指定为其他路径,是Dockerfile所在的路径

    *注意一个镜像不能超过 127 层

    从本地文件系统导入
    $ sudo cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
    
    上传镜像

    使用docker push命令将镜像传到仓库中

    $ sudo docker push ouruser/sinatra
    The push refers to a repository [ouruser/sinatra] (len: 1) 
    Sending image list
    Pushing repository ouruser/sinatra (3 tags)
    

    相关文章

      网友评论

          本文标题:Docker镜像

          本文链接:https://www.haomeiwen.com/subject/bdrygftx.html