Docker Compose
概述
工程、服务、容器
Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)
Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例
下载安装包
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
查看版本
docker-compose -v
docker compose 重要命令,命令选项
-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
–x-networking 使用 Docker 的可拔插网络后端特性
–x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge
–verbose 输出更多调试信息。
-v, --version 打印版本并退出。
常用命令
1:config检查格式是否正确
docker-compose -f mysql.yml config
2:images列出docker-compose中的镜像(不是docker的)
docker-compose -f mysql.yml images
3:ps 列出docker-compose的所有容器
docker-compose -f mysql.yml ps
4:build 构建(重新构建)项目中的服务容器。
如:docker-compose -f mysql.yml build,一般搭配自定义镜像,比如编写的Dockfile,功能类似于docker build .
5:up 自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。没有的镜像会从库里下载
docker-compose -f mysql.yml up
如果使用docker-compose up -d将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容
5:down 移除yml内的容器,镜像,网络
docker-compose -f mysql.yml down
6:stop停止运行的容器,不删除,还可以再次启动
docker-compose -f mysql.yml start mysql stop
7:start启动已经存在的服务容器
docker-compose -f mysql.yml start mysql
8:restart 重新启动已经存在的服务容器
docker-compose -f mysql.yml restart mysql
9:logs 查看服务容器的输出
docker-compose -f mysql.yml logs #查看服务日志
docker-compose -f mysql.yml logs mysql #查看单独容器日志
示例:
vim skywalking.yml
version: '3.3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.8.5
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
discovery.type: single-node
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: skywalking/oap
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: skywalking/ui
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
docker-compose -f /app/skywalking.yml up -d
看防火墙端口是不是开着的
web访问
http://IP:8080
admin
admin