docker系列教程之docker compose使用
一、Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
如果多个容器在同一个宿主机中,通过compose来部署应用非常方便,通过能自动解决容器互联问题。
二、compose安装
安装环境linux中
我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 1.27.3。
将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
创建软链:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose --version
三、创建多个容器
创建一个app目录,目录中有一个docker-comose.yml文件、demo和test目录。
docker-comose.yml文件
version: '3'
networks:
app-network:
services:
demo:
networks:
- app-network
build: ./demo
container_name: demo
ports:
- "8099:8099"
test:
networks:
- app-network
build: ./test
container_name: test
ports:
- "8085:8085"
image
标明镜像名称或镜像 ID,这个image ID可以是本地也可以是远程的,如果本地不存在,Compose会尝试去pull下来。
build
服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。
因此image和build不能共存,如果同时存在会以image参数为主,build参数就会失效。我们这次教程都是通过build文件Dockerfile文件来创建容器
具体参数含义请参考: docker-compose
1.创建第一个容器
在app目录下创建一个demo目录,目录中存放我们提前放好的demo-0.0.1-SNAPSHOT.jar
创建Dockerfile文件
FROM java:8
VOLUME /tmp
COPY ./demo-0.0.1-SNAPSHOT.jar /app/
EXPOSE 8099
ENTRYPOINT [ "java", "-jar", "/app/demo-0.0.1-SNAPSHOT.jar" ]
1.创建第二个容器
在app目录下创建一个test目录,目录中存放我们提前放好的test-0.0.1-SNAPSHOT.jar
创建Dockerfile文件
FROM java:8
VOLUME /tmp
COPY ./test-0.0.1-SNAPSHOT.jar /app/
EXPOSE 8085
ENTRYPOINT [ "java", "-jar", "/app/test-0.0.1-SNAPSHOT.jar" ]
以上两个应用创建完成后,回到app目录执行docker-compose构建容器
docker-compose up -d
-d代表后台运行
查看容器是否启动成功
docker ps -a
推荐阅读
-
Docker 私服Registry简介与使用Docker-Compose安装Registry
-
ASP.NET Core 3.0 : 二十八. 在Docker中的部署以及docker-compose的使用
-
使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
-
使用Docker compose编排Laravel应用的方法
-
使用 Docker 来开发 PHP,Laradock 系列 3:Mailhog
-
使用docker-compose运行微服务项目#eureka+config+auth+gateway+module
-
使用Docker Compose搭建部署ElasticSearch的配置过程
-
Docker-Compose的使用示例详解
-
使用docker compose搭建一个elk系统的方法
-
docker compose 使用教程