这很简单:使用命令:

docker-compose restart worker

您可以设置在杀死容器之前等待停止的时间(以秒为单位)

docker-compose restart -t 30 worker

 

重新启动单个节点的其他答案都在目标上docker-compose restart worker.这将弹回该容器,但不包括任何更改,即使您单独重建它.您可以手动stop,rm,create,和start,但也有更容易的方法.

如果您已更新代码,则可以通过以下步骤执行构建和重新加载:

docker-compose up --detach --build

这将首先从任何更改的代码重建您的图像,如果自重用缓存后没有任何更改,这将很快.然后它只替换更改的容器.如果下载的图像过时,您可以在上面的命令之前:

docker-compose pull

首先下载任何已更改的图像(在运行上述命令之前,不会重新启动容器up).不需要进行初始停止.

要仅为单个服务执行此操作,请使用您要指定的服务执行up或pull命令,例如:

docker-compose up --detach --build worker

下面是第一个选项的快速示例,Dockerfile的结构使得代码的频繁变化部分接近结束.事实上,pip install由于该文件很少更改,因此需要单独提取.由于nginx和redis容器是最新的,因此它们没有重新启动.整个过程的总时间不到6秒:

$ time docker-compose -f docker-compose.nginx-proxy.yml up --detach --build
Building counter
Step 1 : FROM python:2.7-alpine
---> fc479af56697
Step 2 : WORKDIR /app
---> Using cache
---> d04d0d6d98f1
Step 3 : ADD requirements.txt /app/requirements.txt
---> Using cache
---> 9c4e311f3f0c
Step 4 : RUN pip install -r requirements.txt
---> Using cache
---> 85b878795479
Step 5 : ADD . /app
---> 63e3d4e6b539
Removing intermediate container 9af53c35d8fe
Step 6 : EXPOSE 80
---> Running in a5b3d3f80cd4
---> 4ce3750610a9
Removing intermediate container a5b3d3f80cd4
Step 7 : CMD gunicorn app:app -b 0.0.0.0:80 --log-file - --access-logfile - --workers 4 --keep-alive 0
---> Running in 0d69957bda4c
---> d41ff1635cb7
Removing intermediate container 0d69957bda4c
Successfully built d41ff1635cb7
counter_nginx_1 is up-to-date
counter_redis_1 is up-to-date
Recreating counter_counter_1 real 0m5.959s
user 0m0.508s
sys 0m0.076s


要在此处重新启动服务,请执行以下步骤:

docker-compose stop -t 1 worker
docker-compose build worker
docker-compose create worker
docker-compose start worker

遵循命令

docker-compose restart worker

将只是停止并启动容器.即,不加载来自docker-compose.xml的任何更改

STOP类似于PC中的休眠.因此,停止/启动不会查找配置文件中所做的任何更改.要从容器配方(docker-compose.xml)重新加载,我们需要删除并创建容器(类似于重启PC)

所以命令如下

docker-compose stop worker       // go to hibernate
docker-compose rm worker // shutdown the PC
docker-compose create worker // create the container from image and put it in hibernate docker-compose start worker //bring container to life from hibernation

 

重启容器

如果您只想重新启动容器:

docker-compose restart servicename

把这个命令想象成“只用它的名字重启容器”,相当于docker restartcommand。

注意事项:

  1. 如果您更改了 ENV 变量,它们将不会在容器中更新。您需要停止它并重新开始。或者,使用单个命令docker-compose up将检测更改并重新创建容器。

  2. 正如许多其他人提到的,如果您更改了docker-compose.yml文件本身,简单的重启将不会应用这些更改。

  3. Dockerfile如果您在构建阶段(在使用ADD或命令中)将代码复制到容器中COPY,则每次代码更改时,您都必须重新构建容器(docker-compose build)。

与您的代码的相关性

docker-compose restart如果您的代码通过卷指令将路径映射到容器中,那么应该可以正常工作,docker-compose.yml如下所示:

services:

  servicename:
volumes:
- .:/code

但我建议使用实时代码重新加载,这可能由您在调试模式下选择的框架提供(或者,您可以搜索您选择的语言的自动重新加载包)。添加它应该消除每次代码更改后重新启动容器的需要,而不是重新加载内部进程。


 

由于其他一些答案包括有关重建的信息,并且我的用例也需要重建,因此我有一个更好的解决方案(与那些相比)。

仍然有一种方法可以轻松地仅针对单个worker容器,该容器在一行中重建 + 重新启动它,尽管它实际上不是单个命令。对我来说最好的解决方案就是重建并重新启动:

docker-compose build worker && docker-compose restart worker

这对我来说同时实现了两个主要目标:

  1. 针对单个worker容器
  2. 在一行中重建并重新启动它

希望这可以帮助其他人到达这里。


 

使用docker-compose文件重启服务

docker-compose -f [COMPOSE_FILE_NAME].yml restart [SERVICE_NAME]

用例1:如果COMPOSE_FILE_NAME是docker-compose.yml并且服务是工作程序

docker-compose restart worker

用例2:如果文件名为sample.yml且service为worker

docker-compose -f sample.yml restart worker

默认情况下,docker-compose.yml如果我们运行docker-compose命令,docker-compose将查找,否则,我们将使用以下标记来指定特定文件名:-f [FILE_NAME].yml


 

这里的答案是在谈论 docker-compose.yml 文件上更改的反映。

但是,如果我想将我所做的更改合并到我的代码中,并且我相信只有通过重建图像并且我使用以下命令才能做到这一点,该怎么办

1. docker 容器停止

docker stop container-id

2. docker容器移除

docker rm container-id

3. docker镜像删除

docker rmi image-id

4.再次组合容器

docker-compose up container-name


简单的'docker'命令对'worker'容器一无所知.使用这样的命令

docker-compose -f docker-compose.yml restart worker


 

docker-compose重新启动单个容器的更多相关文章

  1. Docker Compose—简化复杂容器应用的利器

    Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...

  2. Docker | Compose创建mysql容器

    本文通过Docker Compose来创建mysql容器 在linux服务器上创建文件,用于管理容器 mkdir docker-mysql cd docker-mysql vim docker-com ...

  3. 单机编排之Docker Compose

    当在宿主机启动较多的容器时候,如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用docker 单机编排工具docker compose,Docker Compose 是docker容器的一种 ...

  4. 009.Docker Compose部署及基础使用

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...

  5. 阿里云上Docker Compose部署wordpress

    先上官方文档: https://docs.docker.com/compose/wordpress/ 我的环境: [root@xyjk1002 ~]# cat /etc/redhat-release ...

  6. Docker:Docker Compose 详解

    Docker Compose 概述与安装? 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架 ...

  7. 使用docker compose部署服务

    谈到微服务的话题,技术上我们往往会涉及到多服务.多容器的部署与管理. Docker 有三个主要的作用:Build, Ship和Run.使用docker compose我们可以在Run的层面解决很多实际 ...

  8. 基于Docker Compose的.NET Core微服务持续发布

    是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了.今天,我就通过这篇文章来回答一下. 一.先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K ...

  9. Docker编排工具Docker Compose的使用

    一.安装docker compose 官网推荐方式之一: sudo curl -L "https://github.com/docker/compose/releases/download/ ...

  10. Docker常用命令、Docker Compose、DockerFile实践

    〇.简介 https://hub.docker.com/ 1.架构 2.目录 镜像操作 容器操作 容器运行 Docker示例-MySQL Docker示例-Redis Docker示例-Nacos 使 ...

随机推荐

  1. Matlab导入多个.mat文件进行画图

    目录 0. 实验背景 1. 导入.mat文件存储 1.1 导入.mat文件及作图最简单的方式: 1.2 导入.mat文件及作图的脚本代码 2. plot画图总结 2.1 画散点图 2.1.1 点形状 ...

  2. Activiti02流程基本功能使用

    主要分为一下几个步骤: 1.画图 2.部署流程-把图的信息转入到数据表格中 3.创建流程实例-开始一个流程-实际发起了一个流程 4.执行任务:获取任务+完成任务 1.画图 画了一个简单的流程图,图形文 ...

  3. charles初级使用

    使用charles抓包 一 charles简介 charles 是一个http proxy,是一个中间人,位于客户端Cilent和服务器Server中间. Client发送给Server的请求会经过c ...

  4. JZOJ 4314. 【NOIP2015模拟11.4】老司机

    题目 思路 大意是构造一个数组使它做 \(01\) 背包能表示出所有给定的数 那就暴力枚举每个位置填什么 直到它能表示出所有给定的数 为了保证时间复杂度 我们考虑一个二进制数 \(s\) 表示能构造出 ...

  5. CF1736C1 Good Subarrays (Easy Version)

    题目传送门 思路 给出一种不需要脑子的做法. 首先我们把每个 \(a_i\) 都减去 \(i\),这样原问题就转化为对于每一个左端点 \(i\),寻找一段连续的区间,使得这段区间的最小值加上 \(i- ...

  6. GIT初学者详细指令学习

    参考网站:https://www.liaoxuefeng.com/wiki/896043488029600 基础概念 1.自定义名字和邮箱号 git config --global user.name ...

  7. ajax请求头

    headers: { 'token':token, 'identity':identity, 'Content-Type': 'application/x-www-form-urlencoded' } ...

  8. corundum:100GNIC学习(三)——恢复工程

    前文:(一)https://www.cnblogs.com/shroud404/p/15364812.html (二)https://www.cnblogs.com/shroud404/p/15412 ...

  9. c# RegistryKey 的相关简单操作(转)

    c# RegistryKey 的相关简单操作   以下从'读''写''删除''判断'四个事例实现对注册表的简单操作 1.读取指定名称的注册表的值 private string GetRegistDat ...

  10. vue学习笔记:环境搭建

    一.安装node.js node.js的官方地址为:https://nodejs.org/en/download/ 下载好安装包点击安装,基本就是下一步.下一步.... 安装完成后可以通过以下两种方式 ...