【云计算】Dockerfile、镜像、容器快速入门
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、镜像、容器快速入门的更多相关文章
- Castle IOC容器快速入门
主要内容 1.为什么要IOC 2.什么是Castle IOC容器 3.快速入门示例 4.几个重要的概念 一,为什么要IOC IOC(控制反转或者叫依赖注入)Martin Fowler大师在他的文章中已 ...
- Docker与容器快速入门
Docker之风席卷全球,但很多人觉得docker入门确实不太容易,其原因在于很多知识点上没准备好,在docker解决了什么问题.怎么解决的.用什么技术解决的都还没想清楚的时候就去探索docker组件 ...
- 依赖注入DI(IOC)容器快速入门
1.什么是IOC IOC是一种设计模式,全程控制翻转或叫依赖注入.更详细介绍见http://martinfowler.com/articles/injection.html 2.为什么用IOC 我们通 ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- OpenStack云计算快速入门之一:OpenStack及其构成简介
原文:http://blog.chinaunix.net/uid-22414998-id-3263551.html OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助 ...
- 7.云原生之Docker容器Dockerfile镜像构建浅析与实践
转载自:https://www.bilibili.com/read/cv15220707/?from=readlist Dockerfile 镜像构建浅析与实践 描述:Dockerfile是一个文本格 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(10)|Vectors容器]
[易学易懂系列|rustlang语言|零基础|快速入门|(10)] 有意思的基础知识 Vectors 我们之前知道array数组是定长,只可我保存相同类型的数据的数据类型. 如果,我们想用不定长的数组 ...
- 【干货合集】Docker快速入门与进阶
收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...
- Docker三十分钟快速入门(上)
一.背景 最近,Docker技术真是一片火热,它的出现也弥补了虚拟机资源消耗过高的问题,直接让虚拟化技术有了质的飞跃.那么本文我们来聊一聊Docker,和大家一起认识Docker,简单入门Dock ...
随机推荐
- OC基础--内存管理中的@property关键字以及其参数
在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...
- Java基础-常量池
在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...
- 【uoj222】 NOI2016—区间
http://uoj.ac/problem/222 (题目链接) 题意 有n个区间,当有m个区间有公共部分时,求m个区间长度的最大值与最小值之差的最小值. Solution 线段树+滑动窗口.这道题很 ...
- codevs1064 虫食算
题目描述 Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 + 8468#6 ...
- Erlang练习题----shopping
直接就上代码了: -module(shop). -export([cost/1,total/1]). cost(orange) -> 5; cost(newspaper) -> 8; co ...
- omnetpp inet
http://blog.csdn.net/midie/article/details/5086983 omnetpp inet 自带了Mingw编译环境,而不再需要Visual C编译环境了.事实上, ...
- tmux 快捷键
ctrl+b , 修改窗口名称 ctrl+b ' 快速按名字切换窗口 ctrl+b w 列出窗口列表 Ctrl+b 激活控制台:此时以下按键生效 系统操作 ? 列出所有快捷键:按q返回 d 脱离当前会 ...
- Hibernate检索策略(抓取策略)(Hibernate检索优化)
一.查询方法中get方法采用策略是立即检索,而load方法采用策略是延迟检索,延迟检索是在使用数据时才发送SQL语句加载数据 获取延迟加载数据方式:1.使用的时候,如果Customer c=sessi ...
- 大理石在哪?(Where is the Marble?,UVa 10474)
参考:ACM紫书 第五章 P108 [排序与检索] 下面的代码中有些 提示性输出,想Ac 需删除提示性输出语句,读者自行修改. #include <cstdio> #include < ...
- 织梦DedeCms调用全站相关文章方法
织梦DedeCms 有个标签可以调用相关文章,通过下面的修改可以调用全站的相关文章,文章页内显示相关文章内容,可以提高关键词密度,还是挺不错的. 模板调用代码 <div> < ...