www.91084.com

GVKun编程网logo

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本(docker compose version)

8

本文的目的是介绍DockerCompose版本过高的详细情况,特别关注Docker版本不匹配,降低docker-compose版本的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一

本文的目的是介绍Docker Compose 版本过高的详细情况,特别关注Docker 版本不匹配,降低 docker-compose 版本的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Docker Compose 版本过高的机会,同时也不会遗漏关于centos7安装最新版本的docker和docker-compose、Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose、Docker Compose 和 Docker Swarm 和 Docker Service、Docker Compose比Docker Swarm和Docker Stack有什么好处?的知识。

本文目录一览:

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本(docker compose version)

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本(docker compose version)

通过 docker-compose 启动容器,报错:

ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.

  

升级 Docker 过于麻烦,只能降 docker-compose 的版本。

先看一下我们已经安装的 Docker 版本:

[root@Redmine-186 docker-compose]# docker -v
Docker version 1.7.1, build 786b29d/1.7.1

  经查 Docker Compose Github Docs,发现 docker-compose 1.5.2 版本是兼容 Docker 1.7.1 的:Note that Compose 1.5.2 requires Docker 1.7.1 or later.

  好了,开始降级 docker-compose,先卸载:

# pip uninstall docker-compose

  

再安装指定版本:

# pip install docker-compose==1.5.2

  至此,docker-compose 降版本成功!

docker-compose.yml 版本问题

解决完 docker-compse 版本问题适配之后,对着已有的 docker-compose.yml 执行 “,会提示不能正常识别 docker-compose.yml 文件中的内容。究其原因,是因为我们的 docker-compose 1.5.2 只支持 V1 版本的 docker-compose.yml ,那么好,把现在 V2 版本的 docker-compose.yml 改成 V1 版本的格式。

V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml。

先看文档:Compose file versions and upgrading。

V1 版本的 docker-compose.yml 文件格式主要区别就是: 
- 没有开头的 version 声明 
- 没有 services 声明 
- 不支持 depends_on 
- 不支持命名的 volumes, networks, build arguments 声明 
- 其他我没用到的所以没细究的区别

附录

  • How To Install Docker on CentOS 6
  • Docker and docker-compose in CentOS 6
  • 关于 pip 安装时提示 pkg_resources.DistributionNotFound 错误问题
  • CentOS 升级 Python2.7
  • ERROR: The Docker Engine version is less than the minimum required by Compose
  • Docker Compose Github Docs
  • Compose file versions and upgrading

centos7安装最新版本的docker和docker-compose

centos7安装最新版本的docker和docker-compose

1. docker

# 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 安装yum-utils
yum install -y yum-utils

# 设置稳定的存储库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装

# 安装
yum install docker-ce docker-ce-cli containerd.io

# 版本
docker -v

2. docker-compose


curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version

Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose

Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose

Docker 学习路线 11:Docker命令行

Docker CLI (命令行界面) 是一个强大的工具,可让您与 Docker 容器、映像、卷和网络进行交互和管理。它为用户提供了广泛的命令,用于在其开发和生产工作流中创建、运行和管理 Docker 容器和其他 Docker 资源。

安装

要开始使用 Docker CLI,您需要在计算机上安装 Docker。您可以从 Docker 文档的官方安装指南中按照您所使用的操作系统进行安装。

基本命令

以下是一些基本的 Docker CLI 命令,供您熟悉:

  • docker run:从 Docker 映像创建并启动容器
  • docker container:列出正在运行的容器
  • docker image:列出系统中所有可用的映像
  • docker pull:从 Docker Hub 或其他注册表拉取映像
  • docker push:将映像推送到 Docker Hub 或其他注册表
  • docker build:从 Dockerfile 构建映像
  • docker exec:在正在运行的容器中运行命令
  • docker logs:显示容器的日志

Docker Run 选项

docker run 是 Docker CLI 中最重要的命令之一。您可以使用各种选项自定义容器的行为,例如:

  • d, --detach:在后台运行容器
  • e, --env:为容器设置环境变量
  • v, --volume:绑定挂载卷
  • p, --publish:将容器的端口发布到主机
  • name:为容器指定名称
  • restart:指定容器的重启策略
  • rm:容器退出时自动删除容器

Dockerfile

Dockerfile 是一个包含构建 Docker 映像的指令的脚本。您可以使用 Docker CLI 使用 Dockerfile 构建、更新和管理 Docker 映像。

以下是 Dockerfile 的一个简单示例:

# Set the base image to use
FROM alpine:3.7
# Update the system and install packages
RUN apk update && apk add curl
# Set the working directory
WORKDIR /app
# Copy the application file
COPY app.sh .
# Set the entry point
ENTRYPOINT ["./app.sh"]

要构建映像,请使用以下命令:

docker build -t my-image .

Docker Compose

Docker Compose 是一个 CLI 工具,用于使用 YAML 文件定义和管理多容器 Docker 应用程序。它与 Docker CLI 协作,提供了一种一致的方式来管理多个容器及其依赖项。

使用官方的安装指南安装 Docker Compose,然后您可以创建一个 docker-compose.yml 文件来定义和运行多容器应用程序:

version: ''3''
services:  
web:    
image: webapp-image    
ports:      - "80:80"  
database:    
image: mysql    
environment:      - MYSQL_ROOT_PASSWORD=my-secret-pw

使用以下命令运行应用程序:

docker-compose up

总之,Docker CLI 是管理 Docker 容器和资源的强大而多才多艺的工具。一旦熟悉其命令和功能,您将能够轻松开发、维护和部署使用 Docker 的应用程序。

Docker镜像

Docker镜像是一种轻量级、独立、可执行的软件包,其包含了运行应用程序所需的所有组件。这些组件包括:依赖项、库、运行时、系统工具和代码等,以确保应用程序在不同的环境中可以保持一致地运行。

Docker镜像是使用Dockerfile进行构建和管理的。Dockerfile是一个包含了创建Docker镜像所需指令的脚本,提供了一个逐步设置应用程序环境的指南。

使用Docker镜像

Docker CLI提供了多个命令来管理和使用Docker镜像。其中一些重要的命令包括:

  • docker image ls:列出本地系统上所有可用的镜像。
  • docker build:从Dockerfile构建镜像。
  • docker image rm:删除一个或多个镜像。
  • docker pull:从注册表(如Docker Hub)将镜像拉到本地系统。
  • docker push:将镜像推送到仓库。

例如,要从Docker Hub拉取官方的Ubuntu镜像,可以运行以下命令:

docker pull ubuntu:latest

拉取镜像后,可以使用docker run命令创建和运行一个使用该镜像的容器:

docker run -it ubuntu:latest /bin/bash

这个命令将创建一个新的容器,并使用**/bin/bash** shell在容器内启动一个交互式会话。

共享镜像

Docker镜像可以使用容器注册表(如Docker Hub、Google Container Registry或Amazon Elastic Container Registry(ECR))共享和分发。一旦将您的镜像推送到注册表中,其他人就可以轻松地访问和使用它们。

要共享您的镜像,您首先需要使用适当的命名格式对其进行标记:

docker tag <image-id> <username>/<repository>:<tag>

然后,您可以使用以下命令将标记的镜像推送到注册表中:

docker push <username>/<repository>:<tag>

总之,Docker镜像是Docker生态系统中不可或缺的一部分,允许开发人员打包其应用程序、轻松地共享它们,并在不同的环境中确保一致性。通过理解Docker镜像和管理它们的命令,您可以利用容器化的力量,增强您的开发工作流程。在您的开发过程中使用Docker镜像可以大大提高开发效率,减少开发过程中的问题,让您能够更好地专注于应用程序的核心开发。

容器

容器可以被视为轻量级的、独立的可执行软件包,包括运行所需的所有东西,包括代码、运行时、库、环境变量和配置文件。容器将软件与其环境隔离开来,确保其在不同环境下工作一致。

为什么使用容器?

  • 可移植性:容器确保应用程序在不同平台上一致工作,无论是开发人员的笔记本电脑还是生产服务器。这消除了“它在我的机器上运行”的问题。
  • 效率:容器很轻量级,因为它们使用共享资源,没有完整操作系统的开销。这使得启动时间更快,减少资源使用。
  • 可扩展性:容器可以根据工作量轻松地进行缩放,因此非常适合分布式应用程序和微服务。
  • 一致性:容器使得开发人员、QA 和运维团队在整个应用程序生命周期中拥有一致的环境,从而加快了部署流程。
  • 安全性:容器提供了一定程度的隔离,使其与其他容器和底层主机系统隔离开来,有助于维护应用程序的安全性。

使用 Docker CLI 工作

Docker CLI 提供了多个命令,可帮助您创建、管理和与容器交互。一些常用命令包括:

  • docker run:用于创建和启动新容器。
  • docker container ls:列出运行中的容器。
  • docker container stop:停止运行中的容器。
  • docker container rm:删除已停止的容器。
  • docker exec:在运行中的容器中执行命令。
  • docker logs:获取容器的日志,有助于调试问题。

Docker卷

Docker卷是一种用于存储Docker容器生成和使用的数据的机制。它们允许您将数据与容器本身分开,从而轻松备份、迁移和管理持久性数据。

卷的重要性

Docker容器本质上是暂时的,这意味着它们可以轻松地停止、删除或替换。尽管这对应用程序开发和部署非常有利,但处理持久性数据时会带来挑战。这就是卷的作用。它们提供了一种将数据存储和管理与容器的生命周期分开的方法。

卷的类型

Docker中有三种类型的卷:

  • 主机卷:它们存储在主机机器的文件系统中,通常位于/var/lib/docker/volumes目录中。这些可以很容易地访问,但可能会带来可移植性或文件系统兼容性问题。
  • 匿名卷:这些是在运行容器时没有指定卷时自动生成的。它们的ID由Docker生成,也存储在主机机器的文件系统中。
  • 命名卷:与匿名卷类似,命名卷也存储在主机机器的文件系统中。但是,您可以提供自定义名称,这样在其他容器中引用或备份时更容易。

使用Docker CLI管理卷

Docker CLI提供了各种命令来管理卷:

  • docker volume create: 使用给定的名称创建新卷。
  • docker volume ls: 列出系统中的所有卷。
  • docker volume inspect: 提供有关特定卷的详细信息。
  • docker volume rm: 删除卷。
  • docker volume prune: 删除所有未使用的卷。

要在容器中使用卷,可以在docker run命令期间使用-v--volume标志。例如:

docker run -d --name my-container -v my-named-volume:/var/lib/data my-image

此命令使用“my-image”映像创建一个名为“my-container”的新容器,并在容器内部将“my-named-volume”卷挂载到/var/lib/data路径。

Docker 网络

Docker 网络提供了管理容器通信的重要方法。它允许容器使用各种网络驱动程序相互通信并与主机机器通信。通过理解和利用不同类型的网络驱动程序,您可以设计容器网络以适应特定的场景或应用程序需求。

网络驱动程序

Docker 中有几个可用的网络驱动程序。这里,我们将介绍四个最常见的驱动程序:

  • bridge:容器的默认网络驱动程序。它创建了一个私有网络,容器可以相互通信并与主机机器通信。在此网络上的容器可以通过主机网络访问外部资源。
  • host:该驱动程序取消了网络隔离并允许容器共享主机的网络。在网络性能至关重要的情况下,它非常有用,因为它最小化了容器网络的开销。
  • none:该网络驱动程序禁用容器网络。使用此驱动程序的容器在没有任何网络访问的隔离环境下运行。
  • overlay:该网络驱动程序使部署在不同主机上的容器能够相互通信。它专为 Docker Swarm 设计,并且非常适合多主机或基于集群的容器部署。

管理 Docker 网络

Docker CLI 提供了各种命令来管理网络。以下是一些有用的命令:

  • 列出所有网络:docker network ls
  • 检查网络:docker network inspect <network_name>
  • 创建新网络:docker network create --driver <driver_type> <network_name>
  • 将容器连接到网络:docker network connect <network_name> <container_name>
  • 将容器与网络断开连接:docker network disconnect <network_name> <container_name>
  • 删除网络:docker network rm <network_name>

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

Docker Compose 和 Docker Swarm 和 Docker Service

Docker Compose 和 Docker Swarm 和 Docker Service

Docker Compose

介绍

通过yml文件配置,高效管理多个docker,启停

中文文档

https://www.jb51.cc/manual/view/36129.html

安装

# 慢
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 国内镜像
$ sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

授权文件

$ sudo chmod +x /usr/local/bin/docker-compose

测试

$ docker-compose --version
docker-compose version 1.27.4, build 1110ad01

卸载

sudo rm /usr/local/bin/docker-compose

测试使用(官方给的)

1创建文件夹

$ mkdir composetest
$ cd composetest

2写测试程序Python。app.py

import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

3创建py文件依赖文件requirements.txt

flask
redis

4创建Dockerfile文件

FROM python:3.7-alpine
workdir /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
copY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
copY . .
CMD ["flask", "run"]

5创建docker-compose.yml

# version: "3.9" 需要版本对应
version: "3"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

6使用Compose构建并运行应用程序

docker-compose up
# 后台运行
# docker-compose up -d

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87feppxX-1608950922543)(C:\Users\admin\AppData\Local\Temp\1608866566146.png)]

  1. docker images 自动下载依赖镜像
  2. 默认服务名: 文件名 _ 服务名 _ num(集群副本数量)
  3. 创建docker compose自己默认网络,并将所有启动的容器添加到网络中
  4. 在同一网络下可以直接使用域名访问

停止

# 前端运行使用 ctrl + c 停止
# 后台运行使用
docker-compose stop

yml文件规则

version: "3" # docker-compose核心版本
services: # 服务
	fw: # 服务名称
		image: redis # 服务配置
		ports: # 服务配置2
      		- "5000:5000"
      	depends_on: # 依赖(启动顺序)
      		- fw2
      		- redis
      	..... # 容器启动的所有配置
	fw2: 
		image: # 服务配置

官方文档 https://docs.docker.com/compose/compose-file/compose-file-v2/

测试开源程序(官方给的)

创建工作文件夹 my_wordpress/

创建docker-compose.yml

version: '3.3'

services:
   db:
     image: MysqL:5.7
     volumes:
       - db_data:/var/lib/MysqL
     restart: always
     environment:
       MysqL_ROOT_PASSWORD: somewordpress
       MysqL_DATABASE: wordpress
       MysqL_USER: wordpress
       MysqL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       wordpress_DB_HOST: db:3306
       wordpress_DB_USER: wordpress
       wordpress_DB_PASSWORD: wordpress
       wordpress_DB_NAME: wordpress
volumes:
    db_data: {}

后台运行

docker-compose up -d

Docker Swarm

  • 集群
  • 必须有两个或两个以上主节点才能运行

Swarm mode cluster

[root@centos3 ~]# docker swarm --help

Usage:  docker swarm COMMAND

Manage Swarm

Commands:
  ca          管理根CA
  init        初始化集群
  join        加入集群
  join-token  创建加入令牌
  leave       离开集群
  unlock      解锁群
  unlock-key  管理解锁密钥
  update      更新集群

Run 'docker swarm COMMAND --help' for more information on a command.

1初始化一个集群

docker swarm init [OPTIONS]
名字,简写默认描述
–advertise-addr通告地址(格式:<ip | interface>:端口)
–autolock启用管理器自动锁定(需要解锁密钥才能启动停止的管理器)
–availabilityactive节点的可用性(“活动”|“暂停”|“漏”)
–cert-expiry2160h0m0s节点证书的有效期(ns | us | ms | s | m | h)
–data-path-addr用于数据路径流量的地址或接口(格式:<ip | interface>)
–dispatcher-heartbeat5S调度员心跳周期(ns | us | ms | s | m | h)
–external-ca一个或多个证书签名端点的规格
–force-new-cluster强制从当前状态创建一个新的群集
–listen-addr0.0.0.0:2377监听地址(格式:<ip | interface>:端口)
–max-snapshots0要保留的附加木筏快照的数量
–snapshot-interval10000Raft快照之间的日志条目数
–task-history-limit5任务历史保留限制
# 初始化集群
docker swarm init --advertise-addr 192.168.0.191

2加入一个节点

docker swarm join [OPTIONS] HOST:PORT
名字,简写默认描述
–advertise-addr通告地址(格式:<ip | interface>:端口)
–availabilityactive节点的可用性(“活动”|“暂停”|“漏”)
–data-path-addr用于数据路径流量的地址或接口(格式:<ip | interface>)
–listen-addr0.0.0.0:2377监听地址(格式:<ip | interface>:端口)
–token进入群的令牌
# 例如加入一个节点
# 令牌SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2
docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2 192.168.0.191:2377

3获取令牌

docker swarm join-token [OPTIONS] (worker|manager)
# 工作令牌
docker swarm join-token worker
# 管理令牌
docker swarm join-token manager

查看节点

# 查看节点
docker node

Docker Service

docker service COMMAND
命令描述
docker service create创建一项新服务
docker service inspect显示一项或多项服务的详细信息
docker service logs获取服务或任务的日志
docker service ls列出服务
docker service ps列出一项或多项服务的任务
docker service rm删除一项或多项服务
docker service scale扩展一个或多个复制服务
docker service update更新服务

1创建服务

docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
名字,简写默认描述
–config指定配置以暴露给服务
–constraint展示位置限制
–container-label容器标签
–credential-spec托管服务帐户的凭证规范(仅限Windows)
–detach,-d真正立即退出,而不是等待服务收敛
–dns设置自定义DNS服务器
–dns-option设置DNS选项
–dns-search设置自定义DNS搜索域
–endpoint-mode要人端点模式(vip或dnsrr)
–entrypoint覆盖图像的默认入口点
–env,-e设置环境变量
–env-file读入环境变量文件
–group为容器设置一个或多个补充用户组
–health-cmd运行以检查运行状况的命令
–health-interval运行检查之间的时间(ms | s | m | h)
–health-retries0需要报告不健康的连续失败
–health-start-period在重新计数到不稳定(ms | s | m | h)之前,容器初始化的开始时间段
–health-timeout允许一次检查运行的最长时间(ms | s | m | h)
–host设置一个或多个自定义主机到IP映射(主机:IP)
–hostname容器主机名
–label, -l服务标签
–limit-cpu限制cpu
–limit-memory0限制记忆
–log-driver记录驱动程序的服务
–log-OPT记录驱动程序选项
–mode复制服务模式(复制或全局)
–mount将文件系统挂载附加到服务
–name服务名称
–network网络附件
–no-healthcheck禁用任何容器指定的HEALTHCHECK
–no-resolve-image不要查询注册表来解析图像摘要和支持的平台
–placement-PREF添加展示位置首选项
–publish,-p将端口发布为节点端口
–quiet,-q抑制进度输出
–read-only将容器的根文件系统挂载为只读
–replicas任务数量
–reserve-cpu预留cpu
–reserve-memory0保留内存
–restart-condition满足条件时重新启动(“none”|“on-failure”|“any”)(默认为“any”)
–restart-delay重启尝试之间的延迟(ns | us | ms | s | m | h)(默认5秒)
–restart-max-attempts放弃前的最大重启次数
–restart-window用于评估重新启动策略的窗口(ns | us | ms | s | m | h)
–rollback-delay0任务回滚之间的延迟(ns | us | ms | s | m | h)(默认值为0)
–rollback-failure-action回滚失败的操作(“暂停”|“继续”)(默认“暂停”)
–rollback-max-failure-ratio0在回滚期间容忍的失败率(默认0)
–rollback-monitor0(ns | us | ms | s | m | h)(默认5秒)每个任务回滚之后的持续时间
–rollback-order回滚顺序(“start-first”|“stop-first”)(默认“stop-first”)
–rollback-parallelism1同时回滚的任务的最大数量(0一次全部回滚)
–secret指定泄露给服务的秘密
–stop-grace-period强制杀死一个容器之前等待的时间(ns | us | ms | s | m | h)(默认10秒)
–stop-signal停止容器的信号
–tty, -t分配一个伪TTY
–update-delay0更新之间的延迟(ns | us | ms | s | m | h)(默认为0)
–update-failure-action更新失败的操作(“暂停”|“继续”|“回滚”)(默认“暂停”)
–update-max-failure-ratio0更新期间容许的失败率(默认0)
–update-monitor0(ns | us | ms | s | m | h)(默认5秒)每个任务更新后的持续时间
–update-order更新顺序(“start-first”|“stop-first”)(默认为“stop-first”)
–update-parallelism1同时更新的最大任务数(0个一次全部更新)
–user,-u用户名或UID(格式:<名称| uid>:<组| gid>)
–with-registry-auth向注册代理发送注册表认证详细信息
–workdir,-w容器内的工作目录
# 例如,启动一个Nginx服务,暴露8080端口
docker service create -p 8080:80 --name Nginx01 Nginx
# docker run 容器启动,单机版本
# docker service 服务启动,支持扩缩容器
# 查看服务
docker service ps Nginx01
# 查看副本
docker service ls
# 查看详情
docker service inspect Nginx01

2更新服务

docker service update [OPTIONS] SERVICE
名字,简写默认描述
–args服务命令参数
–config-add添加或更新服务上的配置文件
–config-RM删除配置文件
–constraint-add添加或更新展示位置约束
–constraint-RM删除约束
–container-label-add添加或更新容器标签
–container-label-rm用钥匙取出容器标签
–credential-spec托管服务帐户的凭证规范(仅限Windows)
–detach,-d立即退出,而不是等待服务收敛
–dns-add添加或更新自定义DNS服务器
–dns-option-add添加或更新DNS选项
–dns-option-rm删除一个DNS选项
–dns-rm删除自定义的DNS服务器
–dns-search-add添加或更新自定义DNS搜索域
–dns-search-rm删除一个DNS搜索域
–endpoint-mode端点模式(vip或dnsrr)
–entrypoint覆盖图像的默认入口点
–env-add添加或更新环境变量
–env-RM删除一个环境变量
–force即使没有更改需要,也强制更新
–group-add向容器添加一个附加的补充用户组
–group-RM从容器中删除先前添加的补充用户组
–health-cmd运行以检查运行状况的命令
–health-interval运行检查之间的时间(ms | s | m | h)
–health-retries0需要报告不健康的连续失败
–health-retries在重新计数到不稳定(ms | s | m | h)之前,容器初始化的开始时间段
–health-timeout允许一次检查运行的最长时间(ms | s | m | h)
–host加添加或更新自定义主机到IP映射(主机:IP)
–host-RM删除自定义的主机到IP映射(主机:IP)
–hostname容器主机名
–image服务图片标签
–label-add添加或更新服务标签
–label-RM用钥匙去除标签
–limit-cpu限制cpu
–limit-memory0限制记忆
–log-driver记录驱动程序的服务
–log-OPT记录驱动程序选项
–mount-add添加或更新服务上的装载
–mount-RM通过目标路径移除一个安装
–network加添加一个网络
–network-RM删除网络
–no-healthcheck禁用任何容器指定的HEALTHCHECK
–no-resolve-image不要查询注册表来解析图像摘要和支持的平台
–placement-PREF-ADD添加展示位置首选项
–placement-PREF-RM删除展示位置偏好设置
–publish相加添加或更新已发布的端口
–publish-RM通过目标端口删除发布的端口
–quiet,-q抑制进度输出
–read-only将容器的根文件系统挂载为只读
–replicas任务数量
–reserve-cpu预留cpu
–reserve-memory0保留内存
–restart-condition条件满足时重新启动(“none”|“on-failure”|“any”)
–restart-delay重启尝试之间的延迟(ns | us | ms | s | m | h)
–restart-max-attempts放弃前的最大重启次数
–restart-window用于评估重新启动策略的窗口(ns | us | ms | s | m | h)
–rollback回退到先前的规范
–rollback-delay0任务回滚之间的延迟(ns | us | ms | s | m | h)
–rollback-failure-action回滚失败的操作(“暂停”|“继续”)
–rollback-max-failure-ratio0在回滚期间容忍的失败率
–rollback-monitor0每个任务回滚后监视失败的持续时间(ns | us | ms | s | m | h)
–rollback-order回滚顺序(“start-first”|“stop-first”)
–rollback-parallelism0同时回滚的任务的最大数量(0一次全部回滚)
–secret-add添加或更新服务的秘密
–secret-RM去掉一个秘密
–stop-grace-period强制杀死一个容器之前的等待时间(ns | us | ms | s | m | h)
–stop-signal停止容器的信号
–tty, -t分配一个伪TTY
–update-delay0更新之间的延迟(ns | us | ms | s | m | h)
–update-failure-action更新失败的操作(“暂停”|“继续”|“回滚”)
–update-max-failure-ratio0更新期间容错的失败率
–update-monitor0(ns | us | ms | s | m | h)每个任务更新后的持续时间
–update-order更新顺序(“start-first”|“stop-first”)
–update-parallelism0同时更新的最大任务数(0个一次全部更新)
–user,-u用户名或UID(格式:<名称| uid>:<组| gid>)
–with-registry-auth向注册代理发送注册表认证详细信息
–workdir,-w容器内的工作目录
# 为 Nginx01 创建 10 个副本
docker service update --replicas 10 Nginx01 
# 或 使用 scale 命令
docker service scale Nginx01=10

移除服务

docker service rm Nginx01

Docker Compose比Docker Swarm和Docker Stack有什么好处?

Docker Compose比Docker Swarm和Docker Stack有什么好处?

从我读到的内容来看,似乎Docker-Compose是一个在单个主机上创建多个容器的工具,而Docker Swarm是一个可以完全相同但具有更多控制权的工具,并且在Docker Stack的帮助下可以在多个主机上完成.我浏览了教程,也遇到了这个帖子:

docker-compose.yml vs docker-stack.yml what difference?

而且我得出的结论是,当你可以将Docker Swarm与Docker Stack一起使用时,没有理由使用Docker-Compose.他们甚至可以使用相同的docker-compose.yml.

似乎Docker-compose出现在swarm和堆栈之前,并且可能是swarm堆栈的新解决方案使得compose过时,但它仍然是遗留原因.这个想法是否正确?如果没有,在构建开发或生产环境方面,Docker-Compose对Docker Swarm和Docker Stack有什么好处?

最佳答案

It seems that Docker-compose came before the swarm and stack and maybe the new solution of swarm + stack makes compose obsolete,but it still remains for legacy reasons. Is this thinking correct?

简而言之,是的. Compose在所有Swarm之前出现(它起源于名为fig的第三方实用程序).更糟糕的是,甚至还有两个不同的Swarms,旧的Swarm(一个是单独的工具)和Swarm模式(这些日子内置于docker二进制文件中).

它似乎正在演变为内置于Docker中的服务和部署概念.但我猜想Docker Compose和Swarm Mode部署的东西会并存一段时间.

知道Docker Compose基础是一个名为libcompose(https://github.com/docker/libcompose)的库是有益的,其他第三方实用程序使用它来支持用于部署的docker-compose.yml文件格式(参见Rancher和rancher-compose作为示例) .我想他们会努力继续支持libcompose.

我不清楚Docker Swarm部署的东西是否实际上使用了libcompose.在我粗略的搜索中,Swarm模式似乎没有实现libcompose并且做了自己的事情.我不确定这与Docker Compose和libcompose的未来有何关系.你认为合适的解释……

关于Docker Compose 版本过高Docker 版本不匹配,降低 docker-compose 版本的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于centos7安装最新版本的docker和docker-compose、Docker CLI 实战指南:从基础命令到 Dockerfile 构建和 Docker Compose、Docker Compose 和 Docker Swarm 和 Docker Service、Docker Compose比Docker Swarm和Docker Stack有什么好处?等相关知识的信息别忘了在本站进行查找喔。

本文标签: