docker-compose:为bind mount和托管mount定义mount

时间:2016-12-23 10:20:10

标签: docker docker-compose docker-volume

我正在使用docker-compose来定义我的服务。在docker中,docker volume有两个概念。首先是关于bind mount:挂载在主机存储上。

docker run -d --name web-app -v $HOST/location:/container/location -p 80:80 httpd:latest

其次是关于managed mount:抽象存储,不依赖于主机。

docker run -d --name web-app -v /container/location -p 80:80 httpd:latest

我想将这些概念映射到docker-compose。这意味着在使用docker-compose时如何定义bind mountmanaged mount

4 个答案:

答案 0 :(得分:21)

您可以在Docker Compose的volumes部分找到这些Docker概念:https://docs.docker.com/compose/compose-file/#/volumes-volumedriver

示例:

volumes:
  # Just specify a path and let the Engine create a volume
  - /container/location

  # Specify an absolute path mapping
  - ./myfolder/location:/container/location

答案 1 :(得分:4)

尽管我回答得很晚。但这也许会在将来对其他人有所帮助。 以下是这两种类型的配置。 https://docs.docker.com/compose/compose-file/#volumes

    version: "3.2"
    services:
     web:
      image: httpd:latest
      volumes:
       - type: bind
         source: $HOST/location
         target: /container/location
       - type: volume
         source: mydata
         target: /container/location
     volumes:
      mydata:

答案 2 :(得分:3)

我知道答案来晚了,但是我主要是为社区写这本书。

答案:

您只需要这样做:

    volumes:
       - ./root/instantclient_12_2/ojdbc8.jar:/etc/kafka-connect/jars/ojdbc8.jar
       - type: bind
         source: $HOST/etc
         target: /kernel-etc

然后,要使其以“易于调试模式”运行,请首先使用docker-compose up进行操作,并在确保其工作正常时,在末尾添加一个-d,以使其响起来。

重要说明

1-请确保您的docker-compose版本至少为3.2,在我的情况下为3.7。 要更新和删除旧版本,请执行以下操作:

sudo apt-get remove docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

来源:https://github.com/10up/wp-local-docker/issues/58#issuecomment-476786006

2-不要忘记rm您的旧容器,这样您就不会遇到与端口相关的怪异问题。 这是怎么回事:

docker container stop YOUR_CONTAINER_ID
docker container rm YOUR_CONTAINER_ID

祝你好运。

答案 3 :(得分:1)

从OSX上的Docker 3开始,我必须禁用实验功能gRPC并按照以下说明重新启动: https://github.com/microsoft/vscode-remote-release/issues/4171