`

Dockerfile使用方法

 
阅读更多
Docker Dockerfile详解 http://my.oschina.net/2xixi/blog/516951#OSC_h4_7

官方Dockerfile列表:https://github.com/CentOS/CentOS-Dockerfiles
wmarinho / postgresql-v9.3-centos https://registry.hub.docker.com/u/wmarinho/postgresql-v9.3-centos/dockerfile/
原文:http://www.blogjava.net/yongboy/archive/2015/03/05/407643.html
编写一个Dockerfile
所有环境,同第一篇文字。在ubuntu下安装好vim之后(吐槽一下,ubuntu系统内置vi命令十分难用,只好求助于vim ):

sudo vim Dockerfile
编辑一个Dockerfile文件了,下面就是具体文件内容:

# VERSION 0.0.1
# 默认ubuntu server长期支持版本,当前是12.04
FROM ubuntu
# 签名啦
MAINTAINER yongboy "yongboy@gmail.com"

# 更新源,安装ssh server
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd

# 设置root ssh远程登录密码为123456
RUN echo "root:123456" | chpasswd

# 添加orache java7源,一次性安装vim,wget,curl,java7,tomcat7等必备软件
RUN apt-get install python-software-properties
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get update
RUN apt-get install -y vim wget curl oracle-java7-installer tomcat7

# 设置JAVA_HOME环境变量
RUN update-alternatives --display java
RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/environment
RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle">> /etc/default/tomcat7

# 容器需要开放SSH 22端口
EXPOSE 22

# 容器需要开放Tomcat 8080端口
EXPOSE 8080

# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行
ENTRYPOINT service tomcat7 start && /usr/sbin/sshd -D



构建镜像
脚本写好了,需要转换成镜像:
docker build -t yongboy/java7 .

-t: 为构建的镜像制定一个标签,便于记忆/索引等
. : 指定Dockerfile文件在当前目录下


网速不太好,会等待很长时间。很多操作可能需要科学上网,逼得我只能一直挂着VPN,方能畅通无阻。

构建镜像完成之后,看看运行效果
docker run -d -p 22 -p 8080:8080 yongboy/java7

在运行命令中,还得需要显式指定 -p 22 -p 8080:8080,否则在Docker 0.8.1版本中不会主动映射到宿主机上。据悉在Docker 0.4.8版本时,就不担心这个问题。 或者,您要有好的方式,不妨告知于我,谢谢。

在Dockerfile中,若没有使用ENTRYPOINT/CMD指令,若运行多个命令,可以这样做:
docker run -d -p 22 -p 8080 yongboy/java7 /bin/sh -c "service tomcat7 start && /usr/sbin/sshd -D"


提交/保存镜像
创建好的镜像,可以保存到索引仓库中,便于下次使用(当然,我们直接共享Dockerfile,是最简单的事情,:)) ),但毕竟镜像可以做到开箱即用。
https://index.docker.io/ 注册一个账号,例如yongboy

构建镜像
docker build -t yongboy/java7 .
上面已经构建OK的话,可省略此步。

登陆
docker login

提交到Docker索引仓库
docker push yongboy/java7
现在可以起来喝杯热水,出去溜达会,也不一定能够上传完毕,那叫一个慢啊!

上传OK的话,可以得到类似地址:https://index.docker.io/u/yongboy/java7/

如何使用镜像

docker pull yongboy/java7

剩下的步骤,就很简单了。

小结
有关Dockerfile的进阶阅读:
http://www.docker.io/learn/dockerfile/level2/
http://www.docker.io/learn/dockerfile/level2/
分享到:
评论

相关推荐

    使用Dockerfile部署nodejs服务的方法步骤

    主要介绍了使用Dockerfile部署nodejs服务的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Dockerfile文本文件使用方法实例解析

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 Docker支持快速的创建自定义镜像 Dockerfile常用命令 ...此时使用 docker images 能看到刚创建的镜像的版本

    使用dockerfile构建自己的nacos-mysql

    ​在部署nacos的时候触发的脑袋灵光一闪,每次部署nacos都要部署下mysql服务器,然后导入sql语句,配置nacos配置文件,那有没有简单的方法实现一键部署nacos和nacos-mysql 呢?答案是肯定!如下目录图:我用的IDE是 ...

    手动和Dockerfile自动构建tomcat镜像

    手动和Dockerfile自动构建tomcat镜像 ...手动构建tomcat镜像和使用Dockerfile自动构建tomcat镜像都是构建tomcat镜像的方法,每种方法都有其优缺。根据自己的需求选择合适的方法可以提高工作效率和减少错误的概率。

    Qt5.4_NaCl:DockerFile使用Qt5.4和NaCl为ubuntu 14.04生成基础映像

    DockerFile使用Qt5.4和NaCl为ubuntu 14.04生成基础映像 构建dockerfile 在终端中,转到放置Dockerfile的文件夹。 执行以下命令: $ sudo docker build -t qtnacl5.4.2 . 这将花费很多时间! 然后执行以下命令来...

    手动和Dockerfile自动构建nginx镜像

    "手动和Dockerfile自动构建nginx镜像" ...手动构建nginx镜像和Dockerfile自动构建nginx镜像都是构建nginx镜像的方法,它们都可以生成一个可用的nginx镜像,但Dockerfile自动构建nginx镜像更为简洁和高效。

    docker官方镜像下载及使用Dockerfile创建镜像的方法

    主要介绍了docker官方镜像下载及使用Dockerfile创建镜像的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    Docker进阶指南:Dockerfile的编写与优化

    内容概要:本文详细介绍了Dockerfile的编写和优化技巧,涵盖了基本语法、常用指令、多阶段...其他说明:文章还包括详细的调试与测试方法,以及Dockerfile编写时需要注意的一些最佳实践,确保镜像的安全性和可维护性。

    详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和...在这里并不推荐使用docker commit命令,而应该使用更灵活,更强大的Dockerfile来构建镜像.. 1.创建一个

    dockerfile-generator:用于 Node.js 的 Dockerfile 生成器

    图书馆的使用方法 您可以在此处找到参考文档: 。 const generator = require ( 'dockerfile-generator' ) const result = await generator . generateDockerFile ( inputJson ) // Result is a generated...

    详解docker中Dockerfile指令创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在...Dockerfile的书写规则及指令使用方法 Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携

    Dockerfile指令详解

    Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。 当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层。这些基础镜像可以...

Global site tag (gtag.js) - Google Analytics