什么是docker compose?
docker 官方出品的容器编排工具: compose
docker compose只能在一台宿主机上编排容器,启动多个容器
Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。
Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后使用一个命令,就可以从配置中创建并启动所有服务。
第1步:新建一个目录。
[root@docker Dockerfile]# mkdir composetest
[root@docker Dockerfile]# cd composetest/
第2步:vim app.py.
[root@docker composetest]# vim app.py
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
第3步:vim requirement.txt。
[root@docker composetest]# vim requirements.txt
flask
redis
第4步:编写 Dockerfile。
[root@docker composetest]# cat Dockerfile
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
第5步:vim docker-compose.yml
[root@docker composetest]# cat docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
第6步:使用compose 批量启动容器。
[root@docker composetest]# docker compose up
![](https://img-blog.csdnimg.cn/img_convert/a380fe58bc7b87673b1f6935fedde415.png)
windows 浏览器里直接访问
![](https://img-blog.csdnimg.cn/img_convert/5fe22739bc2487fc0326b02ea0e5f66b.png)
终端中按ctrl+c 即可停止程序。
[root@docker ~]# docker compose down
no configuration file provided: not found
[root@docker composetest]# pwd
/lianxi/Dockerfile/composetest
[root@docker composetest]# docker compose down
[+] Running 3/2
⠿ Container composetest-redis-1 Removed 0.2s
⠿ Container composetest-web-1 Removed 0.3s
⠿ Network composetest_default Removed 0.1s
[root@docker composetest]# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
注意:使用compose需要注意路径
路径不对,compose会使用不了。
docker compose 的使用和docker很相似。
查看容器
[root@docker composetest]# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
composetest-redis-1 redis:alpine "docker-entrypoint.s…" redis 6 minutes ago Up 4 minutes 6379/tcp
composetest-web-1 composetest-web "flask run" web 6 minutes ago Up 4 minutes 0.0.0.0:8000->5000/tcp, :::8000->5000/tcp
进入容器
[root@docker composetest]# docker compose exec -it web sh
/code # ls
Dockerfile __pycache__ app.py docker-compose.yml requirements.txt
查看compose版本
[root@docker composetest]# docker compose version
Docker Compose version v2.16.0
查看compose的帮助文档。
[root@docker composetest]# docker compose --help
Options:
--ansi string Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
--compatibility Run compose in backward compatibility mode
--env-file string Specify an alternate environment file.
-f, --file stringArray Compose configuration files
--parallel int Control max parallelism, -1 for unlimited (default -1)
--profile stringArray Specify a profile to enable
--project-directory string Specify an alternate working directory
(default: the path of the, first specified, Compose file)
-p, --project-name string Project name
Commands:
build Build or rebuild services
config Parse, resolve and render compose file in canonical format
cp Copy files/folders between a service container and the local filesystem
create Creates containers for a service.
down Stop and remove containers, networks
events Receive real time events from containers.
exec Execute a command in a running container.
images List images used by the created containers
kill Force stop service containers.
logs View output from containers
ls List running compose projects
pause Pause services
port Print the public port for a port binding.
ps List containers
pull Pull service images
push Push service images
restart Restart service containers
rm Removes stopped service containers
run Run a one-off command on a service.
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker Compose version information