创建你的第一个Docker App

为了了解Docker到底是个什么东西,有什么作用,我们可以先参照Docker官方文档来创建我们的第一个Docker App,下面的步骤是在Ubuntu 16.04上进行的,其他系统可能只需要进行少量改动

我们的第一个App是一个简单的Flask Web应用,使用Flask自带的单线程HTTP服务器运行

1. 创建requirements.txt, 这个文件用来给pip安装Python库的,我们只需要Flask这一个库,内容如下:

Flask
2. 创建app.py,代码十分简单,仅有一个URL的Web应用,运行时占用80端口,内容如下:

from flask import Flask
import os, socket

app = Flask(__name__)

@app.route("/")
def hello():
    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname())


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=80)
3. 创建Dockerfile文件,这个文件可以理解成Docker容器的配置文件吧, 内容如下: 

 第一行的FROM后面其实也是一个Docker镜像,里面已经安装了Python 2.7,后面的内容其实浅显易懂

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]
4.  我们查看当前目录结构如下:

 

$ tree .
.
├── app.py
├── Dockerfile
└── requirements.txt

0 directories, 3 files
5.  创建Docker镜像,命令如下, demo是镜像名,你可以根据需要自行定义:

$ docker build -t demo .
Sending build context to Docker daemon  4.096kB
Step 1/7 : FROM python:2.7-slim
 ---> 4fd30fc83117
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> f3dcad317b5e
Step 3/7 : ADD . /app
 ---> Using cache
 ---> 8f7a6ce701c7
Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> aaa35fe5c80a
Step 5/7 : EXPOSE 80
 ---> Using cache
 ---> 87964d8d273c
Step 6/7 : ENV NAME World
 ---> Using cache
 ---> 37a5f7259600
Step 7/7 : CMD ["python", "app.py"]
 ---> Using cache
 ---> 9fe935f31017
Successfully built 9fe935f31017
Successfully tagged demo:latest
6. 镜像创建后会存放在本地的某个目录下,你可以通过以下命令进行查看:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo                latest              9fe935f31017        17 minutes ago      148MB
7. 接下来我们使用该镜像运行一个Docker容器,这就是我们的第一个Docker应用:

 其中-d参数用于让容器在后台运行,-p参数用于将容器的端口映射到宿主机的某个端口上,这里也即将容器的80端口映射到主机的

4000端口上,demo即为镜像名

$ docker run -d -p 4000:80 demo
004c19687d267dd8b72c33840e80c509e35845e05c6022531fac19396c965d43
8. 我们打开浏览器访问主机的4000端口,可以看到如下网页,大家不要纠结马赛克下面是什么:



9. 你也可以验证下,在你的主机上其实并没有安装pip和Python的Flask库,这就是Docker的魔法呢!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值