本文的目的是介绍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)
- 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 启动容器,报错:
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
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 学习路线 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
介绍
通过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)]
- docker images 自动下载依赖镜像
- 默认服务名: 文件名 _ 服务名 _ num(集群副本数量)
- 创建docker compose自己默认网络,并将所有启动的容器添加到网络中
- 在同一网络下可以直接使用域名访问
停止
# 前端运行使用 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
- 集群
- 必须有两个或两个以上主节点才能运行
[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 | 假 | 启用管理器自动锁定(需要解锁密钥才能启动停止的管理器) |
–availability | active | 节点的可用性(“活动”|“暂停”|“漏”) |
–cert-expiry | 2160h0m0s | 节点证书的有效期(ns | us | ms | s | m | h) |
–data-path-addr | 用于数据路径流量的地址或接口(格式:<ip | interface>) | |
–dispatcher-heartbeat | 5S | 调度员心跳周期(ns | us | ms | s | m | h) |
–external-ca | 一个或多个证书签名端点的规格 | |
–force-new-cluster | 假 | 强制从当前状态创建一个新的群集 |
–listen-addr | 0.0.0.0:2377 | 监听地址(格式:<ip | interface>:端口) |
–max-snapshots | 0 | 要保留的附加木筏快照的数量 |
–snapshot-interval | 10000 | Raft快照之间的日志条目数 |
–task-history-limit | 5 | 任务历史保留限制 |
# 初始化集群
docker swarm init --advertise-addr 192.168.0.191
2加入一个节点
docker swarm join [OPTIONS] HOST:PORT
名字,简写 | 默认 | 描述 |
---|---|---|
–advertise-addr | 通告地址(格式:<ip | interface>:端口) | |
–availability | active | 节点的可用性(“活动”|“暂停”|“漏”) |
–data-path-addr | 用于数据路径流量的地址或接口(格式:<ip | interface>) | |
–listen-addr | 0.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-retries | 0 | 需要报告不健康的连续失败 |
–health-start-period | 在重新计数到不稳定(ms | s | m | h)之前,容器初始化的开始时间段 | |
–health-timeout | 允许一次检查运行的最长时间(ms | s | m | h) | |
–host | 设置一个或多个自定义主机到IP映射(主机:IP) | |
–hostname | 容器主机名 | |
–label, -l | 服务标签 | |
–limit-cpu | 限制cpu | |
–limit-memory | 0 | 限制记忆 |
–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-memory | 0 | 保留内存 |
–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-delay | 0 | 任务回滚之间的延迟(ns | us | ms | s | m | h)(默认值为0) |
–rollback-failure-action | 回滚失败的操作(“暂停”|“继续”)(默认“暂停”) | |
–rollback-max-failure-ratio | 0 | 在回滚期间容忍的失败率(默认0) |
–rollback-monitor | 0 | (ns | us | ms | s | m | h)(默认5秒)每个任务回滚之后的持续时间 |
–rollback-order | 回滚顺序(“start-first”|“stop-first”)(默认“stop-first”) | |
–rollback-parallelism | 1 | 同时回滚的任务的最大数量(0一次全部回滚) |
–secret | 指定泄露给服务的秘密 | |
–stop-grace-period | 强制杀死一个容器之前等待的时间(ns | us | ms | s | m | h)(默认10秒) | |
–stop-signal | 停止容器的信号 | |
–tty, -t | 假 | 分配一个伪TTY |
–update-delay | 0 | 更新之间的延迟(ns | us | ms | s | m | h)(默认为0) |
–update-failure-action | 更新失败的操作(“暂停”|“继续”|“回滚”)(默认“暂停”) | |
–update-max-failure-ratio | 0 | 更新期间容许的失败率(默认0) |
–update-monitor | 0 | (ns | us | ms | s | m | h)(默认5秒)每个任务更新后的持续时间 |
–update-order | 更新顺序(“start-first”|“stop-first”)(默认为“stop-first”) | |
–update-parallelism | 1 | 同时更新的最大任务数(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-retries | 0 | 需要报告不健康的连续失败 |
–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-memory | 0 | 限制记忆 |
–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-memory | 0 | 保留内存 |
–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-delay | 0 | 任务回滚之间的延迟(ns | us | ms | s | m | h) |
–rollback-failure-action | 回滚失败的操作(“暂停”|“继续”) | |
–rollback-max-failure-ratio | 0 | 在回滚期间容忍的失败率 |
–rollback-monitor | 0 | 每个任务回滚后监视失败的持续时间(ns | us | ms | s | m | h) |
–rollback-order | 回滚顺序(“start-first”|“stop-first”) | |
–rollback-parallelism | 0 | 同时回滚的任务的最大数量(0一次全部回滚) |
–secret-add | 添加或更新服务的秘密 | |
–secret-RM | 去掉一个秘密 | |
–stop-grace-period | 强制杀死一个容器之前的等待时间(ns | us | ms | s | m | h) | |
–stop-signal | 停止容器的信号 | |
–tty, -t | 假 | 分配一个伪TTY |
–update-delay | 0 | 更新之间的延迟(ns | us | ms | s | m | h) |
–update-failure-action | 更新失败的操作(“暂停”|“继续”|“回滚”) | |
–update-max-failure-ratio | 0 | 更新期间容错的失败率 |
–update-monitor | 0 | (ns | us | ms | s | m | h)每个任务更新后的持续时间 |
–update-order | 更新顺序(“start-first”|“stop-first”) | |
–update-parallelism | 0 | 同时更新的最大任务数(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.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有什么好处?等相关知识的信息别忘了在本站进行查找喔。
本文标签: