docker-compose: 为绑定挂载和托管挂载定义挂载
docker-compose: define mount for bind mount and managed mount
我正在使用 docker-compose 来定义我的服务。在docker中,docker卷有两个概念。首先是关于 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 mount
和 managed mount
您可以在 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
虽然我回复的很晚。但也许它会在未来帮助其他人。
以下是这两种类型的配置。 https://docs.docker.com/compose/compose-file/compose-file-v3/#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:
我知道现在回答已经晚了,但我主要是为社区写这篇文章。
答案:
你只需要这样做:
volumes:
- ./root/instantclient_12_2/ojdbc8.jar:/etc/kafka-connect/jars/ojdbc8.jar
- type: bind
source: $HOST/etc
target: /kernel-etc
然后,对于 运行 它在 'easy to debug mode' 中先用 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
祝你好运。
从 Docker 3 OSX 开始,我不得不禁用实验性功能 gRPC 并按照以下方式重新启动:
https://github.com/microsoft/vscode-remote-release/issues/4171
我正在使用 docker-compose 来定义我的服务。在docker中,docker卷有两个概念。首先是关于 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 mount
和 managed mount
您可以在 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
虽然我回复的很晚。但也许它会在未来帮助其他人。 以下是这两种类型的配置。 https://docs.docker.com/compose/compose-file/compose-file-v3/#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:
我知道现在回答已经晚了,但我主要是为社区写这篇文章。
答案:
你只需要这样做:
volumes:
- ./root/instantclient_12_2/ojdbc8.jar:/etc/kafka-connect/jars/ojdbc8.jar
- type: bind
source: $HOST/etc
target: /kernel-etc
然后,对于 运行 它在 'easy to debug mode' 中先用 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
祝你好运。
从 Docker 3 OSX 开始,我不得不禁用实验性功能 gRPC 并按照以下方式重新启动: https://github.com/microsoft/vscode-remote-release/issues/4171