Docker和docker-compose的基础知识(来自官方教程)
从Docker文档中开始使用Docker Compose。
准备
克隆用于演示目的的存储库(非官方)。
$ git clone git@github.com:YumaInaura/study-docker.git
$ cd study-docker/composetest
或者, 分別在手頭創建以下的文件。
用Python编写一个启动Web服务器的脚本。
使用Redis记录访问次数。
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
@app.route('/')
def hello():
count = redis.incr('hits')
return 'Hello World! I have been seen {} times.\n'.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
2. 为安装Python模块的文件
flask
redis
用于创建Web服务器镜像的Dockerfile。
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
写下了启动Web服务器和Redis服务器的docker-compose.yml文件的步骤。
用于运行两个容器的描述性语句。
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
测试动作
进行编写操作
$ docker-compose up
只要按照docker-compose.yml文件中写的步骤执行,容器就会被创建出来。
能够看到 Redis 和 Web 服务器都已经启动。
确认容器
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
composetest_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
composetest_web_1 python app.py Up 0.0.0.0:5000->5000/tcp
请在浏览器中确认。
访问 http://localhost:5000/。
音量操作的确认
通过 docker-compose.yml 文件中的 volumes: 来挂载本地和Web服务器的目录,因此可以直接从本地添加或删除文件。
在本地创建文件。
echo 'Hello docker compose!' > hello.txt
网络服务器上也存在文件。
$ docker exec composetest_web_1 cat hello.txt
Hello docker compose!
可以删除
$ rm hello.txt
$ docker exec composetest_web_1 cat hello.txt
cat: can't open 'hello.txt': No such file or directory
尝试更改网页上显示的消息。
由于直接挂载本地文件,因此可以使用本地的编辑器。
改变
试试将消息转换为大写
- return 'Hello world! I have been seen {} times.\n'.format(count)
+ return 'HELLO WORLD! I have been seen {} times.\n'.format(count)
确认
只需一种选项:可以看到消息在 http://localhost:5000/ 上已经改变。
停止服务
$ docker-compose down
可以停止服务(停止每个容器)。
环境
- Docker version 17.03.1-ce, build c6d412e
招募聊天室成員
如果你有任何问题、烦恼或需要咨询等,可以使用LINE开放聊天进行交流。
Twitter 推特