docker compose 安装
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:点击跳转
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
github可能下载太慢,可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 v2.2.2。
添加可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose version
Docker Compose version v2.2.2
docker compose 重要命令
命令选项
- -f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
- -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
- –x-networking 使用 Docker 的可拔插网络后端特性
- –x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge
- –verbose 输出更多调试信息。
- -v, --version 打印版本并退出。
常用&重要命令
- config验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。如:docker-compose -f skywalking.yml config此命令不会执行真正的操作,而是显示 docker-compose 程序解析到的配置文件内容
- images列出 Compose 文件中包含的镜像。如docker-compose -f skywalking.yml images
- ps列出项目中目前的所有容器。如docker-compose -f skywalking.yml ps
- build构建(重新构建)项目中的服务容器。如:docker-compose -f skywalking.yml build,一般搭配自定义镜像,比如编写的Dockfile,功能类似于docker build
- up该命令十分强大(重点掌握),它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。如docker-compose -f skywalking.yml up。默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。如果使用docker-compose up -d将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。此命令有如下选项:①:-d 在后台运行服务容器。②:--no-color 不使用颜色来区分不同的服务的控制台输出。③:--no-deps 不启动服务所链接的容器。④:--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。⑤:--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。⑥:--no-build 不自动构建缺失的服务镜像。⑦:-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
down此命令停止用up命令所启动的容器并移除网络,如docker-compose -f skywalking.yml down
stop格式为 docker-compose stop [options] [SERVICE...]停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器,如果不指定service则默认停止所有的容器。如docker-compose -f skywalking.yml stop elasticsearch选项:-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
start启动已经存在的服务容器。用法跟上面的stop刚好相反,如docker-compose -f skywalking.yml start elasticsearch
restart重启项目中的服务。用法跟上面的stop,start一样
logs格式为docker-compose logs [options] [SERVICE...]查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 --no-color 来关闭颜色。该命令在调试问题的时候十分有用。如docker-compose -f skywalking.yml logs 查看整体的日志,docker-compose -f skywalking.yml logs elasticsearch 查看单独容器的日志
docker compose 模板文件
默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。
services:
nginx: # 服务名称,用户自定义
image: nginx:latest # 镜像版本
ports:
- 8011:80 # 暴露端口
volumes: # 挂载
- /home/nginx/html:/usr/share/nginx/html
- /home/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
order:
image: order-server:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
ports:
- 8010:8010
注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中重复设置。
常用&重要命令
- images指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
- ports暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以,端口字符串都使用引号包括起来的字符串格式。
- volumes数据卷所挂载路径设置。可以设置为宿主机路径(HOST:CONTAINER)或者数据卷名称(VOLUME:CONTAINER),并且可以设置访问模式 (HOST:CONTAINER:ro)。
- ulimits指定容器的 ulimits 限制值。例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
- depends_on解决容器的依赖、启动先后的问题。以下例子中会先启动 redis mysql 再启动 web
- environment设置环境变量。你可以使用数组或字典两种格式。
- restart指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped。