docker-compose是定义和运行多容器的工具。换句话说就是通过配置yml文件来运行容器,简化了每次输入docker run等命令,把这些命令配置在yml文件统一管理,而且可以用一个yml文件一次启动多个容器,启动时还可以设置各个容器的依赖关系等。
如下为测试docker-compose启动java程序
1. docker-compose.yml
version: '3'
services:
java05:
build: .
ports:
- "3390:8080"
volumes:
- "/home/xiaoqu/dockerDemo/dockerLog:/log"
environment:
TZ: Asia/Shanghai
2. Dockerfile
FROM java:8
COPY demo01.jar demo01.jar
ENTRYPOINT [“java”,“-Djava.security.egd=file:/dev/./urandom”,“-jar”,“/demo01.jar”]
3. demo01.jar
链接:https://pan.baidu.com/s/1ocGEk9N3L4eVVah8nsZErQ?pwd=6666
4. 运行容器
把这三个文件放在一个文件中,运行 docker-compose up
5.停止运行并删除容器
运行docker-compose down ,会停止容器并删除容器
docker-compose简单命令介绍
version: '3' #指定本 yml 依从的 compose 哪个版本制定的
services: #容器集合(下面可以写多个容器)
java05: #java服务名称 可自定义
#build: . #Dockerfile 文件的路径 如果写个点表示在当前目录,且文件名为Dockerfile,也可如下面一样配置详细信息
build:
context: ./dir #存放Dockerfile的目录
dockerfile: Dockerfile-dev #Dockerfile的名称
args:
buildno: 1 #添加构建参数,这是只能在构建过程中访问的环境变量
labels:
- "com.example.description=Accounting webapp" #设置构建镜像的标签
- "com.example.department=Finance"
target: prod #多层构建,可以指定构建哪一层
ports: #容器内容的端口映射
- "3390:8080"
volumes: #容器卷的挂载
- "/home/xiaoqu/dockerDemo/dockerLog:/log"
environment:
TZ: Asia/Shanghai #设置环境变量,不设置容器内和外部的系统时间容易不一致
depends_on:
- redis #设置依赖关系,先启动redis再启动java05
redis: #redis服务名称 可自定义
image: redis #不通过Dockerfile构建镜像,直接获取镜像
docker-compose相关命令
docker-compose up #构建镜像并启动服务
docker-compose up -d #构建镜像并启动服务(后台启动)
docker-compose stop #停止所有服务 后面如果+容器名 就是 停止指定的容器
docker-compose restart #重启服务 后面如果+容器名 就是重启指定的容器
docker-compose start #启动文件中所有容器 后面如果+容器名 就是启动指定的容器
docker-compose build #构建服务的镜像
docker-compose ps #查看文件中所有容器的信息
docker-compose logs #查看容器日志
docker-compose exec 容器名称 command #在指定的容器中执行命令
docker-compose down #停止容器并删除容器,但不会删除构建的镜像
docker-compose pause #暂停容器 后面如果+容器名 就是暂停指定的容器
docker-compose unpause #恢复容器 后面如果+容器名 就是恢复指定的容器