钢蛋
发布于 2024-08-23 / 253 阅读
0
0

docker-compose up -d报错KeyError: 'ContainerConfig'的解决办法

在执行sudo docker-compose up -d命令时出现以下报错:

Recreating xxxxxx_xxx_xxx_1 ... 

ERROR: for xxxxxx_xxx_xxx_1  'ContainerConfig'

ERROR: for xxx  'ContainerConfig'
Traceback (most recent call last):
  File "/usr/bin/docker-compose", line 33, in <module>
    sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
    command_func()
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 203, in perform_command
    handler(command, command_options)
  File "/usr/lib/python3/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
    result = fn(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1186, in up
    to_attach = up(False)
  File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 1166, in up
    return self.project.up(
  File "/usr/lib/python3/dist-packages/compose/project.py", line 697, in up
    results, errors = parallel.parallel_execute(
  File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
    raise error_to_reraise
  File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
    result = func(obj)
  File "/usr/lib/python3/dist-packages/compose/project.py", line 679, in do
    return service.execute_convergence_plan(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 579, in execute_convergence_plan
    return self._execute_convergence_recreate(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
    containers, errors = parallel_execute(
  File "/usr/lib/python3/dist-packages/compose/parallel.py", line 108, in parallel_execute
    raise error_to_reraise
  File "/usr/lib/python3/dist-packages/compose/parallel.py", line 206, in producer
    result = func(obj)
  File "/usr/lib/python3/dist-packages/compose/service.py", line 494, in recreate
    return self.recreate_container(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 612, in recreate_container
    new_container = self.create_container(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 330, in create_container
    container_options = self._get_container_create_options(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 921, in _get_container_create_options
    container_options, override_options = self._build_container_volume_options(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 960, in _build_container_volume_options
    binds, affinity = merge_volume_bindings(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
    old_volumes, old_mounts = get_container_data_volumes(
  File "/usr/lib/python3/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
    container.image_config['ContainerConfig'].get('Volumes') or {}
KeyError: 'ContainerConfig'

想到docker-compose是通过apt安装的,猜测可能是版本问题,所以按以下步骤,重新对docker-compose进行离线安装

1. 先卸载已有的docker-compose

sudo apt purge docker-compose

2. 下载docker-compose

官方地址:

https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 (其中v2.2.2可以根据需要改成其他版本)

3. 安装

将下载的文件上传到/home/ubuntu目录,并执行以下命令:

# 移动文件到/usr/local/bin/目录,并重命名为docker-compose
sudo mv /home/ubuntu/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 赋予docker-compose可执行权限
sudo chmod +x /usr/local/bin/docker-compose

最后可以查看版本,检查安装情况:

docker-compose -v

输出结果:

Docker Compose version v2.2.2


评论