docker3 docker-compose
标签(空格分隔):编排文件 docker
dockfile -> image
docker-compose.yml -> project cluster
docker-compose.yml
version: "3.3"
services:
nginx: #容器的名称 服务名
image: nginx #容器的镜像 nginx:1.12
ports:
- "80:80"
links:
- app
volumes:
- "./nginx.conf.d/:/etc/nginx/conf.d/"
app: #自己取的
image:myapp/app
eureka: #服务名
build: ./eureka #指定dockerfile所在路径
ports:
- "8761:8761" #指定端口映射
expose:
- 8761 #暴露端口
docker compose安装
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v
pip3 install docker-compose
podman compose安装
pip3 install podman-compose
启动容器
docker-compose up -d
nginx 例如 上面
server {
listen 80;
server_name www.hosix.cn;
access_log /var/log/nginx/nginx.log main;
location / {
proxy_pass http://app:8080/;
}
}
docker-compose ps
查看容器
docker-compose start
启动所有容器
docker-compose stop
关闭所有容器
docker-compose rm
删除容器
docker-compose kill
直接杀掉
docker-compose down
关闭并移除
docker-compose 结构
三层 project service container
工程 微服务 容器
docker-compose.yml常用指令
image
指定镜像
build
指定dockerfile文件的路径
command
容器启动之后的默认命令
command: bundle exec thin -p 3000
links
连接到其他服务中的容器
web:
links:
- db
- db:database
- redis
external_links
连接到docker-compose.yml 外部的容器 甚至并非compose管理的容i去
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
ports
暴露端口信息 类似 run -p
ports:
- "3000"
- "3000-3005"
- "8000-8000"
expose
暴露端口,只讲端口暴露给连接的服务,不暴露给宿主机
expose:
- "3000"
- "8000"
vulumes
卷挂载路径地址
vulumes:
- /var/lib/mysql
- /opt/data:/var/lib/mysql
- ./cache:/tmp/cache
volumes_from
从另一个服务或者容器挂载卷
volumes_from:
- service_name
- service_name:ro
- container:container_name
environment
设置环境变量。可以使用数组或则字典两种方式
RACK_ENV:development
SHOW:'true'
SESSION_SECRET:
docker-compose 高可用
新建文件夹 /app-ha
创建 docker-compose.yml 和多个服务的文件夹
version: "3.3"
services:
peer1: #容器的名称 服务名
image: appa #容器的镜像 nginx:1.12
ports:
- "8081:8081"
enviroment:
- spring.profiles.active=peer1
peer2: #容器的名称 服务名
image: appa #容器的镜像 nginx:1.12
ports:
- "8082:8082"
enviroment:
- spring.profiles.active=peer2
appb: #容器的名称 服务名
image: appb #容器的镜像 nginx:1.12
# ports:
# - "8083:8083"
docker 扩展
docker-compose scale appb=2