Moby: 容器已经使用了名称“ / data-container-name”<hash>。 您必须删除(或重命名)该容器才能重用该名称。</hash>

创建于 2016-06-08  ·  49评论  ·  资料来源: moby/moby

docker version

Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:23:11 2016
 OS/Arch:      linux/amd64

docker info

Containers: 87
 Running: 31
 Paused: 0
 Stopped: 56
Images: 55
Server Version: 1.11.2
Storage Driver: overlay
 Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge
Kernel Version: 4.5.1-1.el7.elrepo.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 7.797 GiB
Name: bridge.datanet.ria
ID: HKGW:2SMN:VJFA:XALB:4ETF:ZZE7:OUQJ:GVHX:SXOM:U6PY:EQLR:3P27
Docker Root Dir: /mnt/docker-data
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

其他环境详细信息(AWS,VirtualBox,物理等):
带有运行CentOS7的VMWARE虚拟机管理程序的私有云。

重现此问题的步骤:

  1. 在持续集成/部署周期中,彻底清理Docker上下文后,部署大量容器。
  2. 重复。
  3. 在一段时间(通常为4到6天)内,周期中断。

描述您收到的结果:

Jun  8 05:12:48 bridge docker: time="2016-06-08T05:12:48.799299085+02:00" level=error msg="Clean up Error! Cannot destroy container ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632: No such container: ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632"
Jun  8 05:12:48 bridge docker: time="2016-06-08T05:12:48.856161501+02:00" level=error msg="Handler for POST /v1.22/containers/create returned error: device or resource busy"
Jun  8 09:56:45 bridge docker: time="2016-06-08T09:56:45.266066521+02:00" level=error msg="Handler for POST /v1.22/containers/create returned error: Conflict. The name \"/my-redacted-data-container\" is already in use by container ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632. You have to remove (or rename) that container to be able to reuse that name."
Jun  8 10:35:42 bridge docker: time="2016-06-08T10:35:42.523718617+02:00" level=error msg="Handler for DELETE /v1.23/containers/ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632 returned error: No such container: ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632"
Jun  8 10:37:39 bridge docker: time="2016-06-08T10:37:39.492129195+02:00" level=error msg="Handler for DELETE /v1.23/containers/my-redacted-data-container returned error: No such container: my-redacted-data-container"
Jun  8 10:49:39 bridge docker: time="2016-06-08T10:49:39.924944312+02:00" level=error msg="Handler for DELETE /v1.23/containers/my-redacted-data-container returned error: No such container: my-redacted-data-container"
Jun  8 10:50:03 bridge docker: time="2016-06-08T10:50:03.114422404+02:00" level=error msg="Handler for DELETE /v1.23/containers/ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632 returned error: No such container: ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632"
Jun  8 11:03:29 bridge docker: time="2016-06-08T11:03:29.425100332+02:00" level=error msg="Handler for POST /v1.22/containers/create returned error: Conflict. The name \"/my-redacted-data-container\" is already in use by container ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632. You have to remove (or rename) that container to be able to reuse that name."
Jun  8 11:31:38 bridge docker: time="2016-06-08T11:31:38.704053754+02:00" level=error msg="Handler for POST /v1.23/containers/my-redacted-data-container/rename returned error: No such container: my-redacted-data-container"
Jun  8 11:31:49 bridge docker: time="2016-06-08T11:31:49.934637125+02:00" level=error msg="Handler for DELETE /v1.23/containers/my-redacted-data-container returned error: No such container: my-redacted-data-container"
Jun  8 11:31:51 bridge docker: time="2016-06-08T11:31:51.939043806+02:00" level=error msg="Handler for DELETE /v1.23/containers/my-redacted-data-container returned error: No such container: my-redacted-data-container"

描述您期望的结果:
期望清洁过程能清洁所有东西,但不会收到:

ERROR: for my-redacted-data-container  Conflict. The name "/my-redacted-data-container" is already in use by container ecb293bb1fad3948d9a7366f931a001b7abcbd9c9aefdf27c530be7a4b4cc632. You have to remove (or rename) that container to be able to reuse that name.

您认为重要的其他信息(例如,问题仅偶尔发生):
问题经常发生,每周或取决于更改和集成的次数,甚至每周两次。
再次清理上下文并不能解决问题,甚至不能重启docker,唯一的解决方法是停止docker,删除/var/lib/docker/*所有内容(在我的情况下

kinbug statumore-info-needed versio1.11

最有用的评论

我有一个辅助功能,可以对所有内容进行核对,以便可以连续不断地测试我们的持续运行,循环...。 基本上可以归结为以下几点:

清除容器:

docker rm -f $(docker ps -a -q)

清除图像:

docker rmi -f $(docker images -a -q)

要清除卷:

docker volume rm $(docker volume ls -q)

清除网络:

docker network rm $(docker network ls | tail -n+2 | awk '{if($2 !~ /bridge|none|host/){ print $1 }}')

所有49条评论

您如何清洁那些容器? 为什么清理这些资源(包括卷网络等)会发生任何例外情况?

我有一个辅助功能,可以对所有内容进行核对,以便可以连续不断地测试我们的持续运行,循环...。 基本上可以归结为以下几点:

清除容器:

docker rm -f $(docker ps -a -q)

清除图像:

docker rmi -f $(docker images -a -q)

要清除卷:

docker volume rm $(docker volume ls -q)

清除网络:

docker network rm $(docker network ls | tail -n+2 | awk '{if($2 !~ /bridge|none|host/){ print $1 }}')

我有一个群集集群,出于ci的目的,要在容器上上下移动很多,而我也遇到同样的问题。 就我而言,我不需要重启机器,通常用

$ docker rm -f $(docker ps -a -q)

然后重启docker

$ sudo service docker restart

然后重新创建群集即可解决该问题。

这是典型故障的日志。 我使用ansible在针对群集的群集节点之一上运行docker compose命令。

TASK: [Run docker-compose up] ************************************************* 
failed: [XX.XX.XX.XX] => {"changed": true, "cmd": ["/usr/local/bin/docker-compose", "-f", "/containers/docker-compose/docker-compose-booking-pre-eng-811.yml", "--project-name", "booking-eng-811", "--verbose", "up", "-d"], "delta": "0:00:00.355991", "end": "2016-06-15 12:02:11.623256", "rc": 255, "start": "2016-06-15 12:02:11.267265", "warnings": []}
stderr: compose.config.config.find: Using configuration files: /containers/docker-compose/docker-compose-booking-pre-eng-811.yml
docker.auth.auth.load_config: Found 'auths' section
docker.auth.auth.parse_auth: Found entry (registry=u'my-private-registry', username=u'redacted-username')
compose.cli.command.get_client: docker-compose version 1.7.1, build 0a9ab35
docker-py version: 1.8.1
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
compose.cli.command.get_client: Docker base_url: http://127.0.0.1:4000
compose.cli.command.get_client: Docker version: KernelVersion=3.10.0-327.18.2.el7.x86_64, Os=linux, BuildTime=Fri May 27 17:25:03 UTC 2016, ApiVersion=1.22, Version=swarm/1.2.3, GitCommit=eaa53c7, Arch=amd64, GoVersion=go1.5.4
compose.cli.verbose_proxy.proxy_callable: docker inspect_network <- ('back')
compose.cli.verbose_proxy.proxy_callable: docker inspect_network -> {u'Containers': {u'0f4c1b89e2ae9476a53f07552f678d2914bb391d1d80ab051f74925eb9fbf65a': {u'EndpointID': u'5f07ba0940ffcb4b0c2f0acf5424b6976b28bd8344a56b0464ab6517da884bc8',
                                                                                       u'IPv4Address': u'10.0.0.3/24',
                                                                                       u'IPv6Address': u'',
                                                                                       u'MacAddress': u'02:42:0a:00:00:03',
                                                                                       u'Name': u'registrator_registrator_1'},
                 u'782c1d07d51f6871400da38e8840e81e9300f54a195b9e6ff2e931b23274655a': {u'EndpointID': u'c8654b5b73eaca7f630d6e2c4c898122a3ae6a86bd0cfab68a8654414fe4821a',
                                                                                       u'IPv4Address': u'10.0.0.2/24',
                                                                                       u'IPv6Address': u'',
                                                                                       u'MacAddress': u'02:42:0a:00:00:02',
                                                                                       u'Name': u'stdb1'},
...
compose.network.ensure: Network back declared as external. No new network will be created.
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=False, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=redis1', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=web', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=api_locations', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=booking', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('redis:2.8.21')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'redis-server'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('my-private-registry/web:master')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u"Emmet O'Grady",
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'/bin/sh', u'-c', u'/entrypoint.sh'],
             u'Domainname': u'',
             u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('my-private-registry/api-locations:master')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u"Emmet O'Grady",
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'/bin/sh', u'-c', u'/entrypoint.sh'],
             u'Domainname': u'',
             u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('my-private-registry/booking:eng-811')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'ArgsEscaped': True,
             u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'/bin/sh', u'-c', u'/entrypoint.sh'],
             u'Domainname': u'',
             u'Entrypoint': None,
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=redis1', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.project._get_convergence_plans: web has upstream changes (redis1)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=web', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.project._get_convergence_plans: api_locations has upstream changes (redis1)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=api_locations', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.project._get_convergence_plans: booking has upstream changes (redis1)
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=booking', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.parallel.feed_queue: Pending: set([<Service: web>, <Service: redis1>, <Service: api_locations>, <Service: booking>])
compose.parallel.feed_queue: Starting producer thread for <Service: redis1>
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('redis:2.8.21')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'redis-server'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.cli.verbose_proxy.proxy_callable: docker containers <- (all=True, filters={u'label': [u'com.docker.compose.project=bookingeng811', u'com.docker.compose.service=redis1', u'com.docker.compose.oneoff=False']})
compose.cli.verbose_proxy.proxy_callable: docker containers -> (list with 0 items)
compose.cli.verbose_proxy.proxy_callable: docker inspect_image <- ('redis:2.8.21')
compose.cli.verbose_proxy.proxy_callable: docker inspect_image -> {u'Architecture': u'amd64',
 u'Author': u'',
 u'Comment': u'',
 u'Config': {u'AttachStderr': False,
             u'AttachStdin': False,
             u'AttachStdout': False,
             u'Cmd': [u'redis-server'],
             u'Domainname': u'',
             u'Entrypoint': [u'/entrypoint.sh'],
             u'Env': [u'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
...
compose.service.build_container_labels: Added config hash: ae3be0880fdcb78073a419c6102617b730bfb42171c8204bf51e5c36eb8a85f3
compose.cli.verbose_proxy.proxy_callable: docker create_host_config <- (memswap_limit=None, links=[], devices=None, pid_mode=None, log_config={'Type': u'', 'Config': {}}, cpu_quota=None, read_only=None, dns=None, volumes_from=[], port_bindings={}, security_opt=None, extra_hosts=None, cgroup_parent=None, network_mode='back', shm_size=None, tmpfs=None, cap_add=None, restart_policy={u'MaximumRetryCount': 0, u'Name': u'always'}, dns_search=None, privileged=False, binds=[], ipc_mode=None, mem_limit='64M', cap_drop=None, ulimits=None)
compose.cli.verbose_proxy.proxy_callable: docker create_host_config -> {'Binds': [],
 'Links': [],
 'LogConfig': {'Config': {}, 'Type': u''},
 'Memory': 67108864L,
 'NetworkMode': 'back',
 'PortBindings': {},
 'RestartPolicy': {u'MaximumRetryCount': 0, u'Name': u'always'},
 'VolumesFrom': []}
compose.service.create_container: Creating bookingeng811_redis1_1
compose.cli.verbose_proxy.proxy_callable: docker create_container <- (name=u'bookingeng811_redis1_1', image='redis:2.8.21', labels={u'com.docker.compose.service': u'redis1', u'com.docker.compose.project': u'bookingeng811', u'com.docker.compose.config-hash': 'ae3be0880fdcb78073a419c6102617b730bfb42171c8204bf51e5c36eb8a85f3', u'com.docker.compose.version': u'1.7.1', u'com.docker.compose.oneoff': u'False', u'com.docker.compose.container-number': '1'}, host_config={'NetworkMode': 'back', 'Links': [], 'PortBindings': {}, 'Binds': [], 'RestartPolicy': {u'MaximumRetryCount': 0, u'Name': u'always'}, 'Memory': 67108864L, 'LogConfig': {'Type': u'', 'Config': {}}, 'VolumesFrom': []}, environment=[], volumes={}, detach=True, networking_config={u'EndpointsConfig': {'back': {u'IPAMConfig': {}, u'Aliases': ['redis1']}}})
compose.parallel.parallel_execute_iter: Failed: <Service: redis1>
compose.parallel.feed_queue: Pending: set([<Service: booking>, <Service: api_locations>, <Service: web>])
compose.parallel.feed_queue: <Service: booking> has upstream errors - not processing
compose.parallel.feed_queue: <Service: api_locations> has upstream errors - not processing
compose.parallel.feed_queue: <Service: web> has upstream errors - not processing
compose.parallel.parallel_execute_iter: Failed: <Service: booking>
compose.parallel.feed_queue: Pending: set([])
compose.parallel.parallel_execute_iter: Failed: <Service: api_locations>
compose.parallel.feed_queue: Pending: set([])
compose.parallel.parallel_execute_iter: Failed: <Service: web>
compose.parallel.feed_queue: Pending: set([])

ERROR: for redis1  Error response from daemon: Conflict. The name "/bookingeng811_redis1_1" is already in use by container 5ecf77fc7bbad0548cf34c891ac4d043b2692816b63ed97744924bc1296b8e65. You have to remove (or rename) that container to be able to reuse that name.
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "compose/cli/main.py", line 63, in main
AttributeError: 'ProjectError' object has no attribute 'msg'
docker-compose returned -1

我尝试手动删除名为“ bookingeng811_redis1_1”的容器,但该容器在任何地方都不存在。

那里有同样的问题。

我经常重复这个循环:

  • 码头工人停止%name%
  • 泊坞窗rm -f%name%
  • 码头工人拉%name%
  • 泊坞窗运行%name%

在某个时间点(2-3天),它会停止工作:
docker:来自守护程序的错误响应:冲突。 容器%container_id%已使用名称“%name%” 。 您必须删除(或重命名)该容器才能重用该名称。

当我尝试手动删除容器%container_id%时,它说:
无法删除容器(%container_id%):来自守护程序的错误响应:无此类容器:%container_id%

容器%container_id%不在列表docker ps -a中,也不在文件夹/ var / lib / docker / containers中

也许问题的根源在于使用-f参数删除容器? 因此docker无法正确清理,而docker daemon认为该容器仍然存在。


Docker版本输出:

客户:
版本:1.10.3
API版本:1.22
Go版本:go1.5.3
Git提交:8acee1b
内置:
操作系统/ Arch:linux / amd64

服务器:
版本:1.10.3
API版本:1.22
Go版本:go1.5.3
Git提交:8acee1b
内置:
操作系统/ Arch:linux / amd64

Docker信息输出:

货柜:27
跑步:13
已暂停:0
已停止:14
图片:1512
服务器版本:1.10.3
存储驱动程序:devicemapper
池名称:docker-8:9-521647-pool
池块大小:65.54 kB
基本装置大小:107.4 GB
支持文件系统:xfs
数据文件:/ dev / loop2
元数据文件:/ dev / loop3
使用的数据空间:53.62 GB
数据空间总计:107.4 GB
可用数据空间:53.76 GB
使用的元数据空间:129.9 MB
元数据空间总计:2.147 GB
可用元数据空间:2.018 GB
支持的Udev Sync:true
启用延迟移除:false
启用延迟删除:false
延迟的已删除设备计数:0
数据循环文件:/ var / lib / docker / devicemapper / devicemapper / data
警告:强烈建议不要将环回设备用于生产。 使用--storage-opt dm.thinpooldev或使用--storage-opt dm.no_warn_on_loop_devices=true禁止显示此警告。
元数据循环文件:/ var / lib / docker / devicemapper / devicemapper / metadata
图书馆版本:1.02.93(2015-01-30)
执行驱动程序:native-0.2
记录驱动程序:json-file
外挂程式:
数量:本地
网络:主机桥为空
内核版本:4.5.0-coreos-r1
操作系统:CoreOS 1010.5.0(MoreOS)
OSType:Linux
架构:x86_64
处理器:8
总内存:11.74 GiB
名称:xx-slave
ID: LVGE:QBNADXFP:AWR7NAVO:LQLR :7 CGF:UDOFCTES:VZQJSRZJ:JLKW

Docker使用'nameIndex'保存对容器的引用。 从描述中看,问题似乎是因为nameIndex与删除的容器不同步。 那就是返回错误的地方。

我们也许可以清理不同步的nameIndex来临时解决该问题。 尽管docker除了nameIndex之外还使用了多个索引(例如,linkIndex),所以可能有几个地方需要清理。 从长远来看,找到不同步的地方可能是一个更好的解决方案。

有什么方法可以清除不同步的nameIndexes?
目前,我唯一的解决方案是重新启动不好的节点。 重新启动docker daemon也不好。

对我而言,有效的方法是停止docker daemon,从/var/lib/docker/*删除所有内容,然后再次启动docker。 这是一台持续集成服务器,因此我可以处理没有在Docker上下文中加载任何图像的情况,因此对我来说,YMMV很有效。

我在1.10.3上看到了相同的行为

Containers: 105
 Running: 75
 Paused: 0
 Stopped: 30
Images: 1434
Server Version: 1.10.3
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins: 
 Volume: local
 Network: bridge null host
Kernel Version: 4.5.0-coreos-r1
Operating System: CoreOS 1010.5.0 (MoreOS)
OSType: linux
Architecture: x86_64

我们每天在CoreOS和Docker 1.10.3上都遇到这个问题:

 # journalctl -fu docker
Aug 22 12:37:53 stateless-0.novalocal dockerd[8215]: time="2016-08-22T12:37:53.857617384+10:00" level=error msg="Handler for POST /v1.22/containers/create returned error: Conflict. The name \"/bridge-clockwork\" is already in use by container a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0. You have to remove (or rename) that container to be able to reuse that name."

# docker inspect a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0
Error: No such image or container: a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0

# docker rm -f a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0
Failed to remove container (a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0): Error response from daemon: No such container: a9710d980f2935638df62e67175e28078753818a8b7e1e20bd2840d738dd58c0

在所有情况的50%中,重新启动docker daemon可解决此问题。 在其他情况下,我们必须rm -rf / var / lib / docker。 两种解决方法都会破坏生产工作负载。

@cdwertmann如果必须rm -rf /var/lib/docker ,则意味着存在具有该名称的容器,并且在守护程序重新启动后将重新加载该容器。 如果尝试删除这些容器时遇到相同的错误,那么查看/var/lib/docker/containers/<id>内容将非常有帮助。

@ cpuguy83这是容器目录内的内容:

 # ls /var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/ -lah
total 184K
drwx------.  3 root root 4.0K Aug 20 23:14 .
drwx------. 16 root root 4.0K Aug 23 14:41 ..
-rw-r-----.  1 root root 102K Aug 23 14:39 69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a-json.log
-rw-r--r--.  1 root root 2.9K Aug 23 14:41 config.v2.json
-rw-r--r--.  1 root root  975 Aug 23 14:41 hostconfig.json
-rw-r--r--.  1 root root   17 Aug 20 23:14 hostname
-rw-r--r--.  1 root root  185 Aug 20 23:14 hosts
-rw-r--r--.  1 root root   45 Aug 20 23:14 resolv.conf
-rw-r--r--.  1 root root   71 Aug 20 23:14 resolv.conf.hash
drwx------.  2 root root 4.0K Aug 20 23:14 shm

在config.v2.json中,我可以看到"RemovalInProgress":true

# cat /var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/config.v2.json 
{"State":{"Running":false,"Paused":false,"Restarting":false,"OOMKilled":false,"RemovalInProgress":true,"Dead":true,"Pid":0,"ExitCode":2,"Error":"","StartedAt":"2016-08-20T13:14:17.864964407Z","FinishedAt":"2016-08-23T04:41:29.775183062Z"},"ID":"69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a","Created":"2016-08-20T13:13:58.579971761Z","Path":"/bin/registrator","Args":["-ip","172.16.0.102","-resync","300","consul://172.16.0.102:8500"],"Config":{"Hostname":"sphinx","Domainname":"novalocal","User":"","AttachStdin":false,"AttachStdout":true,"AttachStderr":true,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["-ip","172.16.0.102","-resync","300","consul://172.16.0.102:8500"],"Image":"registry/registrator","Volumes":null,"WorkingDir":"","Entrypoint":["/bin/registrator"],"OnBuild":null,"Labels":{},"StopSignal":"SIGTERM"},"Image":"sha256:3b59190c6c800907d7a62c245bf93888db802b00407002fff7e08fed24e5557e","NetworkSettings":{"Bridge":"","SandboxID":"7713b13649c7964520180342f99914dd4720833ed39a51793ed483c356e0bd85","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"5c0baa715bb76ea2eb5a6a32deb36a8093391ba6c76e55f31768838560c10f22","EndpointID":"","Gateway":"","IPAddress":"","IPPrefixLen":0,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":""}},"Ports":null,"SandboxKey":"/var/run/docker/netns/7713b13649c7","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"IsAnonymousEndpoint":false},"LogPath":"/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a-json.log","Name":"/registrator","Driver":"overlay","MountLabel":"system_u:object_r:svirt_lxc_file_t:s0:c631,c718","ProcessLabel":"system_u:system_r:svirt_lxc_net_t:s0:c631,c718","RestartCount":0,"HasBeenStartedBefore":true,"HasBeenManuallyStopped":false,"MountPoints":{"/etc/localtime":{"Source":"/etc/localtime","Destination":"/etc/localtime","RW":false,"Name":"","Driver":"","Relabel":"ro","Propagation":"rprivate","Named":false},"/tmp/docker.sock":{"Source":"/var/run/docker.sock","Destination":"/tmp/docker.sock","RW":true,"Name":"","Driver":"","Relabel":"","Propagation":"rprivate","Named":false}},"AppArmorProfile":"","HostnamePath":"/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/hostname","HostsPath":"/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/hosts","ShmPath":"/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/shm","ResolvConfPath":"/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/resolv.conf","SeccompProfile":""}

手动删除/var/lib/docker/containers/69d00206523a0a6a996c27d6364ec13cca7c8c1d6e615e41d9da6c675abc717a/并重新启动docker守护程序后,冲突已解决。

在这里看到相同:

docker -v      
Docker version 1.10.3, build 3cd164c
docker-compose -v
docker-compose version 1.8.0, build f3628c7
cat /etc/os-release 
NAME=CoreOS
ID=coreos
VERSION=1068.10.0
VERSION_ID=1068.10.0
BUILD_ID=2016-08-23-0220
PRETTY_NAME="CoreOS 1068.10.0 (MoreOS)"
ANSI_COLOR="1;32"
HOME_URL="https://coreos.com/"
BUG_REPORT_URL="https://github.com/coreos/bugs/issues" 

这就是我启动/停止/重新启动容器的方式:

cat /etc/systemd/system/u\@.service 
[Unit]
Description=%p-%i

# Requirements
Requires=docker.service

# Dependency ordering
After=docker.service

[Service]
Restart=always
RestartSec=10
TimeoutStartSec=60
TimeoutStopSec=15
EnvironmentFile=-/data/domains/%i/env
WorkingDirectory=/data/domains/%i/
ExecStartPre=-/opt/bin/docker-compose rm -f
ExecStart=/bin/bash -euxc "VIRTUAL_HOST=%i /opt/bin/docker-compose up"
ExecStop=/opt/bin/docker-compose stop

[Install]
WantedBy=multi-user.target

我遇到了同样的错误,然后在docker ps -a下什么都没有,但是在/var/lib/docker/containers下有一个带有容器哈希的文件夹,我删除了,仍然没有运气。 我重新启动了docker daemon,它成功了。

https://github.com/docker/compose/issues/3277#issuecomment -238080180的此解决方法也解决了此问题...

@marcelmfs不适合我。 我必须删除整个/var/lib/docker

很奇怪,对我来说,它只是有效。 我会再尝试一次以确保。

@marcelmfs,所以您刚刚删除了

不仅如此,还删除了所有正在运行的容器docker rm -f $(docker ps -aq) ,可能还删除了所有网络,因为它也删除了network/files/local-kv.db

自升级到docker 1.12以来我还没有看到这个问题

还有其他人在1.12.x上看到这一点吗?

我仍然需要升级才能检查...明天我将分配一个升级窗口。

我们的CI服务器已升级,我们删除了删除local-kv.db文件的解决方法。 下周,我将有更多的新闻。

此处相同:1.11.x中存在此问题,但自1.12.x起不再存在

是的,注意到没有人在1.12中抱怨这一点。
不知道我们改变了什么,我确定与命名没有直接关系。

tl; dr: > = 1.10.0的所有版本都会受到影响,但在> = 1.12.0中,发生的可能性要小得多。

我在代码中跟踪了此问题,并且肯定会在所有版本大于等于1.10.0的版本中引入nameIndex结构。 如@yongtang所述,此结构与已删除的容器不同步。

只要nameIndexdaemon.containers不同步,就会发生错误。

问题出在Daemon.create()函数中。 nameIndex第64行中daemon.newContainer()更新,但是daemon.containers第149行中daemon.Register()

如果这两者之间没有任何故障,则泊坞窗处于不一致状态。 在提交https://github.com/docker/docker/commit/114be249f022535f0800bd45987c4e9cd1b321a4 (降落到1.12.0)之前,这是触发问题所需要的。 犯下改变从清理功能docker.ContainerRm ,从未工作在这种情况下,因为它需要注册的容器,以docker.cleanupContainer

但是, docker.cleanupContainer可能会失败,然后才能进行清理。 它仅从第113行nameIndex中删除条目,但在此之前有很多事情可能出错。

以上所有内容都说明了一种简单的守护程序重新启动解决了该问题的情况,因为nameIndex不会持久保存在磁盘上。 我对代码猛烈抨击,试图弄清楚该错误如何在重启后仍然存在,但我不知道如何解决。 我们肯定已经在生产中看到它了,所以目前我正在等待它再次发生,并尝试进一步调查。

我在#27956中修复了此问题的内存版本

在更新到最新版本(1.12.3)之前,这个问题对我来说是突然出现的,我卸载了docker并重新安装了,很遗憾,仍然看到了它。

docker version

Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      linux/amd64

docker info

Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.3
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 11
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null host bridge overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.27-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.919 GiB
Name: moby
ID: XZHZ:262M:ENKG:Z62J:U4OX:FVKN:CGZW:7OCZ:IU5R:D7OM:F3MT:K3ND
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 12
 Goroutines: 22
 System Time: 2016-11-09T01:01:32.4577814Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Insecure Registries:
 127.0.0.0/8

我的工作流程与该线程中提到的工作流程略有不同,但相似之处在于,我正在测试套件中进行大量的容器设置和拆卸。 也可能会感兴趣,这是通过对远程API的请求来完成的。

我对如何进行有点困惑。 如果需要的话,我当然可以准备我的问题的测试用例,但是到目前为止,它是正在进行的一个较大项目的一部分,因此,我需要缩减工作量。

你们有什么建议吗?

@davidglivar您重新启动了守护程序,仍然看到错误?

@ cpuguy83如果通过重新启动守护程序,则表示停止/启动Windows应用程序的

@davidglivar因此,您正在看到以下内容:

  1. 做东西
  2. 得到错误
  3. 重新启动docker4win
  4. 得到错误

@ cpuguy83是的! 我只是经历了几次确认。

@davidglivar您可以docker ps -a看看您是否在那里看到容器吗?

@ cpuguy83 docker ps -a产生容器。 我说这是因为我进行了测试拆卸和准备,但是即使在测试中发现错误并立即创建docker ps -a的子进程时,结果也是一样的。

只是为了跟进前一天的评论:在我的应用程序上下文中,我仍然遇到409错误; 但是,测试脚本(此处)尚未显示任何问题。

我创造了一种可靠的方式来再现这一点。 您可以使用以下python脚本来使任何容器名称冲突:

# pip install docker-py
from docker import Client

NAME = 'foobar'

cli = Client(version='auto')

# Create an invalid security option that will cause an error in
# https://github.com/docker/docker/blob/v1.10.3/daemon/create.go#L82
host_config = cli.create_host_config(security_opt=['invalid_opt'])

# After this, NAME will always conflict until the daemon gets restarted
try:
    cli.create_container(name=NAME, host_config=host_config, image='', command='/')
except:
    pass

在下列情况之一中也可以触发此问题,这些情况解释了需要擦除/var/lib/docker某些情况:

  • /var/lib/docker的索引节点不足
  • /var/lib/docker空间不足
  • /var/lib/docker/<storage-driver>是只读的

该修复程序将更新为docker> = 1.12.0

很抱歉,稍后再返回此问题。

到目前为止,由于删除了解决方法,我们的CI服务器不再遭受此问题的困扰。

Client:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.1
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   23cf638
 Built:
 OS/Arch:      linux/amd64

还通过以下方式遇到此问题:

CentOS 7.2
Docker 1.12.1

/var/lib/docker/containers下没有具有指定哈希值的文件夹,并且重新启动守护程序无效。

@orodbhen如果无法重新启动守护程序,则必须有一个装有该名称的容器。
您可以检查docker ps -a吗?

@ cpuguy83不,没有使用该名称的容器。

我实际上认为这可能是docker-py 。 我想知道这里有多少人在使用它。 看来@petrosagg是。

即使不使用有问题的容器名称,在调用create_container()也会发生这种情况。 但是我对使用docker createdocker run的docker shell命令没有问题。

但是很奇怪,因为它似乎正在打印守护程序产生的错误消息。

@petrosagg使用

@orodbhen您确定您的

只有一个守护程序正在运行:都使用/var/run/docker.sock

我为docker-py创建了一个问题。 但是我还不确信docker并没有引起问题的根本问题。

@orodbhen重新启动守护程序时,可以从加载顺序(特别是加载容器)中获取日志吗?

如果您重新启动了守护程序,那么这不会是引用计数问题。 名称注册器仅保留在内存中,并在守护程序重启时重建。

抱歉,请忽略。 我记录错误的方式出现问题,使错误似乎再次发生。

@orodbhen我不使用

删除后台运行的服务。
泊坞窗服务rm service_name
然后查看docker info它显示c

删除,重新发布在#3277

我也面临着以下错误的问题:

   x Start Mongo: FAILED

-----------------------------------STDERR-----------------------------------
Error response from daemon: Cannot update container 78dc6f6a43d0e6cfb7aa6bba2f0a377bd39620bff79ca308540a13ddd4e62886: container is marked for removal and cannot be "update"
Error response from daemon: removal of container mongodb is already in progress
docker: Error response from daemon: Conflict. The container name "/mongodb" is already in use by container "78dc6f6a43d0e6cfb7aa6bba2f0a377bd39620bff79ca308540a13ddd4e62886". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
-----------------------------------STDOUT-----------------------------------
3.4.1: Pulling from library/mongo
Digest: sha256:aff0c497cff4f116583b99b21775a8844a17bcf5c69f7f3f6028013bf0d6c00c
Status: Image is up to date for mongo:3.4.1
no such container
Running mongo:3.4.1

我只是运行命令:sudo service docker restart

现在一切正常。

我还遇到以下错误:

docker-compose up -d --no-build api
Creating api ... 
Creating api ... error

ERROR: for api  Cannot create container for service api: Conflict. The name "/api" is already in use by container 2788cdc091645f0dcef417f189f9c80fddd3f6f99eaba3771d0f4a87e2295841. You have to remove (or rename) that container to be able to reuse that name.

ERROR: for api  Cannot create container for service api: Conflict. The name "/api" is already in use by container 2788cdc091645f0dcef417f189f9c80fddd3f6f99eaba3771d0f4a87e2295841. You have to remove (or rename) that container to be able to reuse that name.
ERROR: Encountered errors while bringing up the project.

事实证明,从运行现有容器的时间到我尝试重新运行容器时,重新命名了组合文件所在的目录。 我通过运行以下命令进行检查:

docker inspect api | grep -i compose
"com.docker.compose.config-hash": "c0e3e88ad502faf806288e16419dc52b113cae18abeac1769fa0e98a741de48a",
"com.docker.compose.container-number": "1",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "api",
"com.docker.compose.service": "api",
"com.docker.compose.version": "1.14.0"

我注意到项目标签设置为api但是运行该目录的当前目录实际上是api.git因此似乎在我上次运行到现在之间已将其重命名。 我只是简单地将目录重命名为api ,再次启动了容器(无需删除现有容器或重新启动docker),并且一切正常。

我们有许多正在运行的容器,因此重启docker并不是一个最佳解决方案。

docker container prune删除停止的容器。

我不得不强行删除容器docker rm -f /<container_name>

此页面是否有帮助?
0 / 5 - 0 等级