淘先锋技术网

首页 1 2 3 4 5 6 7

Docker-compose

Docker Compose 是Docker官方编排(Orchestration)项目之一,负责快速的部署分布式应用。

参考:

1.Docker-从入门到实践

2.Docker官方文档

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个