docker-compose

docker-compose.yml 文件说明

# common.env 文件里面格式为
RACK_ENV=development   


# arg 和 env_file 和 environment
联系:因为都是设置变量的
arg             设置dockerfile的变量
env_file        设置docker容器的运行环境变量的
environment     设置docker镜像和容器的环境变量的,会覆盖 dockerfile 里面 env 设置的环境变量  


# 在工作目录下创建 docker-compose.yml 文件,编辑以下内容
version: "3"
# version 版本
services:
# 定义服务,这里定义 test-service服务
  test-service:
  #指定这个服务的名字 
    image: test-service-image
    # 镜像的名字 
    container_name: test-service-container
    # 容器的名字
    hostname: 192.168.1.65
    restart: always
    privileged: true
    working_dir: /root
    env_file:   #  专门存放变量的文件。如果通过 docker-compose -f FILE 指定了配置文件,则 env_file 中路径会使用配置文件路径。如果有变量名称与 environment 指令冲突,则以后者为准
        - ./common.env
        - ./apps/web.env
    environment:  #给运行的容器 存放环境变量
      - profile=local
    volumes:  #容器与宿主机映射的  注意是 宿主机的内容映射到容器中
      - /root/docker/:/root/data/  # 把/root/docker 的内容映射到 /root/data
    expose:  # 这个标签与 Dockerfile 中的 EXPOSE 指令一样,用于指定暴露的端口
      - "30001"
    ports:   #映射端口的标签。使用 HOST:CONTAINER 格式或者只是指定容器的端口,宿主机会随机映射端口。
      - "30001:30001" 
    extra_hosts:  # 加主机名的标签,就是往 /etc/hosts 文件中添加一些记录、
      - "host:192.168.1.9" 
    dns:
      - 8.8.8.8
      - 9.9.9.9
    command: /bin/sh  # 指定容器启动后的命令
    entrypoint: /start.sh  # Dockerfile 中有一个指令叫做 ENTRYPOINT 指令,用于指定接入点,在 docker-compose.yml 中可以定义接入点,覆盖 Dockerfile 中的定义
    tmpfs: #  挂载临时目录到容器内部,与 run 的参数一样
      - /run
      - /tmp
    labels: # 向容器添加元数据,和 Dockerfile 的 LABEL 指令一个意思。  在 inspect 可以看到
      - com.example.description: "Accounting webapp"
      - com.example.department: "Finance"
      - com.example.label-with-empty-value: ""
  test-build-service:   #指定这个服务的名字 
    build:       # 镜像构建的标志
      context: .  # 镜像构建的上下文
      dockerfile: Dockerfile #镜像构建的上下文
      args:   # 给dockerfile文件传送变量值
        buildno: 1
        password: secret
    container_name: test-build-service
    # 容器的名字
    hostname: 192.168.1.65
    depends_on:  # 依赖与某一个容器进行启动
      - test-service
    external_links: 与某个容器相通
      - test-service
    link:    # 与容器连接 低级方法  不推荐使用
      - test-service
    logging:  #配置日志
      driver: syslog  #默认是json-file  好像可以对接elk
      options:
        max-file: "3"
        max-size: "50m"
    pid: "host" # PID 模式设置为主机 PID 模式,跟主机系统共享进程命名空间。容器使用这个标签将能够访问和操纵其他容器和宿主机的名称空间。
    volumes: #挂载一个目录或者一个已存在的数据卷容器,可以直接使用 HOST:CONTAINER 这样的格式,
    # 或者使用 HOST:CONTAINER:ro 这样的格式,后者对于容器来说,数据卷是只读的,这样可以有效保护宿主机的文件系统。
      - /var/lib/mysql   # 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
      - /opt/data:/var/lib/mysql   # 使用绝对路径挂载数据卷
      - ./cache:/tmp/cache   # 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
      - ~/configs:/etc/configs/:ro  # 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
      - datavolume:/var/lib/mysql # 已经存在的命名的数据卷。
    devices: # 设备映射列表
      - "/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…]

Options:
    --no-color          Produce monochrome output.
    -f, --follow        Follow log output.
    -t, --timestamps    Show timestamps.
    --tail="all"        Number of lines to show from the end of the logs
                        for each container.

三、docker-compose stop 停止正在运行的容器

四、docker-compose start 运行已经存在的容器

五、docker-compose rm [options] [SERVICE…]

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal
    -s, --stop    Stop the containers, if required, before removing
    -v            Remove any anonymous volumes attached to containers

六、docker-compose ps

Usage: ps [options] [SERVICE...]

Options:
    -q, --quiet          Only display IDs
    --services           Display services
    --filter KEY=VAL     Filter services by a property
    -a, --all            Show all stopped containers (including those created by the run commad)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值