docker compose最全文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
#官方文档地址
https://docs.docker.com/compose/
 
1.docker compose安装
 
#自动
sudo yum update
sudo yum install docker-compose-plugin
docker compose version
 
  
#手动安装
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.11.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
此命令下载最新版本的 Docker Compose(从 Compose 发布存储库)并在$HOME目录下为活动用户安装 Compose。
 
#安装:
Docker Compose 为您系统上的所有用户,替换~/.docker/cli-plugins/usr/local/lib/docker/cli-plugins.
不同版本的 Compose,替换v2.11.1为您要使用的 Compose 版本。
 
#对二进制文件应用可执行权限:
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
 
#或者,如果您选择为所有用户安装 Compose:
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
 
#测试安装
docker compose version
 
2.docker compose配置文件编写
 
[root@localhost shell]# cat docker-compose-test.yml
version: '3.9'
services:
  #elastic
  es:
    image: 172.16.4.17:8090/public/elastic:7.1.1
    restart: always
    deploy:
      resources:
        limits:
          memory: '4G'
        reservations:
          memory: '3G'
    container_name: es
    environment:
      - TZ=Asia/Shanghai
      - ELASTIC_PASSWORD=ytx@1234
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/elastic/data
        target: /usr/share/elasticsearch/data
      - type: bind
        source: /data/aibox-common/elastic/config
        target: /usr/share/elasticsearch/config
    ports:
      - 9200:9200
      - 9300:9300
    network_mode: "host"
  #kibanan
  kibanan:
    image: 172.16.4.17:8090/public/kibana:7.1.1
    restart: always
    deploy:
      resources:
        limits:
          memory: '2G'
        reservations:
          memory: '1G'
    container_name: kibanan
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/kibana/config/kibana.yml
        target: /usr/share/kibana/config/kibana.yml
    ports:
      - 5601:5601
    network_mode: "host"
  #mysql
  mysql:
    image: 172.16.4.17:8090/public/mysql:5.7.29
    restart: always
    deploy:
      resources:
        limits:
          memory: '3G'
        reservations:
          memory: '2G'
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=ytx@1234
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/mysql/config/my.cnf
        target: /etc/mysql/my.cnf
      - type: bind
        source: /data/aibox-common/mysql/datadir
        target: /var/lib/mysql
    ports:
      - 3306:3306
    network_mode: "host"
  #redis
  redis:
    image: 172.16.4.17:8090/public/redis:6.0
    restart: always
    deploy:
      resources:
        limits:
          memory: '3G'
        reservations:
          memory: '2G'
    container_name: redis
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/redis/conf/redis.conf
        target: /usr/local/etc/redis/redis.conf
    ports:
      - 6379:6379
    command: redis-server /usr/local/etc/redis/redis.conf
    network_mode: "host"
  #nginx
  nginx:
    image: 172.16.4.17:8090/public/nginx:v1.20.1
    restart: always
    container_name: nginx
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/service/nginx/conf
        target: /data/service/nginx/conf
      - type: bind
        source: /data/service/nginx/logs
        target: /data/service/nginx/logs
      - type: bind
        source: /data/service/nginx/html
        target: /data/service/nginx/html
    ports:
      - 80:80
      - 28882:28882
    network_mode: "host"
  #device-server
  device-server:
    image: #镜像地址
    container_name: device-server
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/device-server/config
        target: /device-server/config
      - type: bind
        source: /data/aibox-common/device-server/logs
        target: /device-server/logs
      - type: bind
        source: /data/pictures/
        target: /device-server/pic/
    ports:
      - 24444:24444
      - 23333:23333
    depends_on:
      - mysql
      - redis
      - es
    network_mode: "host"
  #cm-server
  cm-server:
    image: #镜像地址
    container_name: cm-server
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/cm-server/config
        target: /aibox-control-manage/config
      - type: bind
        source: /data/aibox-common/cm-server/logs
        target: /aibox-control-manage/logs
      - type: bind
        source: /data/pictures/
        target: /aibox-control-manage/pic
      - type: bind
        source: /data/aibox-common/cm-server/rlface_cpu
        target: /aibox-control-manage/rlface_cpu
    ports:
      - 28877:28877
    depends_on:
      - mysql
      - redis
      - es
      - device-server
    network_mode: "host"
  #device-agent
  device-agent:
    image: #镜像地址
    container_name: device-agent
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/ai-server
        target: /home/nvidia/aibox/ai-server
      - type: bind
        source: /data/aibox-common/device-agent/logs
        target: /home/nvidia/aibox/logs
      - type: bind
        source: /data/aibox-common/aimodel
        target: /home/nvidia/aibox/aimodel
      - type: bind
        source: /data/aibox-common/common
        target: /home/nvidia/aibox/common
    ports:
      - 28888:28888
    depends_on:
      - mysql
      - redis
      - es
      - device-server
      - cm-server
    network_mode: "host"
  #ai-server
  ai-server:
    image: #镜像地址
    container_name: ai-server
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/ai-server/logs
        target: /home/nvidia/aibox/logs
      - type: bind
        source: /data/aibox-common/aimodel
        target: /home/nvidia/aibox/aimodel
      - type: bind
        source: /data/aibox-common/common
        target: /home/nvidia/aibox/common
    ports:
      - 28889:28889
    depends_on:
      - mysql
      - redis
      - es
      - device-server
      - cm-server
      - device-agent
    ulimits:
      core: 0
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]   #使用所有gpu
    network_mode: "host"
 
3.docker compose GPU 配置
 
ai-server:
    image: #镜像地址
    container_name: ai-server
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - type: bind
        source: /etc/localtime
        target: /etc/localtime:ro
      - type: bind
        source: /data/aibox-common/ai-server/logs
        target: /home/nvidia/aibox/logs
      - type: bind
        source: /data/aibox-common/aimodel
        target: /home/nvidia/aibox/aimodel
      - type: bind
        source: /data/aibox-common/common
        target: /home/nvidia/aibox/common
    ports:
      - 28889:28889
    depends_on:
      - mysql
      - redis
      - es
      - device-server
      - cm-server
      - device-agent
    ulimits:
      core: 0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
            device_ids: ['0', '3']   #使用0、3号gpu
            capabilities: [gpu]
network_mode: "host"
 
4.docker compose常用命令
 
0.官方文档:https://docs.docker.com/compose/reference/overview/
 
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
 
部分命令选项如下:
 
-f,–file:指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml;
-p, --project-name:指定工程名称,默认使用 docker-compose.yml 文件所在目录的名称;
-v:打印版本并退出;
–log-level:定义日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)。
 
1.help
docker-compose -help查看帮助。
 
2.config
docker-compose config -q验证docker-compose.yml文件。当配置正确时,不输出任何内容,当配置错误时,输出错误信息。
 
3.pull
docker-compose pull拉取服务依赖的镜像。
 
# 拉取工程中所有服务依赖的镜像
docker-compose pull
# 拉取工程中 nginx 服务依赖的镜像
docker-compose pull nginx
# 拉取镜像过程中不打印拉取进度信息
docker-compose pull -q
 
4.up
docker-compose up创建并启动所有服务的容器。指定多个yml加-f选项。以守护进程模式运行加-d选项。
 
# 前台启动
docker-compose up
# 后台启动
docker-compose up -d
# -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml
docker-compose -f docker-compose.yml up -d
 
5.logs
docker-compose logs查看服务容器的输出日志。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过--no-color来关闭颜色。
 
# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color
 
6.ps
docker-compose ps列出工程中所有服务的容器。
 
# 列出工程中所有服务的容器
docker-compose ps
# 列出工程中指定服务的容器
docker-compose ps nginx
 
7.run
docker-compose run在指定服务容器上执行一个命令。
 
# 在工程中指定服务的容器上执行 echo "helloworld"
docker-compose run nginx echo "helloworld"
 
8.exec
docker-compose exec进入服务容器。
 
# 进入工程中指定服务的容器
docker-compose exec nginx bash
# 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器
docker-compose exec --index=1 nginx bash
 
9.pause
docker-compose pause暂停服务容器
 
# 暂停工程中所有服务的容器
docker-compose pause
# 暂停工程中指定服务的容器
docker-compose pause nginx
 
10.unpause
docker-compose unpause恢复服务容器。
 
# 恢复工程中所有服务的容器
docker-compose unpause
# 恢复工程中指定服务的容器
docker-compose unpause nginx
 
11.restart
docker-compose restart重启服务容器。
 
# 重启工程中所有服务的容器
docker-compose restart
# 重启工程中指定服务的容器
docker-compose restart nginx
 
12.start
docker-compose start启动服务容器。
 
# 启动工程中所有服务的容器
docker-compose start
# 启动工程中指定服务的容器
docker-compose start nginx
 
13.stop
docker-compose stop停止服务容器。
 
# 停止工程中所有服务的容器
docker-compose stop
# 停止工程中指定服务的容器
docker-compose stop nginx
 
14.kill
docker-compose kill通过发送SIGKILL信号停止指定服务的容器。
 
# 通过发送 SIGKILL 信号停止工程中指定服务的容器
docker-compose kill nginx
 
15.rm
docker-compose rm 删除服务(停止状态)容器。
 
# 删除所有(停止状态)服务的容器
docker-compose rm
# 先停止所有服务的容器,再删除所有服务的容器
docker-compose rm -s
# 不询问是否删除,直接删除
docker-compose rm -f
# 删除服务容器挂载的数据卷
docker-compose rm -v
# 删除工程中指定服务的容器
docker-compose rm -sv nginx
 
16.down
停止并删除所有服务的容器、网络、镜像、数据卷。
 
# 停止并删除工程中所有服务的容器、网络
docker-compose stop
# 停止并删除工程中所有服务的容器、网络、镜像
docker-compose down --rmi all
# 停止并删除工程中所有服务的容器、网络、数据卷
docker-compose down -v
 
17.images
docker-compose images打印服务容器所对应的镜像。
 
# 打印所有服务的容器所对应的镜像
docker-compose images
# 打印指定服务的容器所对应的镜像
docker-compose images nginx
 
18.port
docker-compose port打印指定服务容器的某个端口所映射的宿主机端口。
 
docker-compose port nginx 80
 
19.top
docker-compose top显示正在运行的进程。
 
# 显示工程中所有服务的容器正在运行的进程
docker-compose top
# 显示工程中指定服务的容器正在运行的进程
docker-compose top nginx
  

  

posted @   Leonardo-li  阅读(1598)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示