docker-compose 的相关说明
docker-compose.yml 文件说明
1# common.env 文件里面格式为
2RACK_ENV=development
3
4
5# arg 和 env_file 和 environment
6联系:因为都是设置变量的
7arg 设置dockerfile的变量
8env_file 设置docker容器的运行环境变量的
9environment 设置docker镜像和容器的环境变量的,会覆盖 dockerfile 里面 env 设置的环境变量
10
11
12# 在工作目录下创建 docker-compose.yml 文件,编辑以下内容
13version: "3"
14# version 版本
15services:
16# 定义服务,这里定义 test-service服务
17 test-service:
18 #指定这个服务的名字
19 image: test-service-image
20 # 镜像的名字
21 container_name: test-service-container
22 # 容器的名字
23 hostname: 192.168.1.65
24 restart: always
25 privileged: true
26 working_dir: /root
27 env_file: # 专门存放变量的文件。如果通过 docker-compose -f FILE 指定了配置文件,则 env_file 中路径会使用配置文件路径。如果有变量名称与 environment 指令冲突,则以后者为准
28 - ./common.env
29 - ./apps/web.env
30 environment: #给运行的容器 存放环境变量
31 - profile=local
32 volumes: #容器与宿主机映射的 注意是 宿主机的内容映射到容器中
33 - /root/docker/:/root/data/ # 把/root/docker 的内容映射到 /root/data
34 expose: # 这个标签与 Dockerfile 中的 EXPOSE 指令一样,用于指定暴露的端口
35 - "30001"
36 ports: #映射端口的标签。使用 HOST:CONTAINER 格式或者只是指定容器的端口,宿主机会随机映射端口。
37 - "30001:30001"
38 extra_hosts: # 加主机名的标签,就是往 /etc/hosts 文件中添加一些记录、
39 - "host:192.168.1.9"
40 dns:
41 - 8.8.8.8
42 - 9.9.9.9
43 command: /bin/sh # 指定容器启动后的命令
44 entrypoint: /start.sh # Dockerfile 中有一个指令叫做 ENTRYPOINT 指令,用于指定接入点,在 docker-compose.yml 中可以定义接入点,覆盖 Dockerfile 中的定义
45 tmpfs: # 挂载临时目录到容器内部,与 run 的参数一样
46 - /run
47 - /tmp
48 labels: # 向容器添加元数据,和 Dockerfile 的 LABEL 指令一个意思。 在 inspect 可以看到
49 - com.example.description: "Accounting webapp"
50 - com.example.department: "Finance"
51 - com.example.label-with-empty-value: ""
52 test-build-service: #指定这个服务的名字
53 build: # 镜像构建的标志
54 context: . # 镜像构建的上下文
55 dockerfile: Dockerfile #镜像构建的上下文
56 args: # 给dockerfile文件传送变量值
57 buildno: 1
58 password: secret
59 container_name: test-build-service
60 # 容器的名字
61 hostname: 192.168.1.65
62 depends_on: # 依赖与某一个容器进行启动
63 - test-service
64 external_links: 与某个容器相通
65 - test-service
66 link: # 与容器连接 低级方法 不推荐使用
67 - test-service
68 logging: #配置日志
69 driver: syslog #默认是json-file 好像可以对接elk
70 options:
71 max-file: "3"
72 max-size: "50m"
73 pid: "host" # PID 模式设置为主机 PID 模式,跟主机系统共享进程命名空间。容器使用这个标签将能够访问和操纵其他容器和宿主机的名称空间。
74 volumes: #挂载一个目录或者一个已存在的数据卷容器,可以直接使用 HOST:CONTAINER 这样的格式,
75 # 或者使用 HOST:CONTAINER:ro 这样的格式,后者对于容器来说,数据卷是只读的,这样可以有效保护宿主机的文件系统。
76 - /var/lib/mysql # 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
77 - /opt/data:/var/lib/mysql # 使用绝对路径挂载数据卷
78 - ./cache:/tmp/cache # 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
79 - ~/configs:/etc/configs/:ro # 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
80 - datavolume:/var/lib/mysql # 已经存在的命名的数据卷。
81 devices: # 设备映射列表
82 - "/dev/ttyUSB0:/dev/ttyUSB0"
docker-compose 命令说明
网址: https://docs.docker.com/compose/reference/up/
一、docker-compose up [options] [SERVICE...]
- options 参数 可以用-d 变成后台运行
- service 服务名
- docker-compose -f ~/docker/docker-compose.yml up -d
二、docker-compose logs [options] [SERVICE...]
1Options:
2 --no-color Produce monochrome output.
3 -f, --follow Follow log output.
4 -t, --timestamps Show timestamps.
5 --tail="all" Number of lines to show from the end of the logs
6 for each container.
三、docker-compose stop alarm-user 停止正在运行的容器
四、docker-compose start alarm-user 运行已经存在的容器
五、docker-compose rm [options] [SERVICE...]
1Usage: rm [options] [SERVICE...]
2
3Options:
4 -f, --force Don't ask to confirm removal
5 -s, --stop Stop the containers, if required, before removing
6 -v Remove any anonymous volumes attached to containers
六、docker-compose ps
1Usage: ps [options] [SERVICE...]
2
3Options:
4 -q, --quiet Only display IDs
5 --services Display services
6 --filter KEY=VAL Filter services by a property
7 -a, --all Show all stopped containers (including those created by the run command)