docker探索-镜像使用(四)
前言
当运行容器时,使用的镜像如果在本地中不存在,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探索-镜像使用(四)的更多相关文章
- Docker Java 镜像基础(四)
基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像 构建 centos:latest 基础镜像: # 下 ...
- docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储
前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker常用镜像
Docker,具有快捷方便的特性,机器上不需要安装软件和进行各种配置,拉取镜像,一行命令即可启动服务,不使用时,一行命令关闭容器即可,快捷方便,干净.利索.建议将本地的redis.mysql.kafk ...
- docker(三) 镜像和容器常用命令
一.镜像操作 1.搜索镜像 可以直接在Docker Hub 直接搜索镜像,当然也可以使用命令来搜索. docker search 名称 docker search tomcat 2.拉取镜像 dock ...
- docker 拷贝镜像文件
1.概述 我们制作好镜像后,有时需要将镜像复制到另一台服务器使用. 能达到以上目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的,所 ...
- SpringBoot 部署 docker 打包镜像
SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步 ...
- Docker 创建镜像、修改、上传镜像
Docker 创建镜像.修改.上传镜像 –创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 一.创建镜像 创建镜像有很多方法,用户可以从 Do ...
- Docker发布镜像至Docker Hub
第一步:Docker生成镜像 docker@default:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE metal-workbench- ...
随机推荐
- MongoDB学习笔记(3)--删除数据库
MongoDB 删除数据库 语法 MongoDB 删除数据库的语法格式如下: db.dropDatabase() 删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名. 实例 以下 ...
- ekho安装及测试(中文文字转语音)
1. 官网下载源码包 地址:http://www.eguidedog.net/ekho.php 2. 安装 xz -d ekho-7.5.tar.xz tar -xvf ekho-7.5.tar ap ...
- jQuery的prop和attr的区别,及判断复选框是否选中
jQuery的prop和attr的区别 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 参数有区别,att ...
- 《KAFKA官方文档》入门指南(转)
1.入门指南 1.1简介 Apache的Kafka™是一个分布式流平台(a distributed streaming platform).这到底意味着什么? 我们认为,一个流处理平台应该具有三个关键 ...
- django -- 插入行的不同方式
在django中行是Model的一个实例.也就是说一个Model的实例就对应着一行. 一.通过构造函数创建行: import django django.setup() from polls.mode ...
- The type org.apache.commons.cli.Options cannot be resolved. It is indirectly referenced from required .class files
在搭建好Hadoop Eclipse开发环境后,编写map-reduce,遇到如下的问题: 从字面上可以看出,工程缺少org.apache.commons.cli.Options,这个包被间接的被其他 ...
- 如何在WPF中调用Winform控件
原文地址:http://hi.baidu.com/stuoopluwqbbeod/item/32ec38403da42ee2bcf45167 功能实现主要分三步:1.添加两个引用:WindowsFor ...
- mongoose查询不到数据表中的数据的问题
在做分类管理的时候,在数据库中创建了一张category表,但使用下面这行代码始终查不到表里的数据,也没有任何报错. var Category = mongoose.model('Category', ...
- how many shards and replicas should be set for Elastic Search
https://cpratt.co/how-many-shards-should-elasticsearch-indexes-have/ https://blog.trifork.com/2014/0 ...
- std::bind技术内幕
引子 最近群里比较热闹,大家都在山寨c++11的std::bind,三位童孩分别实现了自己的bind,代码分别在这里: 木头云的实现 mr.li的实现 null的实现,null的另一个版本的实现 这些 ...