在 Windows Server 2019 上运行 Linux 容器。

3

我想在Windows Server 2019上运行Redis和Elasticsearch容器,但是出现了错误。

这是我的Docker Compose文件:

version: '3.7'

services:

  redis:
    image: redis:alpine
    command: redis-server --appendonly yes
    command: redis-server --requirepass 1234Abcd?!
    ports:
     - "6339:6379"
    volumes:
      - /volumes/redis/data:/data
    networks:
     - marketland 

  elasticsearch:
   image: elasticsearch:7.6.2
   volumes:
     - /volumes/elastic/data:/usr/share/elasticsearch/data
   volumes:
      - "esdata:/usr/share/elasticsearch/data"
   hostname: elasticsearch
   ports:
     - "9200:9200"
   environment:
     - discovery.type=single-node
     - bootstrap.memory_lock=true
   ulimits:
      memlock:
        soft: -1
        hard: -1
   networks:
     - marketland
     
  kibana:
   image: kibana:7.6.2
   ports:
     - "5601:5601"
   depends_on:
      - elasticsearch
   environment:
     - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
     - SERVER_NAME=kibana
   networks:
     - marketland
networks:
  marketland:
    external: true
volumes:
  esdata:

执行docker-compose -f docker-compose-pre up命令后,我遇到了这个错误:
Creating services_redis_1 ...
Creating services_elasticsearch_1 ... error
Creating services_redis_1         ... error
ERROR: for services_elasticsearch_1  Cannot create container for service elasticsearch: invalid option: Windows does not support Ulimits

ERROR: for services_redis_1  Cannot create container for service redis: failed to start service utility VM (createreadwrite): hcsshim::CreateComputeSystem 6821998c02d7861bd5fd6ca679dedcf30f9de574485632daed57d8fc872ae323_svm: The virtual machine could not be started because a required feature is not installed.
(extra info: {"SystemType":"container","Name":"6821998c02d7861bd5fd6ca679dedcf30f9de574485632daed57d8fc872ae323_svm","Layers":null,"HvPartition":true,"HvRuntime":{"ImagePath":"C:\\Program Files\\Linux Containers","LinuxInitrdFile":"initrd.img","LinuxKernelFile":"kernel"},"ContainerType":"linux","TerminateOnLastHandleClosed":true})

ERROR: for elasticsearch  Cannot create container for service elasticsearch: invalid option: Windows does not support Ulimits

ERROR: for redis  Cannot create container for service redis: failed to start service utility VM (createreadwrite): hcsshim::CreateComputeSystem 6821998c02d7861bd5fd6ca679dedcf30f9de574485632daed57d8fc872ae323_svm: The virtual machine could not be started because a required feature is not installed.
(extra info: {"SystemType":"container","Name":"6821998c02d7861bd5fd6ca679dedcf30f9de574485632daed57d8fc872ae323_svm","Layers":null,"HvPartition":true,"HvRuntime":{"ImagePath":"C:\\Program Files\\Linux Containers","LinuxInitrdFile":"initrd.img","LinuxKernelFile":"kernel"},"ContainerType":"linux","TerminateOnLastHandleClosed":true})
ERROR: Encountered errors while bringing up the project.

有没有办法在Windows Server 2019上运行这些容器?

** Hyper-v已经启用。


我在Windows Server 2019上的Redis容器也遇到了同样的问题。你有什么新消息吗?你找到任何解决方案了吗? - EM90
3个回答

1

在Windows系统中无法设置ulimit。请删除以下行:

ulimits:
      memlock:
        soft: -1
        hard: -1

它只会解决你的elasticsearch问题。我建议尝试在Linux上使用docker。


0

根据Hamid Bayat的建议,删除ulimits

对于Redis和ElasticSearch容器的容器到主机卷绑定在Windows上看起来也不正确。请参见this SO了解在Windows中应如何定义卷。例如:

而不是:

volumes:
   /volumes/elastic/data:/usr/share/elasticsearch/data

应该是这样的:

volumes:
   - "C:/volumes/elastic/data:/usr/share/elasticsearch/data"

注意:ElasticSearch容器中还有重复的volumes - 您可以将两者放在一个单独的卷下,例如:

而不是:

volumes:
   - /volumes/elastic/data:/usr/share/elasticsearch/data
volumes:
   - "esdata:/usr/share/elasticsearch/data"

应该是:

volumes:
   - /volumes/elastic/data:/usr/share/elasticsearch/data
   - "esdata:/usr/share/elasticsearch/data"

-1

我正在使用Windows10 / Home和Linux容器,下面的docker-compose.yml对我来说运行良好,请尝试一下

version: '3.1'

services:
  redis:
    image: redis:alpine
    container_name: redis
    restart: always
    ports: 
      - 6379:6379
    volumes:
      - ./redis-data:/usr/share/Redis/data

  elastic_search:
    container_name: ElasticSearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    ports:
      - 9200:9200
    volumes:
      - ./es-data/:/usr/share/elasticsearch/data
    environment: 
    - discovery.type=single-node
      
      

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接