docker容器之间的访问

    一个简单的python web应用,需要访问redis,web应用与redis应用在不同的容器中,下面实现两个容器的访问。

1、创建app.py 与 Dockerfile

app.py

from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)


@app.route('/')
def hello():
    redis.incr('hits')
    return 'kick %s times.\n' % redis.get('hits')


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

 

Dockerfile

FROM python:2.7
LABEL maintaner="[email protected]"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]

2、启动redis

执行:docker run -d --name redis redis

通过docker ps查看容器是否启动成功

3、创建python应用镜像

执行:docker build -t flask-redis-demo .

启动flask应用:docker run -d --link redis --name flask-redis -e REDIS_HOST=redis flask-redis-demo

查看容器是否启动成功

4、访问redis

进入flask容器:docker exec -it flask-redis /bin/bash

docker容器之间的访问_第1张图片

虽然在容器内可以访问redis,但是在本地却无法访问,这时要将python应用的容器端口做一个映射。

5、端口映射

停止web应用:docker stop flask-redis

删除flask-redis:docker rm flask-redis

重新执行命令,增加-p参数:docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis flask-redis-demo

这时就可在本地访问了:

docker容器之间的访问_第2张图片

你可能感兴趣的:(docker)