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. java、java -version 可以javac没有内部命令的问题

    环境变量没有配错的情况下就是path变量的值要放在最前面

  2. OC基础--OC内存管理原则和简单实例

    ARC: 由于自己的学习视频太早,Xcode是iOS6版本,新建命令行项目后,系统会默认启动ARC机制,全程Automatic Reference Counting,简单的说,就是代码中自动加入了re ...

  3. WebForm之FileUpload控件(文件上传)

    FileUpload控件要与Button.LinkButton.ImageButton配合使用 FileUpload控件的方法及属性: 1.SaveAs("要上传到服务器的绝对路径" ...

  4. Hibernate-缓存-并发策略

    当多个并发的事务同时访问持久化层的缓存中的相同数据时,会引起并发问题,必须采用必要的事务隔离措施. 在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题.因此可以设定以下4种类型的并发访问策略,每 ...

  5. BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值

    这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...

  6. linux内存回收 内核参数

    ss -atu| awk '/^tcp/{++S[$2]} END {for(a in S) print a,S[a]}' ps up pid (RSS:实际内存大小,长驻内存) ps o pid,c ...

  7. 5个最好的Python Web开发框架

    Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开始学习Python,也立即就能获得生产力上的提升 ...

  8. nginx配置ssl双向验证 nginx https ssl证书配置

    1.安装nginx 参考<nginx安装>:http://www.ttlsa.com/nginx/nginx-install-on-linux/ 如果你想在单IP/服务器上配置多个http ...

  9. js校验表单后提交表单的三种方法总结

    第一种: 复制代码 代码如下: <script type="text/javascript">         function check(form) { if(fo ...

  10. Socket 入门- 客户端回射程序

    结果输出:------------------------------------------------------客户端:xx@xxxxxx:~/Public/C$ ./postBackCli.o ...