Dockerfile、镜像、容器快速入门

1.1、Dockerfile书写示例

Dockerfile可以用来生成Docker镜像,它明确的定义了Image的生成过程。虽然直接修改容器也可以提交生成镜像,但是这种方式生成的镜像对使用者是透明的,很难进行二次修改。最佳实践只建议使用Dockerfile生成镜像,开发者、使用者都需要明确的知道镜像的生成过程。

以下示例为Ubuntu 14.04之上的一个Nginx+uWSGI+Django项目Dockerfile示例。常用的Dockerfile有以下6部分组成:基础镜像信息、基础镜像、维护者信息、镜像操作指令、指定容器需要暴露的端口、指定容器需要使用的持久化存储、容器启动指令。

源代码、Dockerfile的SVN:

https://xx.xx.xx.xx/svn/cloud/GalaxyManager/branches/0.1/DJANGO-DEMO

# 1. 基础镜像信息.

# VERSION: V1.0.0.0

# Author: JunneYang

# 2. 基础镜像.

# FROM ubuntu:14.04

# 3. 维护者信息.

# MAINTAINER JunneYang <597092663@qq.com>

# 4. 镜像操作指令.

# RUN apt-get update -y

# RUN apt-get install python-pip -y

# RUN pip install --upgrade pip

# RUN pip install Django==1.8.3

# RUN apt-get install python-dev libmysqlclient-dev -y

# RUN pip install MySQL-python==1.2.5

# RUN pip install uwsgi

# RUN apt-get install nginx -y

FROM 10.5.24.46:80/nscloud/django:1.0.0.0

RUN mkdir -p /opt/applications

COPY ./applications/ /opt/applications/

RUN find /opt/applications/ -type d -name ".svn" | xargs rm -rf

RUN chmod 755 /opt/applications/run.sh

# 4. 指定容器需要暴露的端口.

EXPOSE 80 443

# 5. 指定容器需要使用的持久化存储.

VOLUME ["/opt/applications/logs", "/opt/applications/template/sharedfiles"]

# 6. 容器启动指令: 如果为LongTime Service,不能起为后台进程.

CMD ["/bin/bash", "-c", "env && cd /opt/applications/ && ./run.sh"]

更多Dockerfile资料:

https://yeasy.gitbooks.io/docker_practice/content/dockerfile/index.html

http://www.toxingwang.com/cloud/docker/3032.html

https://discuss.csphere.cn/t/dockerfile/1655

http://os.51cto.com/art/201507/485007.htm

http://www.blogjava.net/yongboy/archive/2013/12/16/407643.html

http://blog.tankywoo.com/docker/2014/05/08/docker-2-dockerfile.html

http://blog.csdn.net/qinyushuang/article/details/43342553

https://hub.docker.com/r/konradkleine/docker-registry-frontend/~/dockerfile/

1.2、使用Dockerfile构建Docker镜像

使用如下命令,构建Docker镜像。

# docker build -t 10.5.24.46:80/nscloud/django:1.0.0.1 .

-t 表示该镜像的名称、标签

. 指定Dockerfile当前位置

使用如下命令查看Image:

# docker images

1.3、使用镜像运行容器

使用如下命令,启动运行容器:

# docker run --name=django-demo -d -it -p 80:80 -p 443:443 \

-e MYSQL_DATABASE="mysite" \

-e MYSQL_USER="mysite" \

-e MYSQL_PASSWORD="Admin@123" \

-e MYSQL_HOST="10.5.24.31" \

-e MYSQL_PORT="31111" \

-v /opt/fileserver/django-demo/logs:/opt/applications/logs \

-v /opt/fileserver/django-demo/files/sharedfiles:/opt/applications/template/sharedfiles \

10.5.24.46:80/nscloud/django:1.0.0.1

--name:指定容器名称,可以不指定

-d:容器后台运行

-it:容器交互式运行

-p:使用主机端口映射访问容器服务

-e:容器启动参数(环境变量),环境变量传递到镜像脚本中使用

-v:指定容器挂载的外部持久化存储路径

10.5.24.46:80/nscloud/django:1.0.0.1:容器启动镜像

使用如下命令,查看容器是否运行:

# docker ps

使用如下命令,查看容器控制台输出:

# docker logs #容器ID#

可以访问:http://xx.xx.xx.xx/ 或者 https://xx.xx.xx.xx/ 查看容器服务是否正常。

使用如下命令停止容器:

# docker stop #容器ID#

更多命令,使用 docker –help 获取。

可以查看 /opt/fileserver/django-demo/logs、/opt/fileserver/django-demo/files/sharedfiles是否存在内容,检验持久化存储是否有效。

更多docker run,参考:

http://www.tuicool.com/articles/uUBVJr

【云计算】Dockerfile、镜像、容器快速入门的更多相关文章

  1. Castle IOC容器快速入门

    主要内容 1.为什么要IOC 2.什么是Castle IOC容器 3.快速入门示例 4.几个重要的概念 一,为什么要IOC IOC(控制反转或者叫依赖注入)Martin Fowler大师在他的文章中已 ...

  2. Docker与容器快速入门

    Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...

  3. 依赖注入DI(IOC)容器快速入门

    1.什么是IOC IOC是一种设计模式,全程控制翻转或叫依赖注入.更详细介绍见http://martinfowler.com/articles/injection.html 2.为什么用IOC 我们通 ...

  4. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  5. OpenStack云计算快速入门之一:OpenStack及其构成简介

    原文:http://blog.chinaunix.net/uid-22414998-id-3263551.html OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助 ...

  6. 7.云原生之Docker容器Dockerfile镜像构建浅析与实践

    转载自:https://www.bilibili.com/read/cv15220707/?from=readlist Dockerfile 镜像构建浅析与实践 描述:Dockerfile是一个文本格 ...

  7. [易学易懂系列|rustlang语言|零基础|快速入门|(10)|Vectors容器]

    [易学易懂系列|rustlang语言|零基础|快速入门|(10)] 有意思的基础知识 Vectors 我们之前知道array数组是定长,只可我保存相同类型的数据的数据类型. 如果,我们想用不定长的数组 ...

  8. 【干货合集】Docker快速入门与进阶

    收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...

  9. Docker三十分钟快速入门(上)

    一.背景 ​ 最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃.那么本文我们来聊一聊Docker,和大家一起认识Docker,简单入门Dock ...

随机推荐

  1. Linux_日志信息

    一.httpd日志:/var/log/httpd1.软件位置:whereis httpd2.配置文件位置:/etc/httpd/conf/httpd.conf 二.mysql日志:/var/log 查 ...

  2. JavaWeb项目前端规范(采用命名空间使js深度解耦合)

    没有规矩不成方圆,一个优秀的代码架构不仅易于开发和维护,而且是一门管理与执行的艺术. 这几年来经历了很多项目,对代码之间的强耦合及书写不规范,维护性差等问题深恶痛绝.在这里,通过仔细分析后,结合自己的 ...

  3. Html-Css-iframe的使用

    iframe是作为在网页中嵌套网页的标签 <iframe src="homeIndex_init.html" width="100%" height=&q ...

  4. Vijos1459 车展 (treap)

    描述 遥控车是在是太漂亮了,韵韵的好朋友都想来参观,所以游乐园决定举办m次车展.车库里共有n辆车,从左到右依次编号为1,2,…,n,每辆车都有一个展台.刚开始每个展台都有一个唯一的高度h[i].主管已 ...

  5. java导出txt文本

    页面 项目结构 html代码 <html> </head> <body> <form action="down/downLoad" met ...

  6. hihocoder 1154 Spring Outing

    传送门 #1154 : Spring Outing 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 You class are planning for a spring ...

  7. Eclipse开发Android程序如何在手机上运行

    android开发不论是在真机上调试还是最终发布到真机上都非常简单,过程如下: 1.安装usb驱动 手机要能与电脑相连,当然要安驱动了.效果就是你插入手机,电脑显示驱动已识别.驱动安装的官方教程:ht ...

  8. eclipse错误:Unable to read workbench state. Workbench UI layout will be reset.XML document structures

    Unable to read workbench state. Workbench UI layout will be reset.XML document structures must start ...

  9. hdu 2045 不容易系列之(3)—— LELE的RPG难题

    解题思路: f(n)=1,2,.....n-2,n-1,n 前n-2个已经涂好,那么n-1有两种可能 1.n-1与n-2和1 的颜色都不同 1 粉,   n-2 红,   n-1 绿.  那么n的颜色 ...

  10. iphone6 wifi自动断开 tplink

    这样设置就好了,不会自动断开 了