• 【应用】Docker


    Docker 的安装

    基本安装流程

    使用虚拟机系统版本为 centOS 7,使用下列命令查看内核版本,官方建议内核版本应在 3.10 以上

    uname -r
    
    • 1

    内核版本验证满足后,安装 yum 的工具包,,yum-util 提供 yum-config-manager 功能,另两个是 devicemapper 驱动依赖

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    • 1

    设置 yum 源(阿里仓库)

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1

    查看 docker 版本

    yum list docker-ce --showduplicates | sort -r
    
    • 1

    选择相应版本进行安装

    yum install docker-ce-18.03.1.ce-1.el7.centos
    
    • 1

    启动 docker 并设置开机自启

    systemctl start docker
    systemctl enable docker
    
    • 1
    • 2

    查看 docker 版本,验证安装

    [root@localhost ~]# docker version
    Client:
     Version:      18.03.1-ce
     API version:  1.37
     Go version:   go1.9.5
     Git commit:   9ee9f40
     Built:        Thu Apr 26 07:20:16 2018
     OS/Arch:      linux/amd64
     Experimental: false
     Orchestrator: swarm
    
    Server:
     Engine:
      Version:      18.03.1-ce
      API version:  1.37 (minimum version 1.12)
      Go version:   go1.9.5
      Git commit:   9ee9f40
      Built:        Thu Apr 26 07:23:58 2018
      OS/Arch:      linux/amd64
      Experimental: false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    至此 docker 安装完成!

    配置镜像加速

    针对 Docker 客户端版本大于 1.10.0 的用户,可以通过修改 daemon 配置文件/etc/docker/daemon.json来使用加速器

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Docker 常用命令

    镜像相关命令

    搜索镜像

    Usage:  docker search [OPTIONS] TERM
    
    Search the Docker Hub for images
    
    Options:
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print search using a Go template
          --limit int       Max number of search results (default 25)
          --no-trunc        Don't truncate output
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    下载镜像

    Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    
    Pull an image or a repository from a registry
    
    Options:
      -a, --all-tags                Download all tagged images in the repository
          --disable-content-trust   Skip image verification (default true)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看镜像

    Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
    
    List images
    
    Options:
      -a, --all             Show all images (default hides intermediate images)
          --digests         Show digests
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print images using a Go template
          --no-trunc        Don't truncate output
      -q, --quiet           Only show numeric IDs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    删除本地镜像

    Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
    
    Remove one or more images
    
    Options:
      -f, --force      Force removal of the image
          --no-prune   Do not delete untagged parents
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    保存镜像

    Usage:  docker save [OPTIONS] IMAGE [IMAGE...]
    
    Save one or more images to a tar archive (streamed to STDOUT by default)
    
    Options:
      -o, --output string   Write to a file, instead of STDOUT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    加载镜像

    Usage:  docker load [OPTIONS]
    
    Load an image from a tar archive or STDIN
    
    Options:
      -i, --input string   Read from tar archive file, instead of STDIN
      -q, --quiet          Suppress the load output
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    容器相关命令

    查看容器

    Usage:  docker ps [OPTIONS]
    
    List containers
    
    Options:
      -a, --all             Show all containers (default shows just running)
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print containers using a Go template
      -n, --last int        Show n last created containers (includes all states) (default -1)
      -l, --latest          Show the latest created container (includes all states)
          --no-trunc        Don't truncate output
      -q, --quiet           Only display numeric IDs
      -s, --size            Display total file sizes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    停止容器

    Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]
    
    Stop one or more running containers
    
    Options:
      -t, --time int   Seconds to wait for stop before killing it (default 10)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启动已经停止的容器

    Usage:  docker start [OPTIONS] CONTAINER [CONTAINER...]
    
    Start one or more stopped containers
    
    Options:
      -a, --attach               Attach STDOUT/STDERR and forward signals
          --detach-keys string   Override the key sequence for detaching a container
      -i, --interactive          Attach container's STDIN
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    重启容器

    Usage:  docker restart [OPTIONS] CONTAINER [CONTAINER...]
    
    Restart one or more containers
    
    Options:
      -t, --time int   Seconds to wait for stop before killing the container (default 10)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    进入容器

    Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    
    Run a command in a running container
    
    Options:
      -d, --detach               Detached mode: run command in the background
          --detach-keys string   Override the key sequence for detaching a container
      -e, --env list             Set environment variables
      -i, --interactive          Keep STDIN open even if not attached
          --privileged           Give extended privileges to the command
      -t, --tty                  Allocate a pseudo-TTY
      -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
      -w, --workdir string       Working directory inside the container
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    删除容器

    Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
    
    Remove one or more containers
    
    Options:
      -f, --force     Force the removal of a running container (uses SIGKILL)
      -l, --link      Remove the specified link
      -v, --volumes   Remove the volumes associated with the container
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    导出容器

    Usage:  docker export [OPTIONS] CONTAINER
    
    Export a container's filesystem as a tar archive
    
    Options:
      -o, --output string   Write to a file, instead of STDOUT
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    导入容器

    Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
    
    Import the contents from a tarball to create a filesystem image
    
    Options:
      -c, --change list      Apply Dockerfile instruction to the created image
      -m, --message string   Set commit message for imported image
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看运行日志

    Usage:  docker logs [OPTIONS] CONTAINER
    
    Fetch the logs of a container
    
    Options:
          --details        Show extra details provided to logs
      -f, --follow         Follow log output
          --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
          --tail string    Number of lines to show from the end of the logs (default "all")
      -t, --timestamps     Show timestamps
          --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    Dockerfile

    Dockerfile 是用于构建镜像的文本文件,其中包含了构建镜像所需的指令与说明。

    Dockerfile 常用指令

    FROM 指定基础镜像

    FROM centos:7
    
    • 1

    LABEL 为镜像添加元数据

    LABEL maintainer="XXXX
    
    • 1

    MAINTAINER 指定维护者信息

    MAINTAINER zqf
    
    • 1

    RUN 执行命令

    在构建镜像时运行的 Shell 命令

    RUN 
    RUN ["executable", "param1", "param2"]
    
    • 1
    • 2

    CMD 容器启动命令

    启动容器时执行的 Shell 命令,若存在多个则仅最后一条命令生效,且CMD设置的指令会被docker run命令中指定的运行参数所覆盖

    CMD ["executable", "param1", "param2"] (推荐使用)
    CMD ["param1", "param2"] (为 ENTRYPOINT 指令提供预设参数)
    CMD command param1 param2 (在 Shell 中执行)
    
    • 1
    • 2
    • 3

    ENTRYPOINT 入口点

    类似于CMD指令,但是其不会被docker run命令指定的运行参数覆盖,这些运行参数会被当作参数传送给ENTRYPOINT执行。但是, 如果运行docker run时使用了--entrypoint选项,将覆盖 ENTRYPOINT 指令指定的程序

    ENTRYPOINT ["executable", "param1", "param2"]
    ENTRYPOINT command param1 param2
    
    • 1
    • 2

    EXPOSE 声明暴露的端口

    EXPOSE 80 8080
    
    • 1

    ENV 设置环境变量

    ENV JAVA_HOME /usr/local/jdk1.8.0_45
    
    • 1

    ADD 复制文件

    将文件或者目录拷贝到镜像当中,若添加的目标源为 URL 或者压缩包,则会自动进行下载以及解压

    ADD /root/test /var/test
    
    • 1

    COPY 复制文件

    将文件或目录拷贝到镜像当中,用法同ADD,但是不会自动下载和解压

    COPY ./start.sh /start.sh
    
    • 1

    VOLUME 指定挂载点

    指定容器挂载点到宿主机自动生成的目录,一般不会在 dockerfile 中指定,而是在docker run中指定

    VOLUME ["/var/lib/mysql"]
    
    • 1

    WORKDIR 切换工作目录

    切换工作目录,类似cd

    WORKDIR /data
    
    • 1

    USER 设置用户

    RUN\CMD\ENTRYPOINT所设定的命令指定运行的用户

    USER root
    
    • 1

    ARG 设构建参数

    使用该指可以定义变量,并在构建镜像时进行指定

    ARG [=]
    
    • 1

    HEALTHCHECK 指定健康监察参数

    • --interval=DURATION (default: 30s):每隔多长时间探测一次,默认30秒 ;

    • --timeout=DURATION (default: 30s):服务响应超时时长,默认30秒 ;

    • --start-period= DURATION (default: 0s):服务启动多久后开始探测,默认0秒 ;

    • --retries=N (default: 3):认为检测失败几次为宕机,默认3次;

    HEALTHCHECK --interval=5m --timeout=3s --retries=31
    
    • 1

    Dockerfile 简单使用案例

    创建 Dockerfile 文件

    vim Dockerfile
    
    • 1

    在文件中使用 Dockerfile 指令对镜像进行简单配置

    FROM nginx
    RUN echo '

    Test Dockerfile, Hello World!

    ' > /usr/share/nginx/html/index.html
    • 1
    • 2

    在 Dockerfile 所在文件夹执行命令构建镜像(注:最后的点表示当前路径)

    docker build -t nginx:my .
    
    • 1

    执行下列命令,启动 docker 容器

    docker run -d -p 8080:80 nginx:my
    
    • 1

    访问 ip:8080,即可看到修改后的 Nginx 欢迎页

    在这里插入图片描述

    Dockerfile 构建 java 项目镜像

    首先创建 Dockerfile 文件

    vim Dockerfile
    
    • 1

    在文件中对镜像进行配置(打包好的 jar 包应与 Dockerfile 放在同一路径下)

    # 基础镜像
    FROM openjdk:11.0.4
    # author
    MAINTAINER zqf
    ENV TZ=Asia/Shanghai
    # 挂载目录
    VOLUME /tmp
    # 指定路径
    WORKDIR /data
    # 复制jar文件到路径
    ADD loginAndAuthDemo-1.0-SNAPSHOT.jar /data
    # 容器提供的端口号
    EXPOSE 8080
    # 启动Jar包
    ENTRYPOINT ["java","-jar","/data/loginAndAuthDemo-1.0-SNAPSHOT.jar"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    构建镜像

     docker build -t loginandauth:0.0.1 .
    
    • 1
    [root@ZQFLinux docker]# docker build -t loginandauth:0.0.1 .
    Sending build context to Docker daemon  39.24MB
    Step 1/8 : FROM openjdk:11.0.4
     ---> e6ca4006334d
    Step 2/8 : MAINTAINER zqf
     ---> Running in 34ba969baa70
    Removing intermediate container 34ba969baa70
     ---> 15ed171a1587
    Step 3/8 : ENV TZ=Asia/Shanghai
     ---> Running in 79471ebe5815
    Removing intermediate container 79471ebe5815
     ---> 9a3ea2277644
    Step 4/8 : VOLUME /tmp
     ---> Running in c049ae463b63
    Removing intermediate container c049ae463b63
     ---> 5261815b1615
    Step 5/8 : WORKDIR /data
    Removing intermediate container 289b5c915c77
     ---> 31ae4e733e04
    Step 6/8 : ADD loginAndAuthDemo-1.0-SNAPSHOT.jar /data
     ---> 60bcb3ae3760
    Step 7/8 : EXPOSE 8080
     ---> Running in 6b0f285a81d0
    Removing intermediate container 6b0f285a81d0
     ---> 2edcbfdbaab7
    Step 8/8 : ENTRYPOINT ["java","-jar","/data/loginAndAuthDemo-1.0-SNAPSHOT.jar"]
     ---> Running in 2365c4a17fb4
    Removing intermediate container 2365c4a17fb4
     ---> 9921129fb03e
    Successfully built 9921129fb03e
    Successfully tagged loginandauth:0.0.1
    
    • 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

    启动容器

    docker run -d -p 8080:8080 loginandauth:0.0.1
    
    • 1

    访问相应的ip:端口号,测试镜像是否正常运行(也可以通过docker logs查看日志)

    在这里插入图片描述

    Docker Compose

    Docker compose 基本参数

    composr version

    version: '3.7' # 指定 compose 文件的版本
    
    • 1

    services

    services 是定义服务的顶级属性,其下一级的属性就是一个服务

    services:
      aaa: # 服务aaa
      bbb: # 服务bbb
    
    • 1
    • 2
    • 3

    networks

    networks 是定义网络的顶级属性,其下一级属性就是一个网络

    networks:
      aaa: # 网络aaa
        driver: overlay # 网络类型
    
    • 1
    • 2
    • 3

    services 配置参数

    build

      build:                       # 与 image 二选一,指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值
          context: .               # context: 指定 Dockerfile 文件所在的路径
          dockerfile: Dockerfile   # dockerfile: 指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile)
          args:                    # args: Dockerfile 在 build 过程中需要的参数 (等同于 docker container build --build-arg 的作用)
            JAR_FILE: service.jar
          cache_from:              # v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的作用)
          labels:                  # v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用)
          shm_size:                # v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的作用)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ports

        ports:             # 建立宿主机与容器间的端口映射关系,上面是短语法写法,下面是长语法写法
          - target: 80     # 容器端口
            published: 80  # 宿主机端口
            protocol: tcp  # 协议类型
            mode: host     # host 在每个节点上发布主机端口,ingress 对于集群模式端口进行负载均衡
          - target: 443
            published: 443
            protocol: tcp
            mode: host
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    command

        command: # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
    
    • 1

    cgroup_parent

        cgroup_parent: # 为容器指定父 cgroup 组,意味着将继承该组的资源限制
    
    • 1

    container_name

        container_name: # 指定容器的名称 (等同于 docker run --name 的作用)
    
    • 1

    deploy

        deploy:               # v3 版本以上, 指定与部署和运行服务相关的配置, deploy 部分是 docker stack 使用的, docker stack 依赖 docker swarm
          endpoint_mode: vip  # v3.3 版本中新增的功能, 指定服务暴露的方式
                              # vip:Docker 为该服务分配了一个虚拟 IP(VIP), 作为客户端的访问服务的地址
                              # dnsrr:DNS 轮询, Docker 为该服务设置 DNS 条目, 使得服务名称的 DNS 查询返回一个 IP 地址列表, 客户端直接访问其中的一个地址
          labels:             # 指定服务的标签,这些标签仅在服务上设置
          mode: replicated    # 指定 deploy 的模式
                              # global:每个集群节点都只有一个容器
                              # replicated:用户可以指定集群中容器的数量(默认)
          placement:
            constraints:
              - node.role==manager # 指定该服务部署的节点,该指令表示将该服务部署到名为 master 的节点
          replicas: 1         # deploy 的 mode 为 replicated 时, 指定容器副本的数量
          resources:          # 资源限制
            limits:           # 设置容器的资源限制
              cpus: "0.5"     # 设置该容器最多只能使用 50% 的 CPU
              memory: 50M     # 设置该容器最多只能使用 50M 的内存空间
            reservations:     # 设置为容器预留的系统资源(随时可用)
              cpus: "0.2"     # 为该容器保留 20% 的 CPU
              memory: 20M     # 为该容器保留 20M 的内存空间
          restart_policy:     # 定义容器重启策略, 用于代替 restart 参数
            condition: on-failure # 定义容器重启策略(接受三个参数)
                                  # none:不尝试重启
                                  # on-failure:只有当容器内部应用程序出现问题才会重启
                                  # any:无论如何都会尝试重启(默认)
            delay: 10s        # 尝试重启的间隔时间(默认为 0s)
            max_attempts: 6   # 尝试重启次数(默认一直尝试重启)
            window: 120s      # 检查重启是否成功之前的等待时间(即如果容器启动了, 隔多少秒之后去检测容器是否正常, 默认 0s)
          update_config:      # 用于配置滚动更新配置
            parallelism: 1    # 一次性更新的容器数量
            delay: 10s        # 更新一组容器之间的间隔时间
            order: stop-first # v3.4 版本中新增的参数, 回滚期间的操作顺序
                              # stop-first:旧任务在启动新任务之前停止(默认)
                              # start-first:首先启动新任务, 并且正在运行的任务暂时重叠
            failure_action: continue # 定义更新失败的策略
                              # continue:继续更新
                              # rollback:回滚更新
                              # pause:暂停更新(默认)
                              # monitor:每次更新后的持续时间以监视更新是否失败(单位: ns|us|ms|s|m|h) (默认为0)
            max_failure_ratio: 0 # 回滚期间容忍的失败率(默认值为0)
          rollback_config:    # v3.7 版本中新增的参数, 用于定义在 update_config 更新失败的回滚策略
            parallelism: 1    # 一次回滚的容器数, 如果设置为0, 则所有容器同时回滚
            delay: 0          # 每个组回滚之间的时间间隔(默认为0)
            failure_action: continue # 定义回滚失败的策略
                                     # continue:继续回滚
                                     # pause:暂停回滚
            monitor: 10s      # 每次回滚任务后的持续时间以监视失败(单位: ns|us|ms|s|m|h) (默认为0)
            max_failure_ratio: 0 # 回滚期间容忍的失败率(默认值0)
            order: stop-first # 回滚期间的操作顺序
                              # stop-first:旧任务在启动新任务之前停止(默认)
                              # start-first:首先启动新任务, 并且正在运行的任务暂时重叠
    
    • 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

    device

        devices: # 指定设备映射列表(等同于 docker run --device 的作用)
    
    • 1

    depend_on

        depends_on: # 指定依赖容器
          - aaa # 容器 aaa
          - bbb # 容器 bbb
    
    • 1
    • 2
    • 3

    dns

        dns: # 设置 DNS 地址(等同于 docker run --dns 的作用)
        dns_search: # 设置 DNS 搜索域(等同于 docker run --dns-search 的作用)
    
    • 1
    • 2

    temfs

        tmpfs: # v2 版本以上, 挂载目录到容器中, 作为容器的临时文件系统(等同于 docker run --tmpfs 的作用, 在使用 swarm 部署时将忽略该选项)
    
    • 1

    entrypoint

        entrypoint: # 覆盖容器的默认 entrypoint 指令 (等同于 docker run --entrypoint 的作用)
    
    • 1

    env_file

        env_file: # 从指定文件中读取变量设置为容器中的环境变量, 可以是单个值或者一个文件列表, 如果多个文件中的变量重名则后面的变量覆盖前面的变量, environment 的值覆盖 env_file 的值
          RACK_ENV=development
    
    • 1
    • 2

    volumes

        volumes:        # 定义容器和宿主机的数据卷映射关系
          - "/u01:/u01" # 映射容器内的 /u01 到宿主机的 /u01目录
    
    • 1
    • 2

    environment

        environment: # 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)
          - TZ=Asia/Shanghai
          - PORT_TO_EXPOSE=80
          - LOG_PATH=/opt/proj/logs
          - PROFILES_ACTIVE=prod
    
    • 1
    • 2
    • 3
    • 4
    • 5

    expose

        expose: # 暴露端口, 但是不能和宿主机建立映射关系, 类似于 Dockerfile 的 EXPOSE 指令
    
    • 1

    external_links

        external_links: # 连接不在 docker-compose.yml 中定义的容器或者不在 compose 管理的容器(docker run 启动的容器, 在 v3 版本中使用 swarm 部署时将忽略该选项)
    
    • 1

    extra_hosts

        extra_hosts: # 添加 host 记录到容器中的 /etc/hosts 中 (等同于 docker run --add-host 的作用)
    
    • 1

    healthcheck

        healthcheck: # v2.1 以上版本, 定义容器健康状态检查, 类似于 Dockerfile 的 HEALTHCHECK 指令
          test: NONE # 检查容器检查状态的命令, 该选项必须是一个字符串或者列表, 第一项必须是 NONE, CMD 或 CMD-SHELL, 如果其是一个字符串则相当于 CMD-SHELL 加该字符串
                     # NONE:禁用容器的健康状态检测
                     # CMD:test: ["CMD", "curl", "-f", "http://localhost"]
                     # CMD-SHELL:test: ["CMD-SHELL", "curl -f http://localhost || exit 1"] 或者 test: curl -f https://localhost || exit 1
          interval: 1m30s   # 每次检查之间的间隔时间
          timeout: 10s      # 运行命令的超时时间
          retries: 3        # 重试次数
          start_period: 40s # v3.4 以上新增的选项, 定义容器启动时间间隔
          disable: true     # true 或 false, 表示是否禁用健康状态检测和 test: NONE 相同
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    image

        image: # 指定 docker 镜像, 可以是远程仓库镜像、本地镜像
    
    • 1

    init

        init: # v3.7 中新增的参数, true 或 false 表示是否在容器中运行一个 init, 它接收信号并传递给进程
    
    • 1

    isolation

        isolation: # 隔离容器技术, 在 Linux 中仅支持 default 值
    
    • 1

    labels

        labels: # 使用 Docker 标签将元数据添加到容器, 与 Dockerfile 中的 LABELS 类似
    
    • 1

    links

        links: # 链接到其它服务中的容器, 该选项是 docker 历史遗留的选项, 目前已被用户自定义网络名称空间取代, 最终有可能被废弃(在使用 swarm 部署时将忽略该选项)
    
    • 1

    logging

        logging:       # 设置容器日志服务
          driver:      # 指定日志记录驱动程序, 默认 json-file (等同于 docker run --log-driver 的作用)
          options:     # 指定日志的相关参数 (等同于 docker run --log-opt 的作用)
            max-size:  # 设置单个日志文件的大小, 当到达这个值后会进行日志滚动操作
            max-file:  # 日志文件保留的数量
    
    • 1
    • 2
    • 3
    • 4
    • 5

    network_mode

        network_mode: # 指定网络模式 (等同于 docker run --net 的作用, 在使用 swarm 部署时将忽略该选项)
    
    • 1

    init

        init: # v3.7 中新增的参数, true 或 false 表示是否在容器中运行一个 init, 它接收信号并传递给进程
    
    • 1

    isolation

        isolation: # 隔离容器技术, 在 Linux 中仅支持 default 值
    
    • 1

    labels

        labels: # 使用 Docker 标签将元数据添加到容器, 与 Dockerfile 中的 LABELS 类似
    
    • 1

    links

        links: # 链接到其它服务中的容器, 该选项是 docker 历史遗留的选项, 目前已被用户自定义网络名称空间取代, 最终有可能被废弃(在使用 swarm 部署时将忽略该选项)
    
    • 1

    logging

        logging:       # 设置容器日志服务
          driver:      # 指定日志记录驱动程序, 默认 json-file (等同于 docker run --log-driver 的作用)
          options:     # 指定日志的相关参数 (等同于 docker run --log-opt 的作用)
            max-size:  # 设置单个日志文件的大小, 当到达这个值后会进行日志滚动操作
            max-file:  # 日志文件保留的数量
    
    • 1
    • 2
    • 3
    • 4
    • 5

    network_mode

        network_mode: # 指定网络模式 (等同于 docker run --net 的作用, 在使用 swarm 部署时将忽略该选项)
    
    • 1
  • 相关阅读:
    【精讲】vue2框架开发项目(内含css、HTML、js内容均有详细注释)影片排名榜
    直播系统开发:基于Nginx与Nginx-rtmp-module实现
    【浅学Java】哈希桶的模拟实现以及HashMap原码分析
    常见位运算公式使用场景
    浅谈AI人体姿态识别技术的先进性及安防视频监控应用场景
    SQL单表复杂查询where、group by、order by、limit
    (附源码)ssm教学督导管理系统 毕业设计 292346
    TCP 和UDP 的详细介绍
    基于python的数据结构与算法——线性表
    【提示工程】询问GPT返回Json结构数据
  • 原文地址:https://blog.csdn.net/zqf787351070/article/details/128174046