gpt4 book ai didi

docker - 部署时如何启动新建的Docker镜像?

转载 作者:行者123 更新时间:2023-12-02 19:46:13 25 4
gpt4 key购买 nike

我创建了一个gitlab-ci.yml管道来部署一个简单的react.js应用程序。
我在EC2(AWS)上安装了gitlab-runner,并在管道中构建了镜像并将其推送到注册表。
这是我的gitlab-ci.yml文件:

image: docker:latest
services:
- docker:dind

stages:
- test
- deploy

test-build:
stage: test
only:
- master
tags:
- master
script:
- sudo docker build .

deploy-production:
stage: deploy
only:
- master
tags:
- master
before_script:
# remove the offending package golang-docker-credential-helpers without removing all of docker-compose
- sudo dpkg -r --ignore-depends=golang-docker-credential-helpers golang-docker-credential-helpers
- sudo docker version
- "sudo docker info"
- "sudo docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
script:
- "sudo docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull ."
- "sudo docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
- "sudo docker run -it -d -p 80:80 --rm --name daruma.comunicato ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest"
after_script:
- "sudo docker logout ${CI_REGISTRY}"
when: manual

问题是:如何运行最新的推送图像?
如果我运行 docker run -it ...,管道将失败并显示:

docker: Error response from daemon: Conflict. The container name "/app.test" is already in use by container "f8e888d6dff6fe5808d7577fe8fddc3e24cd8cc0e248a69d36e7ce51bf339ae6". You have to remove (or rename) that container to be able to reuse that name.


因为该容器已经在运行并且具有相同的名称。
我不想在部署时停止所有容器,因为我可以运行其他Docker容器。我也想做 docker stop app.test && docker rm app.test,但是如果由于某种原因,容器关闭了,那将给我一个错误,并且不会部署。
处理这种情况的正确方法是什么?

最佳答案

错误消息表示您已经有一个具有该名称的容器,而docker不允许您拥有多个具有相同名称的容器,要解决此问题,请删除旧容器,只需在终端中执行$docker ps -a之类的操作,您将得到一个您拥有的所有容器的列表,
然后使用该名称标识容器的ID,并通过执行以下操作将其删除:

$docker rm -f <container-id>

关于docker - 部署时如何启动新建的Docker镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63205279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com