方法一:docker commit

1. 跑一个basic image,docker新建了一个容器

root@ubuntu:/home/thm/docker/test# docker run -i -t tanghuimin0713/ubuntu_amd64:14.04 /bin/bash
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
root@5d807872b2ba:/#

2. 在容器内安装apache2

root@5d807872b2ba:/# apt-get update
Ign http://archive.ubuntu.com trusty InRelease
Hit http://archive.ubuntu.com trusty Release.gpg
Hit http://archive.ubuntu.com trusty Release
Hit http://archive.ubuntu.com trusty/main i386 Packages
Get: http://archive.ubuntu.com trusty/main Translation-en [762 kB]
Fetched kB in 34s (22.1 kB/s)
Reading package lists... Done
root@5d807872b2ba:/#
root@5d807872b2ba:/# apt-get install apache2
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
...
...
...

3. 退出容器,将刚才装了apache的容器创建成一个新的image

root@5d807872b2ba:/# exit
exit
root@ubuntu:/home/thm/docker/test#
root@ubuntu:/home/thm/docker/test# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d807872b2ba tanghuimin0713/ubuntu_amd64:14.04 /bin/bash minutes ago Exit nostalgic_heisenberg
root@ubuntu:/home/thm/docker/test# docker commit 5d807872b2ba tanghuimin0713/ubuntu_amd64_apache2:14.04
e7df0b3ab526c83098d54e826b4e8e1f2c6efbe0a2511c3b06b79723bacfff52
root@ubuntu:/home/thm/docker/test# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tanghuimin0713/ubuntu_amd64_apache2 14.04 e7df0b3ab526 seconds ago 248.1 MB
scratch latest 6e1aa483880d About an hour ago B
tanghuimin0713/ubuntu_amd64 14.04 6cfee0d4349b hours ago 216.8 MB
tanghuimin0713/ubuntu_amd64 latest 6cfee0d4349b hours ago 216.8 MB
tanghuimin0713/ubuntu_i386 14.04 ee57f53fe012 hours ago 216.8 MB
tanghuimin0713/ubuntu_i386 latest ee57f53fe012 hours ago 216.8 MB
ubuntu 14.04 c4ff7513909d days ago 225.4 MB
ubuntu trusty c4ff7513909d days ago 225.4 MB
ubuntu 14.04. c4ff7513909d days ago 225.4 MB
ubuntu latest c4ff7513909d days ago 225.4 MB
ubuntu 14.10 75204fdb260b days ago 230.1 MB
ubuntu utopic 75204fdb260b days ago 230.1 MB
ubuntu 12.04 822a01ae9a15 days ago 108.1 MB
ubuntu 12.04. 822a01ae9a15 days ago 108.1 MB
ubuntu precise 822a01ae9a15 days ago 108.1 MB
ubuntu 12.10 c5881f11ded9 weeks ago 172.2 MB
ubuntu quantal c5881f11ded9 weeks ago 172.2 MB
ubuntu 13.04 463ff6be4238 weeks ago 169.4 MB
ubuntu raring 463ff6be4238 weeks ago 169.4 MB
ubuntu 13.10 195eb90b5349 weeks ago 184.7 MB
ubuntu saucy 195eb90b5349 weeks ago 184.7 MB
jamtur01/puppetmaster latest 99200e07340a weeks ago 312.4 MB
ubuntu 10.04 3db9c44f4520 months ago MB
ubuntu lucid 3db9c44f4520 months ago MB
root@ubuntu:/home/thm/docker/test#

4. run一下刚刚新创建的image,看看container内是否存在刚刚安装的apache2

root@ubuntu:/home/thm/docker/test# docker run -t -i tanghuimin0713/ubuntu_amd64_apache2:14.04 /bin/bash
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
root@081572d422c7:/#
root@081572d422c7:/#
root@081572d422c7:/# apache
apache2 apache2ctl apachectl

5. 将新创建的image同步到docker hub

docker push tanghuimin0713/ubuntu_amd64_apache2

方法二:Dockerfile

1. 在一个空目录下创建Dockerfile,并在Dockerfile中写入如下类似批处理的语句

root@ubuntu:/home/thm/docker/test# touch Dockerfile
root@ubuntu:/home/thm/docker/test# vim Dockerfile
   FROM tanghuimin0713/ubuntu_amd64:14.04
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "Hi, I am in your container" > /usr/share/nginx/html/index.html
EXPOSE

Dockerfile中相关命令解释:

FROM: 以"tanghuimin0713/ubuntu_amd64:14.04"为basic image运行一个container;

RUN: 在container中执行命令;

EXPOSE: 将镜像的80端口暴露在外,这样容器外可以看到这个端口并与其通信;

2. docker build创建image

root@ubuntu:/home/thm/docker/test#
root@ubuntu:/home/thm/docker/test# docker build -t="tanghuimin0713/ubuntu_amd64_nginx:14.04" .
Uploading context 2.56 kB
Uploading context
Step : FROM tanghuimin0713/ubuntu_amd64:14.04
---> 6cfee0d4349b
Step : RUN apt-get update
---> Running in dedead78ac76
Ign http://archive.ubuntu.com trusty InRelease
Hit http://archive.ubuntu.com trusty Release.gpg
Hit http://archive.ubuntu.com trusty Release
Hit http://archive.ubuntu.com trusty/main i386 Packages
Get: http://archive.ubuntu.com trusty/main Translation-en [762 kB]
Fetched kB in 2min 16s ( B/s)
Reading package lists...
---> 3af4720f8ec3
Step : RUN apt-get install -y nginx
---> Running in e6a4a63286fe
Reading package lists...
Building dependency tree...
The following extra packages will be installed:
...
...
...
Processing triggers for libc-bin (2.19-0ubuntu6) ...
Processing triggers for sgml-base (1.26+nmu4ubuntu1) ...
---> 409a0d5cd91b
Step : RUN echo "Hi, I am in your container" > /usr/share/nginx/html/index.html
---> Running in 783d8789509c
---> 9a5d96a41a0b
Step : EXPOSE
---> Running in a2e24fc2d4b9
---> 6cd5691b7c8c
Successfully built 6cd5691b7c8c
Removing intermediate container dedead78ac76
Removing intermediate container e6a4a63286fe
Removing intermediate container 783d8789509c
Removing intermediate container a2e24fc2d4b9
root@ubuntu:/home/thm/docker/test#

3.  查看image是否创建成功

root@ubuntu:/home/thm/docker/test# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
tanghuimin0713/ubuntu_amd64_nginx 14.04 6cd5691b7c8c 30 seconds ago 259.2 MB
scratch latest 6e1aa483880d hours ago B
tanghuimin0713/ubuntu_amd64 14.04 6cfee0d4349b hours ago 216.8 MB
tanghuimin0713/ubuntu_amd64 latest 6cfee0d4349b hours ago 216.8 MB
tanghuimin0713/ubuntu_i386 14.04 ee57f53fe012 hours ago 216.8 MB
tanghuimin0713/ubuntu_i386 latest ee57f53fe012 hours ago 216.8 MB
ubuntu 14.04. c4ff7513909d days ago 225.4 MB
ubuntu 14.04 c4ff7513909d days ago 225.4 MB
ubuntu latest c4ff7513909d days ago 225.4 MB
ubuntu trusty c4ff7513909d days ago 225.4 MB

4. run一下新创建的image

root@ubuntu:/home/thm/docker/test# docker run -i -t tanghuimin0713/ubuntu_amd64_nginx:14.04 /bin/bash
root@45494a615738:/#
root@45494a615738:/# which nginx
/usr/sbin/nginx

nginx命令是存在的,成功。

5. 将新创建的image同步到docker hub

docker push tanghuimin0713/ubuntu_amd64_nginx:14.04

docker开发_在basic image的基础上创建自定义的image的更多相关文章

  1. ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上

    原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html Kinec ...

  2. sqlalchemy在pythonweb中开发的使用(基于tornado的基础上)

    一.关于SQLAlchemy的安装pip install SQLAlchemy安装如果上面的方式安装不成功的情况可以使用下面的方法 百度下载window或者linux下面对应的sqlalchemy的版 ...

  3. django xadmin(2) 在xadmin基础上完成自定义页面

    1.在xadmin.py,GlobalSettings中自定义菜单 2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码 3.在adminx. ...

  4. Docker 安装Centos,Tomcat,Jdk等相关的自定义(Dockerfile)镜像

    一.安装Centos镜像 这里Centos 安装 国内daocloud网站提供的官方镜像 docker pull daocloud.io/library/centos:latest 利用docker  ...

  5. 在Livemedia的基础上开发自己的流媒体客户端

    一.背景 二.Livemedia框架介绍 1.总体框架 2.客户端框架 2.1 客户端openRTSP流程 2.2增加一种新的媒体 2.2.1增加媒体的format 2.2.2 新媒体需要考虑的问题 ...

  6. 在Livemedia的基础上开发自己的流媒体客户端 V 0.01

    在Livemedia的基础上开发自己的流媒体客户端 V 0.01 桂堂东 xiaoguizi@gmail.com 2004-10 2004-12 友情申明: 本文档适合已经从事流媒体传输工作或者对网络 ...

  7. .net core 在 Docker 开发下的巨坑

    一,Docker 的安装 Windows 安装  Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontain ...

  8. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  9. 开发工具、Object类(java基础知识十一)

    1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE     * (Integrated Development Environment) *  ...

随机推荐

  1. 深入研究java.lang.ThreadLocal类(转)

    引用:http://lavasoft.blog.51cto.com/62575/51926/ 一.概述   ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并 ...

  2. 第十章 Vim程序编辑器学习

    1.Vim是进阶版的vi,vim不但可以用不同颜色显示文字内容,还能进行诸如shell script,C program等程序编辑功能. 区别:vi是老师的字处理器,不过功能已经很齐全,但还是有可以进 ...

  3. [ActionScript 3.0] AS3 用于拖动对象时一次一页的缓动

    package com.fylibs.components.effects{ import com.tweener.transitions.Tweener; import flash.display. ...

  4. JAVA继承时this和super关键字

    JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...

  5. dropdownlist 控件的判断

    问题: 三个级联 下拉框.在不点击第一级别直接点击第二级别时,弹出提示窗口."请先选择XXX"之类的,理想的结果是想要下图 这样的: 由于使用的微信公众号的内置浏览器,所以问题来了 ...

  6. CodeForces 602E【概率DP】【树状数组优化】

    题意:有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名. 给了其中一个人的所有比赛的名次.求这个人最终排名的期望. 思路: 渣渣 ...

  7. java的新窗体

    1.JFrame窗体 jf.setSize(200, 150);        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  ...

  8. OLAP如何实现数据的聚合计算-分析过程

  9. SparkSQL使用之Spark SQL CLI

    Spark SQL CLI描述 Spark SQL CLI的引入使得在SparkSQL中通过hive metastore就可以直接对hive进行查询更加方便:当前版本中还不能使用Spark SQL C ...

  10. 日期:Date

    API--- java.util.Date:日期类,月份从0-11: 日期对象和毫秒值之间的转换. 1,日期对象转成毫秒值.Date类中的getTime方法. 2,如何将获取到的毫秒值转成具体的日期呢 ...