利用Dockerfile构建docker镜像

【利用Dockerfile构建docker镜像】昨天被问道怎么用Docker构建一个镜像,可以在Docker中跑一个python程序访问windows中的mysql数据库。基本就是一个简单的Docker镜像构建的工作,因为要给出详细步骤,所以我干脆直接在这里总结一下好了。
因为距离上次使用docker构建镜像已经又两个月左右了,所以我不得不自己重新做了个简单的例子,那就把这个例子介绍一下吧。
我们要做的很简单,就是在docker中跑一个python程序,然后构建一个docker镜像,可以访问服务器的数据库。操作起来也不难,以下就是步骤:
1,首先需要拉一个docker的python镜像:docker pull python
2,新建一个文件夹,然后在文件夹里建一个Dockerfile文件,然后把python程序也放到这个文件夹。

FROM python#基于刚才拉取的python镜像构建 MAINTAINER xuesong_smile@163.com#个人信息 RUN pip install mysqlclient#在docker中执行的命令,这里是安装python的一个mysql的包 WORKDIR /pyApp#docker镜像中的工作目录,如果镜像中不存在,则自动新建一个同名目录 ADD pachong.py /pyApp#将我们的程序添加到相应的工作目录

需要注意的是,如果我们需要在镜像中安装环境需要执行多条命令,那么在RUN那个地方,不建议每一个命令都写一个RUN,而是建议写成下边这种方式:
RUN buildDeps='gcc libc6-dev make' \ && apt-get update \ && apt-get install -y $buildDeps \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \ && mkdir -p /usr/src/redis \ && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1

也就是把多条命令写成一条语句,这样就只会在镜像中添加一层。因为Dockerfile中每一条命令都会新建一层镜像(具体可以了解docker镜像实现的原理),如果写成多句会构建多层镜像,显然会使镜像变得臃肿。
3,在该目录下,执行docker build -t imageName:v1 .构建镜像
6,执行命令docker run -it imageName:v1 python pachong.py
后边python pachong.py是在镜像启动时使用的命令,可以根据情况替换成自己的任务启动命令。
最后推荐一个关于Docker的教程https://yeasy.gitbooks.io/docker_practice/content/
教程后边对Docker Machine和Docker Swarm 也都有介绍

    推荐阅读