前言

  当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

1、查看本地主机上的镜像列表

[root@jacky jacky]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5ae9a10a7f42 hours ago 209.1 MB
jacky/ubuntu v2 9634808b727b hours ago 137.2 MB
docker.io/ubuntu 14.04 3aa18c7568fc days ago MB
docker.io/ubuntu 15.10 9b9cb95443b5 months ago 137.2 MB

各个选项说明:

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

[root@jacky jacky]# docker run -t -i ubuntu:15.10 /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
root@4ec45ca29362:/#

如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

[root@jacky jacky]# docker run -t -i ubuntu:14.04 /bin/bash
WARNING: IPv4 forwarding is disabled. Networking will not work.
root@95227f4f6e29:/#

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

2、下载一个新镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

[root@jacky jacky]# docker pull centos:7.2.
Trying to pull repository docker.io/library/centos ...
7.2.: Pulling from docker.io/library/centos
f2d1d709a1da: Pull complete
Digest: sha256:7c47810fd05ba380bd607a1ece3b4ad7e67f5906b1b981291987918cb22f6d4d
[root@jacky jacky]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5ae9a10a7f42 hours ago 209.1 MB
jacky/ubuntu v2 9634808b727b hours ago 137.2 MB
docker.io/ubuntu 14.04 3aa18c7568fc days ago MB
docker.io/centos 7.2. 0a2bad7da9b5 days ago 194.6 MB
docker.io/ubuntu 15.10 9b9cb95443b5 months ago 137.2 MB

3、搜索镜像

使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像

[root@jacky jacky]# docker search httpd
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/httpd The Apache HTTP Server Project [OK]
docker.io docker.io/hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with ...
docker.io docker.io/centos/httpd [OK]
docker.io docker.io/armhf/httpd The Apache HTTP Server Project
docker.io docker.io/centos/httpd--centos7 Platform for running Apache httpd 2.4 or b...
docker.io docker.io/macadmins/netboot-httpd use in combination with bruienne/bsdpy [OK]
docker.io docker.io/lolhens/httpd Apache httpd Server [OK]
docker.io docker.io/salim1983hoop/httpd24 Dockerfile running apache config [OK]
docker.io docker.io/antoineco/httpd-mod_cluster Apache HTTP Server with JBoss mod_cluster [OK]
docker.io docker.io/lead4good/httpd-fpm httpd server which connects via fcgi proxy... [OK]
docker.io docker.io/rgielen/httpd-image-php5 Docker image for Apache httpd with PHP b... [OK]
docker.io docker.io/rgielen/httpd-image-simple Docker image for simple Apache httpd based... [OK]
docker.io docker.io/antoineco/httpd Extra OS variants for the official HTTPd i... [OK]
docker.io docker.io/dockerpinata/httpd
docker.io docker.io/efrecon/httpd A micro-sized httpd. Start serving files i... [OK]
docker.io docker.io/jbpt/httpd [OK]
docker.io docker.io/manageiq/httpd Container with httpd, built on CentOS for ... [OK]
docker.io docker.io/manasip/httpd
docker.io docker.io/openbucks/httpd
docker.io docker.io/ppc64le/httpd The Apache HTTP Server Project
docker.io docker.io/publici/httpd httpd:latest [OK]
docker.io docker.io/sbutler/pie-httpd PIE httpd server
docker.io docker.io/tplatform/aws-linux-httpd24-php70 aws-linux-httpd24-php70 [OK]
docker.io docker.io/trollin/httpd
docker.io docker.io/visualops/httpd

4、创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1.从已经创建的容器中更新镜像,并且提交这个镜像
  • 2.使用 Dockerfile 指令来创建一个新的镜像

5、通过更新的方式创建镜像

[root@jacky jacky]# docker run --dns 8.8.8.8 --dns 8.8.4.4 -it -P centos:7.2. /bin/bash

运行的容器内使用 yum install vim  命令进行更新。

在完成操作之后,输入 exit命令来退出这个容器。

[root@jacky jacky]# docker commit -m="jacky update" -a="jacky" 488f3af35f5e jacky/centos:v3
sha256:67a8ec824059fe71bc162984e9e8ed65af8d03511c92f5c8f69c4a0783210d99
[root@jacky jacky]#

各个选项说明:

  • -m:提交的描述信息

  • -a:指定镜像作者

  • 488f3af35f5e:容器ID
  • jacky/centos:v3:指定要创建的目标镜像名

使用 docker images 命令来查看我们的新镜像jacky/centos:v3

6、通过Dockerfile文件的方式创建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像

[root@jacky ubantu]# vim Dockerfile

Dockerfile文件内容如下:

FROM ubuntu:14.04
MAINTAINER dormancypress "1073740572@qq.com"
RUN apt-get update
EXPOSE
EXPOSE
CMD /usr/sbin/sshd -D

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

[root@jacky ubantu]# docker build -t jacky/ubuntu:14.05 .
Sending build context to Docker daemon 2.048 kB
Step : FROM ubuntu:14.04
---> 3aa18c7568fc
Step : MAINTAINER dormancypress "1073740572@qq.com"
---> Using cache
---> 7cc1c96b8616
Step : RUN apt-get update
---> Using cache
---> 5ae9a10a7f42
Step : EXPOSE
---> Running in c9ffc6389c8a
---> a82207354da4
Removing intermediate container c9ffc6389c8a
Step : EXPOSE
---> Running in 1d45086f7859
---> c2cfb89e4d3e
Removing intermediate container 1d45086f7859
Step : CMD /usr/sbin/sshd -D
---> Running in b81b738a142b
---> ff41e3aca80b
Removing intermediate container b81b738a142b
Successfully built ff41e3aca80b

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录

使用docker images 查看创建的镜像已经在列表中存在,然后根据镜像创建容器并启动

7、设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

[root@jacky ubantu]# docker tag ff41e3aca80b jacky/ubuntu:dev

各选项说明

  • ff41e3aca80b  镜像Id
  • jacky/ubuntu:dev REPOSITORY:TAG

查询镜像,如下:

docker探索-镜像使用(四)的更多相关文章

  1. Docker Java 镜像基础(四)

    基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像 构建 centos:latest 基础镜像: # 下 ...

  2. docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储

    前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...

  3. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  4. Docker常用镜像

    Docker,具有快捷方便的特性,机器上不需要安装软件和进行各种配置,拉取镜像,一行命令即可启动服务,不使用时,一行命令关闭容器即可,快捷方便,干净.利索.建议将本地的redis.mysql.kafk ...

  5. docker(三) 镜像和容器常用命令

    一.镜像操作 1.搜索镜像 可以直接在Docker Hub 直接搜索镜像,当然也可以使用命令来搜索. docker search 名称 docker search tomcat 2.拉取镜像 dock ...

  6. docker 拷贝镜像文件

    1.概述 我们制作好镜像后,有时需要将镜像复制到另一台服务器使用. 能达到以上目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的,所 ...

  7. SpringBoot 部署 docker 打包镜像

    SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步 ...

  8. Docker 创建镜像、修改、上传镜像

    Docker 创建镜像.修改.上传镜像 –创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 一.创建镜像 创建镜像有很多方法,用户可以从 Do ...

  9. Docker发布镜像至Docker Hub

    第一步:Docker生成镜像 docker@default:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE metal-workbench- ...

随机推荐

  1. Xcode command line tools

    1.Xcode command line tools 安装 如果你不是一名 iOS 或 OS X 开发者,可以跳过安装 XCode 的过程,直接安装 Xcode command line tools. ...

  2. GIF Brewery for Mac(录制 Gif 动图工具)安装

    1.软件简介    GIF Brewery 一款用于录制 Gif 动图等的工具. 2.资源列表 链接 提取密码 系统要求 软件语言 GIF Brewery for Mac v3.9.5 ltmf ma ...

  3. solr开发从查询结果集中获取对象数据

    solrJ从查询结果集中获取对象数据. 方案一:自定义转换方式 /** * * SolrDocument与实体类转换 [测试通过] * * @author pudongping * * @param ...

  4. 【struts2】Struts2的异常处理

    在Action中execute方法声明为:public String execute() throws Exception,这样,Action可以抛出任何Exception. 1)自己实现异常处理 我 ...

  5. GGSN与SGSN简介

    GPRS核心网是GPRS(general packet radio service)系统的核心部分,GPRS的作用在于传输IP包,广泛应用于2G的GSM和3G的WCDMA网络. 1.GPRS核心网基本 ...

  6. Fiddler基础用法-抓取浏览器数据包

    Fiddler基础知识 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是在 ...

  7. FreeSWITCH在会议室中持续播放音频文件

    最近遇到一个客户需求,希望在会议室建立起来后,自动播放一段指定的声音. 已知会议室命令,假设建立起一个会议室号码3000,很容易实现以下功能: 一.播放一个声音文件一次 conference 3000 ...

  8. DVWA默认用户名密码

    有些东西不好找啊,自己动手丰衣足食-- DVWA默认的用户有5个,用户名密码如下(一个足以): admin/password gordonb/abc123 1337/charley pablo/let ...

  9. Java – How to add days to current date

    1. Calendar.add Example to add 1 year, 1 month, 1 day, 1 hour, 1 minute and 1 second to the current ...

  10. 使用cronolog自动分割apache的日志。

    为了方便分析网站的日志,需要将apache的日志按周来分割,网上搜索了下,cronolog可以完成这个功能,实际操作了下,操作过程中参考了这篇文章(http://www.lampbo.org/linu ...