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 服务器都已经启动。

image.png

确认容器

$ 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/。

image.png

音量操作的确认

通过 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

尝试更改网页上显示的消息。

由于直接挂载本地文件,因此可以使用本地的编辑器。

image.png

改变

试试将消息转换为大写

- 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/ 上已经改变。

image.png

停止服务

$ docker-compose down

可以停止服务(停止每个容器)。

环境

    Docker version 17.03.1-ce, build c6d412e

招募聊天室成員

如果你有任何问题、烦恼或需要咨询等,可以使用LINE开放聊天进行交流。

 

Twitter 推特

 

广告
将在 10 秒后关闭
bannerAds