docker-compose的介绍与安装
- 什么是 docker-compose
compose项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排 - compose定位
定义和运行多个 docker 容器,并对其进行编排 - compose核心概念
服务:一个应用的容器
项目:由一组关联的应用容器组成的一个完整业务单元 - compose安装
在官网中看下列介绍
https://docs.docker.com/compose/install/#alternative-install-options
执行上述下载命令,(下载贼慢)sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
下载完成后修改执行权限
sudo chmod +x /usr/local/bin/docker-compose - 验证docker-compose的安装
执行 docker-compose -v 出现版本内容则安装成功
docker-compose第一个环境
- 创建docker-compose文件
创建一个空目录 mkdir compose-dir
在compose-dir 目录下创建 docker-compose.yml 文件,建议使用这个名称 - 编写docker-compose文件内容
version: "3.0"
services:
tomcat01:
image: tomcat:8.0-jre8
ports:
- 8080:8080
tomcat02:
image: tomcat:8.0-jre8
ports:
- 8081:8080
注意:上面的文件内容格式必须符合yml的格式 - 启动
docker-compose up
注意:当前目录下必须存在 docker-compose.yml文件
docker-compose命令模板
- docker-compos命令官方说明
https://docs.docker.com/compose/compose-file/compose-file-v3/ - 命令模板
version: "3.8"
services:
myapp:
build:
context: proj_docker
dockerfile: Dockerfile
container_name: myapp
ports:
- 8082:8080
networks:
- docker
depends_on:
- tomcat01
tomcat01:
image: tomcat:8.0-jre8
ports:
- 8080:8080
container_name: tomcat01
networks:
- docker
depends_on:
- mysql
- redis
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s
tomcat02:
image: tomcat:8.0-jre8
ports:
- 8081:8080
container_name: tomcat02
networks:
- docker
mysql:
image: mysql:5.7.33
ports:
- "3307:3306"
container_name: mysql
volumes:
- mysqldata:/var/lib/mysql
- mysqlconf:/etc/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
env_file:
- mysql.env
networks:
- docker
redis:
image: redis:5.0
container_name: redis
ports:
- "6379:6379"
volumes:
- redisdata:/data
networks:
- docker
command: "redis-server --appendonly yes"
volumes:
mysqldata:
mysqlconf:
redisdata:
networks:
docker:
Docker可视化工具 Portainer
- 获取 Portainer 镜像
docker pull portainer/portainer - 启动Portainer容器
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_date:/data portainer/portainer