参考菜鸟教程
Docker Compose 是Docker的组装工具,用于创建和调试多个Docker容器,并在同一个Docker主机上运行它们。Docker Compose基于YAML文件,描述多个容器之间的相互关系,以及每个容器所需要的配置和环境变量。
Docker Compose 可以简化多个容器的部署,还支持多个容器之间的数据传输,包括容器之间的网络连接和容器之间的服务连接,并且可以在调试和打包过程中提供更加灵活的解决方案。Docker Compose 可以通过在本地环境或云服务器上创建Docker容器,并将它们打包成一个docker-compose文件,以便更容易地部署到生产环境中。
Compose适用于所有环境:生产,开发,测试以及CI工作流程。Docker Compose 使用的三个步骤:
1.使用 Dockerfile 定义应用程序的环境,以便在任何地方进行复制。
2.使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
3.执行 docker-compose up 命令来启动并运行整个应用程序。
在Dockerfile中,不但能够定义使用者在容器中需要进行的操作,而且能够定义容器中运行软件需要的配置,于是软件开发和运维终于能够在一个配置文件上达成统一。运维人员使用同一个Dockerfile能在不同的场合下“重现”与开发者环境中一模一样的运行单元(Docker容器)出来。
1.GitHub官方下载
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 v2.17.2。
Docker Compose和Docker版本对应关系:https://docs.docker.com/compose/compose-file/compose-file-v3/
Docker Compose下载地址:https://github.com/docker/compose/releases
2.赋予执行权限:sudo chmod +x /usr/local/bin/docker-compose
3.建立软连接:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.查看docker版本:docker-compose --version
1.DaoCloud国内源下载
curl -L http://get.daocloud.io/docker/compose/releases/download/v2.17.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.赋予执行权限:sudo chmod +x /usr/local/bin/docker-compose
3.建立软连接:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.查看docker版本:docker-compose --version
这种方式可能会出现如下报错:
Executing docker install script, commit:a8a6b338bdfedd7ddefb96fe3e7fe7d4036d945a
Warning: the “docker” command appears to already exist on this system.
If you already have Docker installed, this script can cause trouble, which is why we’re displaying this warning and provide the opportunity to cancel the installation.
If you installed the current Docker package using this script and are using it again to update Docker, you can safely ignore this message.
You may press Ctrl+C now to abort this script.
报错后可以先卸载docker-compose:rm /usr/local/bin/docker-compose
然后安装方式一下载安装。
案例要求:同时部署mysql、redis、nginx、nacos等组件容器。
1.创建文件夹:mkdir -p /usr/local/mycompose
2.进入文件夹:cd /usr/local/mycompose
3.创建 docker-compose.yml文件:vi docker-compose.yml
内容如下:
version: '3'
services:
redis1:
image: redis
ports:
- "6379:6379"
container_name: "redis1"
networks:
- dev
mysql1:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: "ut.123456"
ports:
- "3306:3306"
container_name: "mysql1"
networks:
- dev
nginx1:
image: nginx
ports:
- "8080:80"
container_name: "nginx1"
networks:
- dev
nacos1:
image: nacos/nacos-server
ports:
- "8848:8848"
container_name: "nacos1"
networks:
- dev
networks:
dev:
driver: bridge
pro:
driver: bridge
4.后台启动配置中创建的容器:docker-compose up -d
5.停止配置中创建的容器:docker-compose stop
6.删除配置中创建的容器:docker-compose down
docker-compose.yml配置文件主要分为version、services、networks三层。
以mysql服务为例,说明下常用字段的含义:
version: '3'#第一层:compose的版本号
services: #第二层:服务配置信息
mysql1: #服务名
image: mysql #该服务所基于的镜像名
environment: #该服务的环境变量
MYSQL_ROOT_PASSWORD: "ut.123456"
ports: #该服务的暴露端口
- "3306:3306"
container_name: "mysql1" #容器名
networks: #该服务所加入的网络段
- dev
volumes: #挂载数据卷
- /platform/mysql/conf:/etc/my.cnf.d/my.cnf
- /platform/mysql/data:/var/lib/mysql:rw"
networks: #第三层:网络环境
dev:
driver: bridge
更多具体字段详解可以参考:https://blog.csdn.net/qq_36148847/article/details/79427878
下面是一份部署的实例说明:
docker compose 命令的基本格式为:
docker-compose [-f …] [options] [COMMAND] [ARGS…]
常用命令(COMMAND)如下:
build 构建或重建服务
help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除停止的容器
run 运行一个一次性命令
scale 设置服务的容器数目
start 开启服务
stop 停止服务
up 创建并启动容器
更多命令可以查看帮助 `docker-compose -h`和`docker compose COMMAND --help`
以nginx容器操作为例,常见操作如下:
命令 | 描述 |
---|---|
docker-compose ps | 显示所有容器 |
docker-compose build nginx | 构建nginx镜像 |
docker-compose up -d nginx | 构建启动nignx容器 |
docker-compose exec nginx bash | 登录到nginx容器中 |
docker-compose pause nginx | 暂停nignx容器 |
docker-compose unpause nginx | 恢复ningx容器 |
docker-compose start nginx | 启动nignx容器 |
docker-compose stop nginx | 停止nignx容器 |
docker-compose restart nginx | 重新启动nginx容器 |
docker-compose rm nginx | 删除nginx容器 |
docker-compose down | 删除nginx容器和镜像 |
docker-compose logs -f nginx | 查看nginx的实时日志 |