1. 程式人生 > >Docker入門實戰(二)----使用Dockerfile建立自己的映象

Docker入門實戰(二)----使用Dockerfile建立自己的映象

上一篇文章中,我們是使用了別人做好的映象來使用docker。
更多的映象可以到https://hub.docker.com/查詢

這篇文章,我們將自己來製作映象。
自己製作映象非常簡單,只需要自己寫一個Dockerfile,build之後就能得到一個映象。

下面的例子,參考官網

1.新建資料夾test

>mkdir test
>cd test

==注:該資料夾下最好不要放置其他與製作映象無關的檔案,因為docker在build階段會掃描當前資料夾下的所有檔案,會影響到製作效率。==*

2.新建Dockerfile

> vim Dockerfile

==注:檔名必須為Dockerfile==

寫入以下內容

# 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"]

3.新建app.py和requirements.txt

app.py寫入

from flask import Flask
from redis import Redis, RedisError
import os
import
socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" \ "<b>Hostname:</b> {hostname}<br/>" \ "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80)

requirements.txt寫入

Flask
Redis

4.build這個映象

>docker build -t friendlyhello .

這裡寫圖片描述
friendlyhello為映象名字,可以自己隨意取。
命令列最後的”.”表示當前目錄

docker images
可以檢視到我們剛剛製作好的映象
這裡寫圖片描述

5.執行這個應用

> docker run –name friendlyhello_test -p 4000:80 friendlyhello

*插入run80*

開啟瀏覽器(宿主機上的埠是4000)
這裡寫圖片描述
我們再試試讓應用在後臺執行
這裡需要換個名字,並且4000埠被佔用,所以埠也需要改變

> docker run –name friendlyhello_test2 -p 4001:80 -d friendlyhello

這裡把容器名字設定成了 friendlyhello_test2
-d設定為後臺執行

>docker ps #檢視容器,可以看到正在執行的friendlyhello_test2

這一篇文章只是用了一個簡單的例子來製作映象。下一篇文章會更加詳細地介紹Dockerfile的各項引數。