【利用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 也都有介绍
推荐阅读
- linux|2022年云原生趋势
- 个人日记|K8s中Pod生命周期和重启策略
- k8s|k8s(六)(配置管理与集群安全机制)
- Go|Docker后端部署详解(Go+Nginx)
- docker|Docker
- 【快速学习】docker构建java项目实践
- Alpine Docker 安装 bash
- docker|docker导入dmp文件到oracle容器
- 阿里云docker开发者平台镜像上传和下载
- 工具|dockers 自定义tomcat