Mun*_*kin 3 docker docker-compose
假设我有一个包含五个应用程序的docker-compose.yml文件,我通过它启动它们docker-compose up -d
现在有一个我想要使用的其中一个应用程序的更新.所以我拉出这个更新的图像......如何在不停止其他四个容器的情况下停止这个旧容器?
docker-compose down && docker-compose up -d
会停止并重新启动我的所有容器,这是错误的.docker stop app_1 && docker run app_1
会工作,但对我来说似乎"错误",因为它不是docker-compose
命令.那么这个"码头工作者"是什么?
Ant*_*oin 42
在一种用例中,接受的答案不起作用:
假设您有 4 个容器,其中 2 个有新版本,并且您只想更新/重新启动其中一个。
如果您docker-compose up -d
再次执行此操作,这将更新两个容器。
如果您只想定位一个特定容器,可以分两步完成:
docker-compose pull
这只会下载图像,不会执行任何其他操作)docker-compose up -d --no-deps name_of_your_container
--no-deps
避免错误地重新启动更新的容器的依赖项非常重要。
小智 7
要仅重新启动一个容器,您可以简单地执行以下操作:
docker-compose up -d --build image-name
Run Code Online (Sandbox Code Playgroud)
输出将如下所示:
Recreating image-name ... done
Run Code Online (Sandbox Code Playgroud)
再跑docker-compose up -d
一次(没有down
/ stop
/ kill
之前).
初始docker-compose.yml
:
version: "2"
services:
db1:
command: mongod
image: mongo:3.2.4
ports:
- "27020:27017"
db2:
command: mongod
image: mongo:3.2.4
ports:
- "27021:27017"
Run Code Online (Sandbox Code Playgroud)
更新db2
:
version: "2"
services:
db1:
command: mongod
image: mongo:3.2.4
ports:
- "27020:27017"
db2:
command: mongod
image: mongo:3.2.6
ports:
- "27021:27017"
Run Code Online (Sandbox Code Playgroud)
再跑docker-compose up -d
一次:
Pulling db2 (mongo:3.2.6)...
3.2.6: Pulling from library/mongo
47994b92ab73: Pull complete
a3ed95caeb02: Pull complete
71b6becd9768: Pull complete
7d5d40f9dc7b: Pull complete
9dc152e647de: Pull complete
3f1f69340f17: Pull complete
82a29b50f1d2: Pull complete
97869c61a050: Pull complete
50aa2bf3bccc: Pull complete
03913f2c5b05: Pull complete
Digest: sha256:29ee114c0ce96494553cd72f18d92935b36778b77bce167fc9962e442d8c7647
Status: Downloaded newer image for mongo:3.2.6
composetest_db1_1 is up-to-date
Recreating composetest_db2_1
Run Code Online (Sandbox Code Playgroud)
输出的最后两行显示预期的行为.
归档时间: |
|
查看次数: |
1267 次 |
最近记录: |