Docker简明教程03: 镜像管理

原创
2016/08/15 11:22
阅读数 84

Listing images on the host 列举主机上的镜像

查看当前所有镜像

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               1d073211c498        3 days ago          187.9 MB
busybox             latest              2c5ac3f849df        5 days ago          1.113 MB
training/webapp     latest              54bb4e8718e8        5 months ago        348.7 MB
$ docker run -t -i ubuntu:14.04 /bin/bash
$ docker run -t -i ubuntu:12.04 /bin/bash

使用不同TAG的镜像,启动不同容器 如果不使用TAG默认使用latest 如 ubuntu:latest

Getting a new image 从远程拉取新的镜像

$ docker pull centos
Using default tag: latest
Pulling repository centos
b7de3133ff98: Pulling dependent layers
5cc9e91966f7: Pulling fs layer
511136ea3c5a: Download complete
ef52fb1fe610: Download complete
. . .

Status: Downloaded newer image for centos

# 交互式启动容器
$ docker run -t -i centos /bin/bash

bash-4.1#

Finding images 查看镜像

$ docker search sinatra
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
training/sinatra                       Sinatra training image                          0                    [OK]
marceldegraaf/sinatra                  Sinatra test app                                0
mattwarren/docker-sinatra-demo                                                         0                    [OK]
luisbebop/docker-sinatra-hello-world                                                   0                    [OK]
bmorearty/handson-sinatra              handson-ruby + Sinatra for Hands on with D...   0
subwiz/sinatra                                                                         0
bmorearty/sinatra                                                                      0
. . .

Pulling our image 从远程摘取镜像

$ docker pull training/sinatra

$ docker run -t -i training/sinatra /bin/bash

root@a8cb6ce02d85:/#

Creating our own images 创建镜像

  1. 从镜像启动一个容器修改容器,提交为另一个镜像

    $ docker run -t -i training/sinatra /bin/bash
    

    容器内命令

    root@0b2616b0e5a8:/#
    
    root@0b2616b0e5a8:/# apt-get install -y ruby2.0-dev
    
    root@0b2616b0e5a8:/# gem2.0 install json
    
    $ docker commit -m "Added json gem" -a "Kate Smith" \
    0b2616b0e5a8 ouruser/sinatra:v2
    

    查看结果

    
    $ docker images
    
    REPOSITORY          TAG     IMAGE ID       CREATED       SIZE
    training/sinatra    latest  5bc342fa0b91   10 hours ago  446.7 MB
    ouruser/sinatra     v2      3c59e02ddd1a   10 hours ago  446.7 MB
    ouruser/sinatra     latest  5db5f8471261   10 hours ago  446.7 MB
    
    
    $ docker run -t -i ouruser/sinatra:v2 /bin/bash
    
    root@78e82f680994:/#
    
    
  2. Dockerfile构建镜像

    $ mkdir sinatra
    
    $ cd sinatra
    
    $ touch Dockerfile
    

    Dockerfile 文件内容

    # This is a comment
    FROM ubuntu:14.04
    MAINTAINER Kate Smith <ksmith@example.com>
    RUN apt-get update && apt-get install -y ruby ruby-dev
    RUN gem install sinatra
    

Dockerfile 命令格式

INSTRUCTION statement
# 注释

从Dockerfile构建镜像

$ docker build -t ouruser/sinatra:v2 .
$ docker run -t -i ouruser/sinatra:v2 /bin/bash

root@8196968dac35:/#

Setting tags on an image 添加TAG

$ docker tag 5db5f8471261 ouruser/sinatra:devel

$ docker images ouruser/sinatra

REPOSITORY          TAG     IMAGE ID      CREATED        SIZE
ouruser/sinatra     latest  5db5f8471261  11 hours ago   446.7 MB
ouruser/sinatra     devel   5db5f8471261  11 hours ago   446.7 MB
ouruser/sinatra     v2      5db5f8471261  11 hours ago   446.7 MB

Image Digests 镜像摘要

$ docker images --digests | head

REPOSITORY        TAG      DIGEST                                                                     IMAGE ID      CREATED       SIZE
ouruser/sinatra   latest   sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf    5db5f8471261  11 hours ago  446.7 MB

# 2.0 registry
$ docker pull ouruser/sinatra@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf

Push an image to Docker Hub 推送到远程库

$ docker push ouruser/sinatra

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

后续介绍推送到私有仓库

Remove an image from the host 删除本地镜像

需要没基于此镜像的容器才能删除 也可以加 -f 参数连同容器一起删除

$ docker rmi training/sinatra

Untagged: training/sinatra:latest
Deleted: 5bc342fa0b91cabf65246837015197eecfa24b2213ed6a51a8974ae250fedd8d
Deleted: ed0fffdcdae5eb2c3a55549857a8be7fc8bc4241fb19ad714364cbfd7a56b22f
Deleted: 5c58979d73ae448df5af1d8142436d81116187a7633082650549c52c3a2418f0
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部