docker-3-使用dockerfile创建容器

这里按照官方文档创建一个python容器

前提:docker-ce安装完成,使用正常

开始

mkdir /docker
cd /docker/

创建Dockerfile 文件
vim 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"]

#Set proxy server, replace host:port with values for your servers
ENV http_proxy 192.168.233.159:12345
#ENV https_proxy host:port

下面准备的requirements.txt和app.py都将通过上面的ADD添加到容器中
准备requirements.txt文件

cat >> requirements.txt << EOF
 Flask
 Redis
 EOF

准备app.py 文件
vim 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 = "&lt;h3&gt;Hello {name}!&lt;/h3&gt;" \
       "&lt;b&gt;Hostname:&lt;/b&gt; {hostname}&lt;br/&gt;" \
       "&lt;b&gt;Visits:&lt;/b&gt; {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)

这个博客会自动清除空格,导致app.py文件有问题,请看官方文档进行调整:https://docs.docker.com/get-started/part2/#the-app-itself
构建镜像(必须在Dockerfile文件所在目录)

docker build -t friendlyhello .

在任何目录下都可以使用以下格式构建

docker build -f /docker/Dockerfile -t friendlyhello /docker/

介绍:-f指定Dockerfile文件路径,-t指定标记名称,.和/docker/作用一样,指定context(上下文),构建时必须指定。
docker-3-使用dockerfile创建容器
在docker镜像构建是的第一步,会将build context发送给docker daemon,然后再构建,建议新建一个目录,将所有需要的文件放在该目录下。

显示如下信息上面构建成功
docker-3-使用dockerfile创建容器

运行构建的容器

docker run -itd -p 4000:80 friendlyhello

-p 4000:80是将容器的80端口暴露到宿主机的4000端口

访问测试(因为现在还没有装redis,所以连不上)

curl -4 localhost:4000
docker-3-使用dockerfile创建容器

dockerfile配置请看dockerfile配置详解

docker-4-Dockerfile配置文件详解

docker build 详解

docker build --help
docker-3-使用dockerfile创建容器

转载于:https://blog.51cto.com/13323775/2055448

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值