Docker实战(一)之使用Docker镜像
镜像是Docker三大核心概念中最为重要的,自Docker诞生之日起“镜像”就是相关社区最为热门的关键字。
Docker运行容器前需要本地存在对应的镜像,如果镜像没有保存至本地,Docker会尝试先从默认镜像仓库中下载,用户也可以通过配置,使用自定义的镜像仓库。
1.获取镜像
docker pull ubuntu 获取ubuntu最新镜像
如果要获得指定的ubuntu镜像可以写成这样 docker pull ubuntu:14.04
注意:
一般来说,镜像的latest标签意味着该镜像的内容会跟踪最新的非稳定版本而发布,内容是不稳定的。当前Ubuntu最新的发行版本为16.04,latest镜像实际上就是16.04镜像,用户可以下载ubuntu:16.04镜像并查看,两者的数字摘要值是否一致的。从稳定性上考虑,不要在生产环境中忽略镜像标签信息或使用默认的latest标记的镜像。
2.查看镜像信息
(1)使用image命令查看镜像信息
docker images 该命令可以查看docker容器所有的镜像
在列出的信息中,可以看到以下几个字段的信息:
来自哪个仓库,比如ubuntu仓库用来保存ubuntu的镜像;
镜像的标签信息,比如latest标注不同的版本信息.标签只是标记,并不能标识镜像内容;
镜像的ID,如nginx的ID为cd5239a0906a,当两个镜像的ID相同时,说明它们目前实际上指向同一个镜像;
创建时间,说明镜像最后的更新时间;
镜像大小,优秀的镜像往往体积都比较小;
其中镜像ID非常重要,它唯一标识镜像,在使用镜像ID的时候,一般可以使用该ID的前很多个字符组成的可区分串来代替完整的ID。'
(2)使用tag命令添加镜像标签
为了方便在后续工作中使用特定的镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签。例如添加一个新的myubuntu:latest镜像标签:
docker tag ubuntu:latest myubuntu:latest
docker images
(3).使用inspect命令查看详细信息
使用docker inspect命令可以获取该镜像的详细信息,包括制作者,适应架构,各层数字摘要等:
docker inspect ubuntu:14.04
返回的是一个JSON格式的消息,如果我们只要其中一项内容时,可以使用参数-f来指定,例如,获取镜像的Os:
docker inspect -f {{.Os}}
(4).使用history命令查看镜像历史
例如,查看ubuntu:14.04镜像的创建过程,可以使用如下命令:
docker history ubuntu:14.04
注意过长的命令被自动截断了,可以使用前面提到的--no-trunc选项来输出完整命令
3.搜寻镜像
使用docker search命令可以搜索远端仓库中共享的镜像,默认搜索官方仓库中的镜像。用法为docker search 镜像名
例如搜寻tomcat的镜像
可以看到返回了很多包含关键字的镜像,其中包括镜像名字,描述,星级(表示该镜像受欢迎程度)、是否官方创建、是否自动创建等。
默认的输出结果将按照星级评价进行排序。
4.删除镜像
(1)使用标签删除镜像
例如我要删除之前定义的mybuntu:latest镜像,可以使用下面的命令:
docker rmi myubuntu:latest
当镜像只剩下一个标签的时候就要特别小心,此时再使用docker rmi命令会彻底删除镜像。
例如删除的标签为ubuntu:14.04的镜像,由于该镜像没有额外的标签指向它,执行docker rmi命令,可以看出它会删除这个镜像文件的所有层:
(2)使用id删除镜像
注意:当有该镜像创建的容器存在时,镜像文件默认是无法被删除的,例如,先利用ubuntu:14.04镜像创建一个简单的容器并输出一句话
示例如下:
docker ps -a 命令可以看到本机上存在的所有容器:
可以看出,后台存在一个退出状态的容器,是刚基于ubuntu:14.04镜像创建的。
试图删除该镜像,Docker会提示有容器正在运行,无法删除:
如果想要强行删除镜像,可以使用-f参数。
注意:通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。正确的做法是先删除依赖该镜像的所有容器,再来删除镜像。
比如我要删除nginx
我通过docker ps -a命令查看所有容器
找到ID
执行如下命令即可删除依赖容器最后再删除nginx镜像
docker rm e69099851e18
删除容器成功后再执行如下删除镜像命令
5.创建镜像
创建镜像的方法主要有三种:基于已有的镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
(1)基于容器创建
该方法主要是使用docker commit命令。命令格式为docker commit 主要选项有:
-a, --author--"":作者信息
-c, --change--[]:提交的时候执行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABLE|ONBUILD|USER|VOLUME|WORKDIR等;
-m, --message="" 提交的信息
-p, --pause=true:提交时暂停容器运行。
下面演示如何使用命令创建一个新镜像。首先启动一个镜像,并在其中进行修改操作,例如创建一个test文件,之后退出:
docker run -it ubuntu:14.04 /bin/bash
touch test
exit
退出后执行docker ps -a命令获得容器ID
记住这个ID:471e0c7a7176
此时该容器跟原ubuntu:14.04镜像相比,已经发送了改变,可以使用docker commit 命令来提交一个新的镜像。提交时可以使用ID或名称来指定容器。
docker commit -m "Added a new file" -a "Docker Newbee" 471e0c7a7176 test:0.1
顺利的话,会返回新创建的镜像ID信息,例如7273577e3795e15cf04d715c29283acaf8d61de8be0409ec2eb03f2d776b883b
此时查看本地镜像列表,会发现新创建的镜像已经存在了。
(2)基于本地模板导入
用户可以直接从一个操作系统模板文件导入一个镜像,主要使用docker import 命令。
模板网址:https://openvz.org/Download/template/precreated
wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz 远程下载模板
下载成功后执行该命令即可实现基于本地模板导入镜像:
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
查看镜像:
docker images
6.存入镜像和载入镜像
用户可以使用docker save和docker load命令来存入和载入镜像。
1.存出镜像
如果要导出镜像到本地文件,可以使用docker save命令。例如,导出本地的ubuntu:14.04镜像为文件ubuntu_14.04.tar,如下所示:
docker save -o ubuntu_14.04.tar ubuntu:14.04
2.载入镜像
可以使用docker load将导出的tar文件再导入到本地镜像库,例如从文件ubuntu_14.04.tar导入镜像到本地镜像列表,如下所示:
docker load --input ubuntu_14.04.tar 或docker load < ubuntu_14.04.tar
这将导入镜像及其相关的元数据信息(包括标签等)。导入成功后,可以使用docker images命令进行查看。
7.上传镜像
可以使用docker push命令进行镜像上传,默认上传到Docker Hub官方仓库(需要登录)。命令格式为:
docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
用户在Docker Hub网站注册后可以上传自制的镜像。例如用户user上传本地的test:latest镜像,可以先添加user/test:latest,然后用docker push命令上传镜像:
docker tag test:latest user/test:latest
第一次上传时,会提示输入登录信息或进行注册。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker实战(二)之操作Docker容器
容器是Docker的另外一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层。如果认为虚拟机是模拟运行的一整套操作系统系统(包括内核,应用运行态环境和其他系统环境)和跑在上面的应用,那么Docker容器就是独立的一个或一组应用,以及它们所必需的运行环境。 1.创建容器 (1)新建容器 docker create -it ubuntu:latest 通过docker ps -a命令可以查看所有容器 使用docker create命令新建的容器处于停止状态,可以使用docker start命令启动它。 (2)启动容器 docker start CONTAINER ID(容器ID) docker ps 命令可以查看一个运行中的容器 (3)新建并启动容器 除了创建容器后通过start命令来启动,也可以直接新建并启动所有容器。所需要的命令主要为docker run,等价于先执行docker create命令,再执行docker start命令。 下面示例: 这跟在本地直接执行/bin/echo 'hello world'几乎感...
- 下一篇
Docker实战(三)之访问Docker仓库
仓库是集中存放镜像的地方,分为公共仓库和私有仓库。一个容易与之混肴的概念是注册服务器。实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,可将仓库看做一个具体的项目或目录。例如对于仓库地址private-docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。 1.Docker Hub公共镜像市场 目前Docker官方维护了一个公共镜像仓库https://hub.docker.com,其中已经包括超过上万的镜像。大部分镜像需求,都可以通过Docker Hub中直接下载镜像来实现。 (1)登录 可以通过命令行执行docker login命令输入用户名和密码、邮箱等来完成注册和登录。注册成功后,本地用户目录.dockerfile中将保存用户的认证信息。 登录成功的用户可以上传个人制造的镜像。 (2)基本操作 用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull 命令来将它下载到本地。 例如: 搜寻centos的镜像 下...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群