docker-compose简介
Docker Compose
是一个基于Docker Engine
进行安装的Python
工具。该工具使得用户可以在一个声明式的配置文件中定义一个多容器的应用,并通过一个简单的命令完成部署。
dockerFile分析
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt -i https://pypi.douban.com/simple
CMD ["python", "app.py"]
image.png
docker-compose.yml分析
version: "3.5"
services:
web-fe:
build: .
command: python app.py
ports:
- target: 5000
published: 5000
networks:
- counter-net
volumes:
- type: volume
source: counter-vol
target: /code
redis:
image: "redis:alpine"
networks:
counter-net:
networks:
counter-net:
volumes:
counter-vol:
- 4个一级key:version、services、networks、volumes。
命令
启动
-
docker-compose up &
#默认情况下该命令会读取名为docker-compose.yml或docker-compose.yaml的文件 -
docker-compose up -d
#令应用在后台启动 -
docker-compose up -f mydocker-compose.yml
#自定义构建文件
Docker Compose会在部署服务之前创建网络和卷
查看
docker-compose ps
-
docker network ls
# 查看网络 -
docker volume ls
# 查看卷 -
docker compose top
#列出各个服务(容器)内运行的进程,PID是主机的进行ID不是容器的
停止并关闭
-
docker-compose down
- 删除容器
- 删除网络
- 不删除镜像
- 不删除volume
停止应用
-
docker-compose stop
-
停止应用,但并不会删除资源
-
对于已停止的Compose应用,可以使用
docker-compose rm
命令来删除。这会删除应用相关的容器和网络,但是不会删除卷和镜像
-
重启
-
docker-compose restart
- 如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
验证对Docker 主机对卷中文件的修改,会立刻反应到应用中
1. 查看卷volume位置
docker volume inspect [volume name]
$ docker volume inspect counter-app_counter-vol
--------------------------------------
[
{
"CreatedAt": "2020-09-07T12:33:59Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "counter-app",
"com.docker.compose.version": "1.25.5",
"com.docker.compose.volume": "counter-vol"
},
"Mountpoint": "/var/lib/docker/volumes/counter-app_counter-vol/_data",
"Name": "counter-app_counter-vol",
"Options": null,
"Scope": "local"
}
]
docker volume inspect counter-app_counter-vol | grep Mount
---------------------------------
"Mountpoint": "/var/lib/docker/volumes/counter-app_counter-vol/_data"
- mac上用docker会在mac上启动一个虚拟机运行docker,因此volume创建的directory并不在你的machine上,而是在虚拟机中
2. 复制修改后的文件到卷中
cp app.py /var/lib/docker/volumes/counter-app_counter-vol/_data/app.py
3. 刷新应用
- 在生产环境中不会这样做,但是在开发环境中这确实很节省时间
网友评论