docker开发_在basic image的基础上创建自定义的image
方法一: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的更多相关文章
- ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html Kinec ...
- sqlalchemy在pythonweb中开发的使用(基于tornado的基础上)
一.关于SQLAlchemy的安装pip install SQLAlchemy安装如果上面的方式安装不成功的情况可以使用下面的方法 百度下载window或者linux下面对应的sqlalchemy的版 ...
- django xadmin(2) 在xadmin基础上完成自定义页面
1.在xadmin.py,GlobalSettings中自定义菜单 2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码 3.在adminx. ...
- Docker 安装Centos,Tomcat,Jdk等相关的自定义(Dockerfile)镜像
一.安装Centos镜像 这里Centos 安装 国内daocloud网站提供的官方镜像 docker pull daocloud.io/library/centos:latest 利用docker ...
- 在Livemedia的基础上开发自己的流媒体客户端
一.背景 二.Livemedia框架介绍 1.总体框架 2.客户端框架 2.1 客户端openRTSP流程 2.2增加一种新的媒体 2.2.1增加媒体的format 2.2.2 新媒体需要考虑的问题 ...
- 在Livemedia的基础上开发自己的流媒体客户端 V 0.01
在Livemedia的基础上开发自己的流媒体客户端 V 0.01 桂堂东 xiaoguizi@gmail.com 2004-10 2004-12 友情申明: 本文档适合已经从事流媒体传输工作或者对网络 ...
- .net core 在 Docker 开发下的巨坑
一,Docker 的安装 Windows 安装 Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontain ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- 开发工具、Object类(java基础知识十一)
1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE * (Integrated Development Environment) * ...
随机推荐
- jQuery如何动态添加具有删除按钮的行
代码实例如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta ...
- 01- 使用brew 安装ant -学习笔记(一)
1.卸载Mac OS下brew工具:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast ...
- java泛型的限制
1.不能实例化泛型数组,除非是无上界的类型通配符,如:Gennerid<String> []a=new Gennerid<String>[10] 而Gennic<?> ...
- es增量自定义更新的脚本
安装需要可软件 sudo apt-get install python-pip sudo pip install elasticsearch; sudo apt-get install python- ...
- js 未结束的字符串常量错误解决方法
1.JAVASCRIPT引用时,使用的字符语言不一致. 比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xx ...
- NoSuchMethodError: resolveTypeArguments
NoSuchMethodError: resolveTypeArguments——因为spring版本冲突导致,观察解压war包后lib中有几个spring.在pom中通过exclusion解决 Ht ...
- ofstream的问题
ofstream在多字节编码的项目中, 写入中文目录写不了, 英文目录可以 换成c库的fopen, fwrite可以
- Android ImageView 详述
结构 继承关系 public classView.OnClickListner extendsView java.lang.Object android.view.View android.widge ...
- JavaScript instanceof和typeof的区别
引用自: http://www.cnblogs.com/eoiioe/archive/2008/12/31/1366081.html instanceof和typeof都能用来判断一个变量是否为空 ...
- LoadRunner界面分析(一)
1.Virtual User Generator 2.新建脚本的方式 3.Task模式 4.Recording Options选项 5.Run-Time setting选项