1. 程式人生 > >建立你的第一個Docker App

建立你的第一個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的魔法呢!