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)