容器编排Docker Compose
程序员文章站
2022-05-14 20:35:15
...
Docker Compose
- Docker-Compose是官方编排的项目之一,正常部署一个容器时,可能需要依赖于其他的容器启动,例如,一个user_service服务需要依赖数据库,那么就需要先把数据库的容器启动。那么使用Docker-Compose可以把这些所有的容器构造成一个项目启动,里面会配置启动依赖关系
Docker Compose安装
- MAC和Windows版本的docker自带Compose功能,无需安装
- Linux安装
# 2-1.命令下载安装(速度较慢) curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # 2-2.直接将文件拖放进/usr/local/bin/目录 # 修改权限,使其可执行 chmod +x /usr/local/bin/docker-compose # 创建软连接,使其在/usr/bin也可以访问 ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 执行测试
# 执行以下命令,可以看到已经安装成功 docker-compose -v docker-compose
Docker Compose快速入门
- 前提是服务器docker-compose已经安装
- 正常使用maven打一个jar包
例如:app.jar
- 创建一个Dockerfile文件
FROM java:8-alpine COPY ./app.jar /tmp/app.jar EXPOSE 9090 ENTRYPOINT ["java","-jar","/tmp/app.jar"] # FROM java:8-alpine:基于java8启动 # COPY ./app.jar /tmp/app.jar:将app.jar包copy到/tmp目录 # EXPOSE 9090:指定宿主机映射端口9090 # ENTRYPOINT ["java","-jar","/tmp/app.jar"]:需要执行的命令
- 创建一个docker-compose.yml文件
version: '3' services: web: build: . ports: - "9090:9090" redis: image: "redis"
- 将这三个文件都放到同一个目录,并执行构建命令
docker-compose up
- 测试,浏览器访问一下即可
Docker Composer 相关命令
- 常用指令
# 构建容器 docker-compose up # 构建容器,后台启动 docker-compose up -d # 关闭容器 docker-compose stop # 关闭容器并删除 docker-compose down
- 其他指令
[[email protected] docker-demo]# docker-compose --help 利用Docker来定义和构建一个多容器的应用 使用方式: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--help Options: -f, --file FILE 指定一个 compose 文件, (默认: docker-compose.yml) -p, --project-name NAME 指定project名字 (默认: 目录名称) --verbose 显示更多日志 --log-level LEVEL 日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL) -v, --version 打印版本并退出 -H, --host HOST Daemon socket to connect to Commands: build 构建多个service config 校验 Compose 文件,格式是否正确,若正确则显示配置, 若格式错误显示错误原因 down 停止并删除 容器, 网络, 镜像, 和 数据卷 exec 进入一个指定的容器 help Get help on a command images 列出该Compose中包含的各个镜像 kill 通过发送 SIGKILL 信号来强制停止服务容器 格式为 docker-compose kill [options] [SERVICE...] logs 查看服务容器的输出日志 格式为 docker-compose logs [options] [SERVICE...]。 pause 暂停一个容器 port 打印某个容器端口所映射的公共端口 ps 列出项目中目前的所有容器 pull 拉取服务依赖的镜像 push 推送服务依赖的镜像到 Docker 镜像仓库 restart 重启项目中的服务 rm 删除停止的容器(要先停止容器) run 在某个服务上运行指令 scale 设定某个容器的运行个数 start 启动多个 services stop 停止多个 services top 查看各个服务容器内运行的进程。 unpause 恢复处于暂停状态中的服务。 up 创建并启动多个service的容器 version Show the Docker-Compose version information
- Compose和docker的版本有对应关系,使用之前查一下api
https://docs.docker.com/compose/compose-file/
Docker Compose常用语法
- 文件示例
version: '3' services: web: build: . ports: - "8080:8080" depends_on: - db - redis # redis服务 redis: image: redis # mysql服务 db: image: mysql:5.7
- 常用指令简介
version:版本 build:指定构建路径 command:覆盖默认执行指令 depends_on:解决依赖先后 entrypoint:入口文件或者启动命令 environment:类似于-e,设置环境变量 expose:内部映射端口,只能同一机器内访问 extra_hosts:设置host文件的映射信息 image:启动容器的视图 logging:配置日志项 network_mode:网络模式 networks:设定加入网络的模式 ports:映射端口,可以是个范围 restart:设定重启策略 volumes:挂载数据或目录卷
推荐阅读
-
Docker如何使用link建立容器之间的连接
-
在Docker上用Nacos1.3容器连接MySQL5.6和8.0.18容器进入持久化的具体操作(Nacos单机版)
-
DockerPHP: 基于Docker容器化PHP开发环境解决方案
-
在Docker容器中使用docker命令
-
不同物理机中的Docker容器互连(Openvswitch)
-
docker/compose中links/external_links的区别
-
Docker容器安装的mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
-
Docker配置本地镜像与容器的存储位置
-
Docker容器化PHP开发环境搭建-DVWA (含xdebug调试)
-
CentOS7 Docker容器文件挂载权限