Docker-compose
Docker Compose
是Docker官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
参考:
1.docker-compose安装
pip install docker-compose
2.docker-compose语法
veseion: "3.8"
services: '容器'
servicename1: '服务器名称'
image: '镜像名称'
command: '可选,默认覆盖镜像里的CMD命令'
environment: '可选,相当于docker run 里的-env'
volumes: '可选,相当于 docker run 里的 -v'
networks: '可选,相当于 docker run 里 --network'
ports: '#可选,相当于 docker run里的-p'
servicename2:
build:
context: '指定Dockerfile文件所在的目录'
docekerfile: 'Dockerfile文件名'
args:
参数名: 参数值
container_name: '默认将会使用 项目名称_服务名称_序号 这样的格式,注意::指定容器名称后,该服务将无法进行扩展(scale),因为Docker不允许多个容器具有相同的名称'
depends_on:
- servicename1
env_file: .env
environment:
RACK_ENV: development
expose:
- "3000"
- "8000"
network_mode: "bridge"
networks:
some-network:
ipam :
drive: default
config:
- sububet "'172.16.0.0.1/16'"
other-network:
ports:
- "3000"
volumes:
- /var/lib/mysql
restart: always
security_opt:
- seccomp:unconfined #指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)
logging: #日志选项
driver: "json-file"
options:
max-size: "500m"
external_links: # External Links(外部链接) 目的是让Compose能够连接那些不在docker-compose.yml中定义的单独运行容器
- redis_1
- project_db_1:mysql
healthcheck:
test: ["CMD","curl","-f","http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
volumes: '可选 相当于docker volumes create'
networks: '可选 相当于 docker network create'
3.docker-compose命令
#检查docker-compose.yml文件格式是否正确
$ docker-compose config
# 默认使用docker-compose.yml构建镜像
# --no-cache:不带缓存的构建,-f 指定构建的文件 -p 指定项目名称,默认将使用所在目录名称作为项目名
$ docker-compose build --no-cache -f docker-compose1.yml -p project
# 列出Compose文件构建的镜像
$ docker-compose images
# 启动所有编排容器服务
$ docker-compose up -d
#在指定服务器启动一个容器,并执行ping docker.com
$ docker-compose run 容器名称 ping 服务名称
$ docker-compose run -d --name 名称 -e key=val -u user名
# 查看所有编排容器,包括已停止的容器
$ docker-compose ps -a
# 进入指定容器执行命令
$ docker-compose exec nginx bash
$ docker-compose exec web python manage.py migrate --noinput
# 查看web容器的实时日志
$ docker-compose logs -f web
# 停止所有up命令启动的容器
$ docker-compose down
# 重新启动停止服务的容器
$ docker-compose restart web
# 暂停web容器
$ docker-compose pause web
# 恢复web容器
$ docker-compose unpause web
# 删除web容器,删除前必需停止stop web容器服务
$ docker-compose rm web
# 查看各个服务容器内运行的进程
$ docker-compose top
#拉取服务所依赖的镜像
$ docker-compose pull
#水平扩展 scale
$ docker-compose scale 容器1=3 容器2=2 #容器1启动3个,容器2启动2个