建立你的第一個Docker App
阿新 • • 發佈:2018-12-26
為了瞭解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埠,內容如下:
3. 建立Dockerfile檔案,這個檔案可以理解成Docker容器的配置檔案吧,內容如下: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)
第一行的FROM後面其實也是一個Docker映象,裡面已經安裝了Python 2.7,後面的內容其實淺顯易懂
4. 我們檢視當前目錄結構如下:# 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"]
$ tree .
.
├── app.py
├── Dockerfile
└── requirements.txt
0 directories, 3 files
5. 建立Docker映象,命令如下, demo是映象名,你可以根據需要自行定義:
6. 映象建立後會存放在本地的某個目錄下,你可以通過以下命令進行檢視:$ 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
$ 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的魔法呢!