Docker(docker-compose)
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
docker-compose下载安装:
[root@localhost /]# curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost /]# docker-compose #如果提示权限不够,执行命令赋予权限
[root@localhost /]# chmod +x /usr/local/bin/docker-compose
[root@localhost /]# sudo docker-compose version #查看版本
docker-compose基础命令:
[root@localhost /]# docker-compose -h #查看帮助
[root@localhost /]# docker-compose --help [root@localhost /]# docker-compose -f docker-compose.yml up -d #-f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。 [root@localhost /]# docker-compose up -d #启动所有容器,-d 将会在后台启动并运行所有的容器 [root@localhost /]# docker-compose down #停用移除所有容器以及网络相关 [root@localhost /]# docker-compose logs -t -f –tail 300 #查看日志 [root@localhost /]# docker-compose ps #列出项目中目前的所有容器 [root@localhost /]# docker-compose build #构建(重新构建)项目中的服务容器。 [root@localhost /]# docker-compose pull #拉取服务依赖的镜像 [root@localhost /]# docker-compose restart #重启项目中的服务 [root@localhost /]# docker-compose rm #删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。 [root@localhost /]# docker-compose run ubuntu ping docker.com #在指定服务上执行一个命令。 [root@localhost /]# docker-compose scale web=3 db=2 #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量 [root@localhost /]# docker-compose start #启动已经存在的服务容器。 [root@localhost /]# docker-compose stop #停止处于运行状态的容器但不删除它,docker-compose start可以再次启动这些容器。
docker-compose.yaml配置层级:
docker-compose.yaml文件分为三个主要部分:services、networks、volumes。
services主要用来定义各个容器。
networks定义需要使用到的network网关。
volumes定义services使用到的volume数据卷。
三层分别如下:
version:
...
services:
web:
images:
ports:
...
redis:
...
volumes:
...
networks:
...
configs:
...
docker-compose.yaml配置注释:
#Docker-compose版本号。 version: '3' #用于指引Docker创建新的网络。默认情况下,DockerCompose会创建bridge网络。 networks: #配置容器连接的网络,引用顶级 networks 下的条目。 app_networks: #定义不同的应用服务(DockerCompose会将每个服务部署在各自的容器中)。 services: #指定服务名称 app_mysql: #指定服务使用的镜像 image: mysql:5.7 #指定容器名称 container_name: app_mysql
#用来给容器root权限,不安全的。
privileged: true
#设置容器总是重新启动。 restart: always #指定服务运行的端口 ports : - "33006:3306"
#配置容器连接的网络,是在networks一级key中定义的网络。
networks:
- app_networks #指定容器的环境变量 environment: #数据库密码 - MYSQL_ROOT_PASSWORD=123456 #创建的库 - MYSQL_DATABASE=app #允许多IP连接数据库 - MYSQL_ROOT_HOST=%
app_redis: image: redis:latest restart: always ports: - ${REDIS_PORT}:6379 networks: - app_networks #将主机的数据卷或着文件挂载到容器里。 volumes: - ./redis/data:/data - /etc/localtime:/etc/localtime #指定 Docker 在容器中执行的脚本。(覆盖容器启动的默认命令)。 command: redis-server --requirepass ${REDIS_PASSWORD} app_api: networks: - app_networks restart: always image: java:8 ports: - 8080 #添加环境变量。 environment: # 容器内端口。 - PORT=8080 # 配置文件加密key。 - ENCRYPTOR_PASSWORD=${ENCRYPTOR_PASSWORD} # 是否开启定时任务 1开启 其他不开启。 - TIMING_TASK_PERFORM=${TIMING_TASK_PERFORM} # 其他配置。 - OTHER_PARAMS=${OTHER_PARAMS}
#将宿主机文件挂载到容器内部 volumes: - /etc/localtime:/etc/localtime - ./logs:/logs - ./app-0.0.1-SNAPSHOT.jar:/app.jar
app_nginx:
restart: always
image: nginx
networks:
- app_networks #设置依赖关系。使用docker-compose up启动时 :以依赖性顺序启动服务。在以下示例中,先启动app_redis app_mysql app_api服务后才会启动app_nginx
depends_on:
- app_redis
- app_mysql
- app_api ports:
#前面是宿主机启动服务的端口,后面是容器内部映射的端口,只配置一个那就算是容器内的端口,宿主机端口随机生成 - 80:8080 volumes:
#解决本地和容器内部时区不一致问题的配置
- /etc/localtime:/etc/localtime - ./nginx/nginx.conf:/etc/nginx/nginx.conf
docker-compose.yaml配置的环境变量可以通过(.env)文件来构造,.env 文件仅在使用docker-compose.yaml 文件时的预处理步骤中使用。美元符号变量(如 $HI)被替换为同一目录中名为“.env”的文件中包含的值。
分类:
Docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」