[英]docker-compose: define mount for bind mount and managed mount
我正在使用 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 mount
和managed mount
。
雖然我回答得很晚。 但也許它將來會幫助其他人。 以下是兩種類型的配置。 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:
您可以在 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
我知道現在回答已經晚了,但我主要是為社區寫這篇文章。
你只需要這樣做:
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
祝你好運。
從 OSX 上的 Docker 3 開始,我必須禁用實驗功能 gRPC 並按照以下方式重新啟動: https : //github.com/microsoft/vscode-remote-release/issues/4171
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.