详解Docker学习之用commit命令创建镜像

构建镜像的两种方法:

  • 使用docker commit 命令
  • 使用docker build命令和Dockerfile文件

Dockerfile更抢到、灵活,推荐使用。

一般来说不是真的“创建”新镜像,而是基于一个已有的基础镜像,比如Ubuntu、Fedora等,构建新的镜像而已。

用commit创建镜像

创建Docker账号

共享和发布镜像时构建镜像中重要的环节,可以将镜像推送到Docker Hub或资金的私有Registry中。首先到https://hub.docker.com/account/signup/ 创建账号。

邮件激活后,可以测试登录:

$ sudo docker login

这条命令会完成登录,并将认证信息报错起来供后面使用。个人认证信息将报错到$HOME/ .dockercfg文件中.

用 commit 命令创建镜像

可以想象是往版本控制系统里提交变更:首先创建一个容器,并在容器里做修改,就行修改代码一样,最后在讲修改提交为一个新镜像。

创建一个新容器命令:

$ sudo docker run -i -t ubuntu /bin/bash

我用之前创建好的aoct容器:

$ sudo docker start aoct
$ sudo docker attach aoct

安装Apache:

root@614122c0aabb:/# apt-get -yqq update
...
root@614122c0aabb:/# apt-get -y install apache2
...

想把这个容器作为一个Web服务器来运行,所以要把它当前状态保存下来,就不必每次都创建一个新容器并再次安装Apache。

所以先用exit命令退出容器,再运行docker commit命令:

$ sudo docker commit 614122c0aabb aoct/apache2

命令中,指定了要提交的修改过的容器的ID、目标镜像仓库、镜像名。commit提交的知识创建容器的镜像与容器的当前状态之间的差异部分,很轻量。

查看新创建的镜像:

$ sudo docker images aoct/apache2

也可以像git一样,在提交镜像时指定更多信息来描述所做的修改:

代码如下:

$ sudo docker commit -m='A new image' --author='Aomine' 614122c0aabb aoct/apache2

上面代码,用-m指定行创建的镜像的提交信息。--author指定镜像作者,接着是容器ID、目标镜像仓库、镜像名。

使用docker inspect命令查看新创建的镜像的详细信息:

$ sudo docker inspect aoct/apache2

使用docker run命令从刚创建的新镜像运行一个容器:

$ sudo docker run -t -i aoct/apache2 /bin/bash

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • docker学习笔记之把容器commit成镜像的方法

    docker提供了两种镜像制作的方式,提高了使用的灵活性: 1.可以将更改后的容器提交,制作成镜像(这是接下来要说明的) 2.通过Dockerfile来制作镜像 下面通过一个例子来展示方法 本地有一个Ubuntu的镜像,下面以这个为蓝本,创建一个容器并在根目录下添加一个test文件,然后做成镜像. [root@bw001 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest a3cdd83cf

  • 详解Docker 修改已有镜像(commit )

    先使用下载的镜像启动容器. $ sudo docker run -t -i training/sinatra /bin/bash root@0b2616b0e5a8:/# 注意:记住容器的 ID,稍后还会用到. 在容器中添加 json 和 gem 两个应用. root@0b2616b0e5a8:/# gem install json 当结束后,我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 Docker commit 命令来提交更新后的副本. $ sudo docker com

  • 详解Docker学习之用commit命令创建镜像

    构建镜像的两种方法: 使用docker commit 命令 使用docker build命令和Dockerfile文件 Dockerfile更抢到.灵活,推荐使用. 一般来说不是真的"创建"新镜像,而是基于一个已有的基础镜像,比如Ubuntu.Fedora等,构建新的镜像而已. 用commit创建镜像 创建Docker账号 共享和发布镜像时构建镜像中重要的环节,可以将镜像推送到Docker Hub或资金的私有Registry中.首先到https://hub.docker.com/acc

  • 详解Docker与FastDFS的安装命令及使用

    Docker特点 1)上手快 用户只需要几分钟,就可以把自己的程序"Docker 化".Docker 依赖于"写时复制" (copy-on-write)模型,使修改应用程序也非常迅速,可以说达到"随心所致,代码即改" 的境界. 随后,就可以创建容器来运行应用程序了.大多数 Docker 容器只需要不到 1 秒中即可 启动.由于去除了管理程序的开销,Docker 容器拥有很高的性能,同时同一台宿主机中也 可以运行更多的容器,使用户尽可能的充分利用系

  • 详解Docker学习笔记之搭建一个JAVA Tomcat运行环境

    前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环境.面向服务的云计算.虚拟桌面 VDI 等等. 主观的印象:Docker 使用 Go 语言编写,用 cgroup 实现

  • 详解Docker容器运行多条命令(supervisor)

    一, 简介 Dockerfile 运行只支持一条命令,当在Docker里要运行多条命令,用supervisor来管理就比较合适了. Supervisor是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.它可以同时启动,关闭多个进程,使用起来特别的方便. 组成部分 supervisor 主要由两部分组成: supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等: supervisorctl(cl

  • 详解docker强制批量删除none的image镜像

    说正题,今天遇到的问题是自己在开发机做坏了几个image镜像,删不了   我想大家也遇到过这样类似的问题  -. 他的名字和tag都是为none,空- 以前看过一个帖子说,给他标记一个tag,就可以干掉,瞎扯- [ruifengyun@bj-buzz-dev01 extractor_docker]$ [ruifengyun@bj-buzz-dev01 extractor_docker]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL

  • 详解Docker commit的使用

    有时候需要在基础镜像里面安装某些依赖,如果把命令写在Dockerfile里,部分依赖软件下载很慢,构建镜像的时候又会花很长的时间.所以最好是分装一个包含依赖库的新镜像. docker提供commit来实现 比如我有一个python镜像,比较精简.缺乏freetds-dev和unixodbc-dev这两个依赖. 1.先把镜像run起来 docker run -it --name python docker.io/python:3.6.4 /bin/bash /bin/bash进入容器内部进行交互

  • 详解Docker使用Linux iptables 和 Interfaces管理容器网络

    我使用docker至今已有一段时间了,与绝大部分的人一样,我被docker强大的功能和易用性深深的折服.简单方便是docker的核心之一,它强大的功能被抽象成了非常简单的命令.当我在使用和学习docker的时候,我很想知道docker在后台都做了一些什么事情,特别是在网络这一块(我最感兴趣的一块) 我找到了很多关于创建和操作容器网络的文档,但是关于docker如何使网络工作的却没有那么多. Docker广泛使用linux iptables和网桥接口,这篇文章是我如何用于创建容器网络的总结,大部分

  • 详解Docker镜像与容器的常见操作

    镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加速器服务,例如: 网易云加速器 https://hub-mirror.c.163.com 阿里云加速器(需登录账号获取): https://cr.console.aliyun.com/cn-hangzhou/mirrors 国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档. 在CentOS7系统

  • 详解Docker Swarm概念与用法

    Docker Swarm是Docker公司开发的容器集群管理服务.从1.12.0版本开始,已经是Docker安装后自带的一部分(捆绑软件)了,又称为Swarm Mode,无需额外安装. 与Kubernetes相比,Docker Swarm是一个简单的软件,似乎不堪大用.但是它与docker-compose兼容的优点,可以弥补一切.对于没有集群使用经验的小白,用Docker Swarm起步,是一个很好的选择. 概念 Docker Swarm,主要包含以下概念: Swarm Node Stack S

  • 详解docker部署Jenkins新手使用教程

    本文通过docker部署Jenkins+Maven+SVN+Tomcat,在基础镜像Jenkins上安装Maven及自带的OpenJDK形成新的镜像,然后通过SVN将项目checkout下来,由Jenkins自带的插件或脚本将Maven生成的war包发送到指定的Tomcat的WebApps目录下,最终启动Tomcat完成自动化部署. 通过docker命令:sudo docker run –d -p 9898:8080 -p 50000:50000 -v /alidata/projects/jen

随机推荐