方法一: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. 【转】图解Sql2005创建分区表的全过程

    第一.创建分区表的第一步,先创建数据库文件组,但这一步可以省略,因为你可以直接使用PRIMARY文件.但我个人认为,为了方便管理,还是可以先创建几个文件组,这样可以将不同的小表放在不同的文件组里,既便 ...

  2. linux shell 参数传递

    在shell编程时.可以使用参数.Shell有位置参数和内部参数 1. 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linu ...

  3. VB EOF

    源地址: http://zhidao.baidu.com/link?url=zs49D5HzAgoyd3siE44oLbJlVLsWGpf1zqqvXVWZg_ZGXbFY7BgKFDpCqJdANO ...

  4. Bitbucket使用方法

    一.软件及SSH keys: 由于我的Bitbucket账号的邮箱及用户名与Github相同,所以SSH Public Keys可以用Github的,登录Bitbucket,悬浮在用户名boliqua ...

  5. RDLC报表分页显示标题

    将报表以 XML的方式打开,搜索找到“详细信息” 在这个位置 <TablixRowHierarchy> <TablixMembers> <TablixMember> ...

  6. Redis服务器配置

    Redis 服务器提供了一些配置选项(configuration option),通过修改这些选项的值,可以改变选项对应功能的行为. 比如:介绍 SELECT 命令时曾经说过,Redis 服务器默认会 ...

  7. 题目1005:Graduate Admission

    题目1005:Graduate Admission 时间限制:1 秒 内存限制:32 兆 特殊判题:否 题目描述: It is said that in 2011, there are about 1 ...

  8. Fegla and the Bed Bugs 二分

    Fegla and the Bed Bugs Fegla, also known as mmaw, is coaching a lot of teams. All these teams train ...

  9. Android开发-API指南-<action>

    <action> 英文原文:http://developer.android.com/guide/topics/manifest/action-element.html 采集(更新)日期: ...

  10. AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

    AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...