簡體   English   中英

Docker掛載一個空目錄

[英]Docker mounting an empty directory

在Jenkinsx構建容器中工作......我正在嘗試在docker容器中安裝卷。 但是,目錄get已掛載,但源容器中不存在源(主機)目錄中存在的文件。

在這種情況下,主機也是一個docker容器,所以基本上我從docker容器運行docker-compose。

有沒有人遇到過這個問題並有解決方案?

結果如下:

 bash-4.2# pwd /home/jenkins bash-4.2# ls -l datadir/ total 4 -rw-r--r-- 1 root root 4 May 15 20:06 foo.txt bash-4.2# cat docker-compose.yml version: '2.3' services: testing-wiremock: image: rodolpheche/wiremock volumes: - ./datadir:/home/wiremock bash-4.2# df -h Filesystem Size Used Avail Use% Mounted on overlay 95G 24G 71G 25% / tmpfs 7.4G 0 7.4G 0% /dev tmpfs 7.4G 0 7.4G 0% /sys/fs/cgroup /dev/sda1 95G 24G 71G 25% /etc/hosts tmpfs 7.4G 4.0K 7.4G 1% /root/.m2 shm 64M 0 64M 0% /dev/shm tmpfs 7.4G 4.0K 7.4G 1% /home/jenkins/.docker tmpfs 7.4G 1.9M 7.4G 1% /run/docker.sock tmpfs 7.4G 0 7.4G 0% /home/jenkins/.gnupg tmpfs 7.4G 12K 7.4G 1% /run/secrets/kubernetes.io/serviceaccount bash-4.2# docker-compose up -d Creating network "jenkins_default" with the default driver Creating jenkins_testing-wiremock_1 ... done bash-4.2# docker ps |grep wiremock 6293dee408aa rodolpheche/wiremock "/docker-entrypoint.…" 26 seconds ago Up 25 seconds 8080/tcp, 8443/tcp jenkins_testing-wiremock_1 8db3b729c5d2 rodolpheche/wiremock "/docker-entrypoint.…" 21 minutes ago Up 21 minutes (unhealthy) 8080/tcp, 8443/tcp zendeskintegration_rest_1 bd52fb96036d rodolpheche/wiremock "/docker-entrypoint.…" 21 minutes ago Up 21 minutes (unhealthy) 8080/tcp, 8443/tcp zendeskintegration_zendesk_1 bash-4.2# docker exec -it 6293dee408aa bash root@6293dee408aa:/home/wiremock# ls -ltr total 8 drwxr-xr-x 2 root root 4096 May 15 20:06 mappings drwxr-xr-x 2 root root 4096 May 15 20:06 __files 

我可以通過在MacOS系統上運行它來重現該問題:

首先在已經安裝了docker-compose的容器中打開一個shell:

docker run --rm -v $(pwd):/work -v /var/run/docker.sock:/var/run/docker.sock --workdir /work -ti tmaier/docker-compose sh

我映射當前文件夾,以便我可以使用當前項目,就像它在我的主機上一樣。

然后在容器內:

docker-compose run testing-wiremock ls -lart

現在將docker-compose.yml更改為以下內容:

version: '2.3'
services:
  testing-wiremock:
    image: rodolpheche/wiremock
    volumes:
      - /tmp:/home/wiremock/

並再次運行:

docker-compose run testing-wiremock ls -lart

這將顯示主機上/ tmp目錄的內容(docker socket實際運行的位置)。 要測試你甚至可以在/ tmp中創建一個文件夾和一個文件,然后再次運行“docker-compose run”。 您將看到新文件。

故事的道德:如果掛載的文件夾對應於實際運行docker守護程序的主機上的現有文件夾,則映射實際上將起作用。

host - > container - > container(這里掛載是指主機上的路徑)

在您的特定情況下,文件夾是空的,因為主機上沒有安裝路徑(通過運行docker-compose config檢查它)(host =運行Jenkins容器的主機,而不是Jenkins容器本身)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM