方法一: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. NSPredicate,谓词

    原文地址:http://blog.csdn.net/holydancer/article/details/7380799 在语言上,谓语,谓词是用来判断的,比如“我是程序猿”中的是,就是表判断的谓语, ...

  2. PHP 时区设置

    有时候使用date("Y-m-d h:i:s")时发现时间相差8小时,修改“/etc/php5/apache2/php.ini”: date.timezone = "As ...

  3. 20145305 《Java程序设计》第9周学习总结

    教材学习内容总结 1.厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: JDBC-ODBC Bridge Driver Native API Driver JDBC-Net Driver ...

  4. 20145305《Java程序设计》实验三

    (一)敏捷开发与XP 1.了解什么是敏捷开发 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法."敏捷流程"是一系列价值观和方法论的集合. ...

  5. Excel粘贴到textarea换行符替换

    复制到→ Excel列表的内容复制到textarea中后,前台取到的文本是这样的: chrome监视显示 console.log输出 现在需要将excel中的每行数据拼接起来用“;”隔开,方法如下: ...

  6. POJ 2096 【期望DP】

    题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...

  7. es增量自定义更新的脚本

    安装需要可软件 sudo apt-get install python-pip sudo pip install elasticsearch; sudo apt-get install python- ...

  8. cocos2d-lua 3.5 android搭建步骤

    cocos2d-lua 3.5 android搭建步骤 如何安装eclipse,jdk,android sdk,ndk这里都不说了,资料很多,而且以前用eclipse搭建cocos2d-x-c++的时 ...

  9. android下拉菜单 spinner 学习

    首先看一下继承关系: public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener Class ...

  10. 解决spawn-fcgi child exited with: 1

    spawn-fcgi -d /data/web/ad/ -f /data/web/ad/code.py -a -P /data/openresty_81/nginx/pid/ad.pid 出错的时候请 ...