您的位置首页百科问答

docker学习之Containers_02

docker学习之Containers_02

的有关信息介绍如下:

docker学习之Containers_02

确保Docker已经正确安装。本文参考自官网

是时候以Docker的方式构建一个应用程序了。我们将从这个应用程序的最底层开始,最底层是container,先构建container,再上一层是service,最高层是stack。

Define a container with Dockerfile:使用 Dockerfile 定义一个容器

Dockerfile会定义容器内部环境。访问资源,例如,网络接口、磁盘驱动,在这个环境中被虚拟化,并且和你的剩余的操作系统隔离,所以你必须配置连接外部世界的端口,并确定那些文件需要拷贝到这个环境中。

1Linux Ubuntu:docker安装及What is docker_01

创建一个目录,并在这个目录下创建一个文件: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"]

继续创建两个文件:requirements.txt和app.py,并把他们和Dockerfile放在同一个文件目录中,复制的时候注意,最好使用gedit命令,vi粘贴的时候不准确。

(1)requirements.txt:

Flask

Redis

(2)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 = "cannot connect to Redis, counter disabled"

html = "

Hello {name}!

" \

"Hostname: {hostname}
" \

"Visits: {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)

Build the app:编译应用。这个命令将会创建镜像,并存储到Docker仓库中。

注意后面的".",直接拷贝此段命令,注意切换到root权限,会下载一些文件,最终会看到success。

docker build -t friendlyhello .

查看Docker镜像:docker images

Run the app:启动app,配置本机的端口4000映射到容器端口80。其相当于服务器,不要关闭,可以使用Ctrl+C关闭

docker run -p 4000:80 friendlyhello

重新打开一个终端:访问容器,每访问一次服务端就会有一行输出。

curl http://localhost:4000

查看container ID,查看实时运行的容器:docker container ls

使用container ID 关闭,此时会发现第一个终端自动退出了,和Ctrl+c一样。

命令:docker container stop 66064fd125c8