前言

  当运行容器时,使用的镜像如果在本地中不存在,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. Windows 10安装DockerToolBox失败处理方法

    指令运行报错: Windows 10安装DockerToolBox失败处理方法:升级Windows 10. (注意:只有Windows10 专业版才支持升级,Server和企业版无效)

  2. 【C语言】指针数组

    题目:编写UNIX程序sort的简化版本,该程序按字母顺序对由文本行组成的集合进行排序. 思路:我们引入指针数组处理这种问题.如果待排序的文本行首尾相连地存储在一个长字符数组中,那么每个文本行可通过指 ...

  3. 那些令人喷饭的代码注释:仅以此代码献给...it's realy ?

    程序源代码中的注释经常是一个卧虎藏龙的地方,有人就很喜欢写幽默搞笑的注释内容.解释代码含义的同时,也带给人轻松神经的机会,确实是很有意思的风格,来看看这一辑国外某公司产品中的注释. 注意:看的时候严禁 ...

  4. Python 文件 readlines() 方法

    概述 Python 文件 readlines() 方法用于读取整个文件(所有行)到一个列表,可以由for... in ... 结构进行遍历.列表的每一行变成列表的每一个元素. 语法 readlines ...

  5. 【转】java平台的编码问题 getByte()所用编码

    java平台的编码问题 getByte()所用编码 2013-09-30 11:31:22|  分类: java |  标签:java  编码  getbytes()  |字号 订阅     众所周知 ...

  6. js 万恶之源 是否滚动到底部?

    let scrollHandle = (el) => { // 如果已经滚到底部了 if (el.scrollHeight - el.scrollTop === el.clientHeight) ...

  7. jmeter Best Practices

    性能测试最佳实践之JMeter 16. Best Practices 16.1 Always use latest version of JMeter The performance of JMete ...

  8. Android 开发日常积累

    Android 集合 Android 开源项目分类汇总 扔物线的 HenCoder 高级 Android 教程 hencoder HenCoder:给高级 Android 工程师的进阶手册 Andro ...

  9. Atitit atiplat_reader 基于url阅读器的新特性

    Atitit atiplat_reader 基于url阅读器的新特性 1.1. feature功能特性1 1.2. note1 1.1. feature功能特性 支持url数据源,实际就是只支持一层连 ...

  10. [svc]nginx限制客户端上传附件的大小

    300 行 python 代码的轻量级 HTTPServer 实现文件上传下载 系统环境 [root@n1 conf]# cat /etc/redhat-release CentOS Linux re ...