docker-compose 基础和介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose 基础和介绍相关的知识,希望对你有一定的参考价值。
介绍:
docker compose 是 docker 官方推出的一款单机容器编排工具,
和 docker swarm, docker machine 并称为 docker 容器编排三剑客, 虽然其被 k8s 吊打,
但是由于其简单易学在中小规模的集群中还是占有相当的一部分地位的
使用Compose的步骤:
1、定义您的应用程序环境,Dockerfile以便可以在任何地方进行复制
2、定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环境中一起运行
3、运行 docker-compose up 和 Compose starts 运行整个应用程序
compose 的特性:
1、单个主机上的多个环境隔离
2、创建容器时保留卷数据
3、仅重新创建已更改的容器
4、变量和在环境之间移动合成
安装:
docker compose 依赖所有的工作依赖于 docker, 在安装 compose 前请确保已在本地或远程主机中安装 docker
二进制安装:
curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
pip安装:
pip install docker-compose
一个简单的例子:
mkdir composetest && cd composetest #创建一个专用目录,用于编写和保存 compose 文件
cat app.py #编写一个 flask web 应用作为测试
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host=‘redis‘, port=6379) #连接 redis
# 定义函数
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()
# 每访问一次返回的 count 加 1
return ‘Hello World! I have been seen {} times.
‘.format(count)
if __name__ == "__main__":
#运行 web 应用
app.run(host="0.0.0.0", debug=True)
cat Dockerfile #编写docker file 文件以便 compose 可以根据 docker file 动态构建镜像
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install flask redis
CMD ["python", "app.py"]
cat docker-compose.yml #编写 compose 文件定义容器间的关系
version: ‘3‘
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
docker-compose up #启动 docker compose 定义的 docker 集群
curl http://127.0.0.1:5000/ #访问 Web APP
# 示例来源
# https://docs.docker.com/compose/gettingstarted/#step-5-edit-the-compose-file-to-add-a-bind-mount
docker-compose 命令:
介绍:
1、docker-compose 命令的执行都必须指定或者在当前目录下存在 compose 文件, 且输出的内容都是这个 compose.yml 文件定义的集群内的信息
2、每个集群中可以拥有多个 services, services 由 compose.yml 的 services 定义
选项:
-f 指定 compose 文件路径(可以指定多个)
子命令:
create 创建 compose 集群, 但不启动(已废弃, 使用 up --no-start 代替)
down 停止或删除容器, 网络, 镜像和数据卷
exec 运行容器中的命令或者连接容器
help 查看帮助信息
images 列出 compose 集群所用的镜像
kill kill 掉 compose 集群
logs 获取 compose 集群日志
pause 暂停 compose 集群
ps 列出正在运行的容器
pull 拉取 compose.yml 文件中定义的所有 docker 镜像
push 上传 compose.yml 文件中定义的所有 docker 镜像
restart 重启 compose 集群
rm 删除一个停止的容器或者 compose 集群
run 和 exec 相同
scale 更改 compose 集群内指定的 services 的副本数量
start 启动 compose 集群
stop 停止 compose 集群
top 显示 compose 集群中运行的进程及其状态
unpause 恢复被暂停的 compose 集群
up 创建并启动一个 compose 集群
version 输出 compose 版本
以上是关于docker-compose 基础和介绍的主要内容,如果未能解决你的问题,请参考以下文章
Docker学习总结(60)——Docker-Compose 基础知识回顾总结
Docker学习总结(60)——Docker-Compose 基础知识回顾总结
研发环境容器化实施过程(docker + docker-compose + jenkins)