《Docker实战入门教程(一)》介绍了从镜像仓库中拉取镜像,并将应用容器化。本文将通过一个简单的Python例子,构建一个自己的镜像,并容器化应用。
Docker技术出现之前,我们一般开发应用时,都要在机器上配置相应的开发环境,如python的运行环境、java应用的jvm以及各种配置等。但在项目实施的过程中,往往会有这样一种尴尬,就是在开发环境运行正确的应用,到了测试环境和生产环境就会出现各种问题。这种尴尬给开发、交付以及后期的运维带来了不小的困扰。
现在使用Docker,只需获取一个可移植的应用程序运行时作为镜像(基础镜像),并不需要安装。构建自己的应用程序镜像时,可以将基本的运行时镜像和应用程序代码放在一起构成新的镜像使用,可确保应用程序、其依赖项和运行时一起运行。
Docker使用Dockerfile来定义容器内所有环境。对网络接口和磁盘驱动器等资源的访问均在该环境中进行了虚拟化,该环境与宿主机系统以及其他容器环境隔离,因此在定义容器时,需要将端口映射到容器外部,并具体说明要将哪些文件“复制”到该环境中。这样,通过Dockerfile定义的应用程序镜像构建后,可以在任何地方运行而且所的程序运行都完全相同。
1.在本地计算机上创建一个新目录,如helloDemo。
2.在helloDemo目录中创建dockerfile文件和requirements.txt以及hello.py的文件。
3.将以下内容分别复制并粘贴到相应文件中,然后保存。
3.1 requirements.txt
Flask
Redis
3.2 Dockerfile
# 使用官方的Python运行时作为基础镜像
FROM python:2.7-slim
# 设置工作目录 /app
WORKDIR /app
# 拷贝当前目录的崆到容器的目录/app中
COPY . /app
# 安装requirements.txt文件中指定的程序包
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 暴露 80端口
EXPOSE 80
# 定义环境变量
ENV NAME World
# 运行 hello.py
CMD ["python", "hello.py"]
3.3 hello.py
from flask import Flask
import os
import socket
app = Flask(__name__)
@app.route("/")
def hello():
html = "<h3>Hello World,This is first szRoy containers!!!!</h3>"
return html
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
说明:
Dockerfile文件中包括了环境说明、hello.py文件(应用程序)以及编写好的requirements.txt 文件。requirements.txt、hello.py必须要和Dockerfile文件放在同一个目录中。
docker build --tag=hello:v0.0.1 .
说明:
查看构建后本机上的镜像
docker run -d -p 4000:80 hello:v0.0.1
在容器运行所在服务器上访问:http://ip:4000,ip为容器所在服务器的地址。运行页面如下:
查看在后台运行的容器:
docker container ls
图中高亮部分为此容器的ID,此ID对应着http://localhost:4000应用。
docker container stop 20e2868c4f33
留言与评论(共有 0 条评论) |