部署时如何启动新建的docker映像?

部署时如何启动新建的docker映像?,docker,gitlab-ci,continuous-deployment,gitlab-ci-runner,docker-registry,Docker,Gitlab Ci,Continuous Deployment,Gitlab Ci Runner,Docker Registry,我已经创建了一个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

我已经创建了一个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:来自守护进程的错误响应:冲突。容器名“/app.test”已由容器“f8e888d6dff6fe5808d7577fe8fddc3e24cd8cc0e248a69d36e7ce51bf339ae6”使用。您必须删除(或重命名)该容器才能重用该名称

因为该容器已经在运行并且具有相同的名称。 我不想在部署时停止所有容器,因为我可以让其他docker容器运行。我还想做
docker-stop-app.test&&docker-rm-app.test
,但是如果由于某种原因容器关闭了,这会给我一个错误,并且不会部署


处理这种情况的正确方法是什么?

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

$docker rm -f <container-id>
$docker rm-f

错误消息意味着您已经有了一个同名容器,docker不允许您有多个同名容器,要解决这个问题,请删除旧容器,只需在终端中执行类似于
$docker ps-a
的操作,您将获得所有容器的列表, 然后用该名称标识容器的id,并通过执行以下操作将其删除:

$docker rm -f <container-id>
$docker rm-f