Docker学习与实践
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker学习与实践相关的知识,希望对你有一定的参考价值。
七、Docker Compose
1.简介
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
使用Compose基本上是一个三步过程:
1.用一个定义你的应用程序的环境,Dockerfile这样它就可以在任何地方再现。
2.定义组成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。
3.运行docker-compose up和撰写启动并运行您的整个应用程序。
2.安装
在Linux上安装直接从官方GitHub Release处下载编译好的二进制文件。
[[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[[email protected] ~]# chmod +x /usr/local/bin/docker-compose
[[email protected] ~]# docker-compose --version
docker-compose version 1.21.2, build a133471
#需要卸载时直接删除二进制文件即可
3.入门使用
①.新建文件夹并创建一个app.py文件
[[email protected] ~]# mkdir test
[[email protected] ~]# cd test/
[[email protected] test]# cat app.py
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! 该页面已被访问 {} 次。
‘.format(count)
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
②.创建一个Dockerfile文件
[[email protected] test]# cat Dockerfile
FROM python:3.6-alpine
ADD . /code
WORKDIR /code
RUN pip install redis flask
CMD ["python", "app.py"]
③.创建一个docker-compose.yml文件
[[email protected] test]# cat docker-compose.yml
version: ‘3‘
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
#这个compose文件定义了两个服务,web和redis。
#web服务使用当前目录中的Dockerfile构建镜像,并映射5000端口。
#redis服务使用公共库中的redis镜像
④.运行compose项目
[[email protected] test]# docker-compose up
⑥.访问
刷新页面可以看见数字增加
切换终端查看运行的容器
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7846aed7560e redis:alpine "docker-entrypoint.s…" 3 minutes ago Up 2 minutes 6379/tcp test_redis_1
f7c8c051d057 test_web "python app.py" 3 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp test_web_1
⑦.停止
[[email protected] test]# docker-compose down
Stopping test_redis_1 ... done
Stopping test_web_1 ... done
Removing test_redis_1 ... done
Removing test_web_1 ... done
Removing network test_default
4.实例:WordPress
①.创建一个文件夹并新建docker-compose.yml 文件
[[email protected] ~]# mkdir wordpress
[[email protected] ~]# cd wordpress/
[[email protected] wordpress]# cat docker-compose.yml
version: ‘3‘
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
②.构建和运行
[[email protected] wordpress]# docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating volume "wordpress_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
f2aa67a397c4: Pull complete
1accf44cb7e0: Pull complete
2d830ea9fa68: Pull complete
740584693b89: Pull complete
4d620357ec48: Pull complete
ac3b7158d73d: Pull complete
a48d784ee503: Pull complete
bf1194add2f3: Pull complete
0e5c74178a02: Pull complete
e9201d309436: Pull complete
bf1ac4524e8e: Pull complete
Digest: sha256:f030e84582d939d313fe2ef469b5c65ffd0f7dff3b4b98e6ec9ae2dccd83dcdf
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
f2aa67a397c4: Already exists
4c3122805fd6: Pull complete
98ce407ee18a: Pull complete
8a56b8f1ca72: Pull complete
3eb04e3939f2: Pull complete
f5ecc66c0a5f: Pull complete
30ebdb4a78e1: Pull complete
9e9c0e2ba7f1: Pull complete
da976026223e: Pull complete
c97e6cef8eb4: Pull complete
d7d37db38fe6: Pull complete
4fbe9ea008c2: Pull complete
b5247a62a2b6: Pull complete
a430e65efb58: Pull complete
9afdee095b5b: Pull complete
12d5f9a19746: Pull complete
f785e67a07ef: Pull complete
5663bbfd9606: Pull complete
ff13a5b7e05e: Pull complete
710c4b456373: Pull complete
Digest: sha256:b0460dba11737144b232a7794403d4052982f2332caeea82f618fc98d0547387
Status: Downloaded newer image for wordpress:latest
Creating wordpress_db_1 ... done
Creating wordpress_wordpress_1 ... done
③.访问
#学习文档地址:https://github.com/yeasy/docker_practice/blob/master/SUMMARY.md
以上是关于Docker学习与实践的主要内容,如果未能解决你的问题,请参考以下文章