docker-compose重新啟動單個容器
這很簡單:使用命令:
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。
注意事項:
-
如果您更改了 ENV 變量,它們將不會在容器中更新。您需要停止它并重新開始。或者,使用單個命令
docker-compose up將檢測更改并重新創建容器。 -
正如許多其他人提到的,如果您更改了
docker-compose.yml文件本身,簡單的重啟將不會應用這些更改。 -
Dockerfile如果您在構建階段(在使用ADD或命令中)將代碼復制到容器中COPY,則每次代碼更改時,您都必須重新構建容器(docker-compose build)。
與您的代碼的相關性
docker-compose restart如果您的代碼通過卷指令將路徑映射到容器中,那么應該可以正常工作,docker-compose.yml如下所示:
services:
servicename:
volumes:
- .:/code
但我建議使用實時代碼重新加載,這可能由您在調試模式下選擇的框架提供(或者,您可以搜索您選擇的語言的自動重新加載包)。添加它應該消除每次代碼更改后重新啟動容器的需要,而不是重新加載內部進程。
使用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'命令對'worker'容器一無所知.使用這樣的命令
docker-compose -f docker-compose.yml restart worker
本文來自博客園,作者:{春光牛牛,yak},轉載請注明原文鏈接:http://www.rzrgm.cn/yakniu/p/16982310.html
歡迎各位大佬們評論指正
QQ討論群:610129902


浙公網安備 33010602011771號