Compose: bind mount (volume) tidak diperbolehkan untuk direktori file - saja

Dibuat pada 19 Agu 2014  ·  94Komentar  ·  Sumber: docker/compose

Hei,
mencoba memasang satu file (bukan direktori) membuat kesalahan:
Tidak dapat memulai wadah bc0f924401841f2ed92c088cb8089cadad2359126b9f6a3ff15b6cb657835fb0: Setup me-mount namespace mengikat tunggangan pemasangan /etc/eb8/freeIPA/server/etc/krb5.conf ke /var/lib/docker/btrfs/subvolumes/bc0f924401841f2ed92c088cb8089cadad2359126b9f6a3ff15b6cb657835fb0/etc/krb5.conf bukan sebuah direktori

itu diperbolehkan di buruh pelabuhan !!!

fig.yml

Server:
build: docker-freeipa
port:
- "2222: 22"
- "53"
- "80:80"
- "443: 443"
- "389: 389"
- "636: 636"
- "88:88"
- "464: 464"
- "123: 123"

environment:
    PASSWORD:   **************
    FORWARDER:  192.168.***.***

hostname:     freeipa
domainname:   ****.*****

privileged:   true

volumes:
    - /etc/eb8/freeIPA/server/etc/httpd/conf.d/:/etc/httpd/conf.d
    - /etc/eb8/freeIPA/server/etc/httpd/conf/:/etc/httpd/conf
    - /etc/eb8/freeIPA/server/etc/ipa/:/etc/ipa
    - /etc/eb8/freeIPA/server/etc/krb5.conf:/etc/krb5.conf
    - /etc/eb8/freeIPA/server/etc/pki-ca/:/etc/pki-ca
    - /etc/eb8/freeIPA/server/etc/ssh/:/etc/ssh
    - /etc/eb8/freeIPA/server/etc/sssd/:/etc/sssd
    - /etc/eb8/freeIPA/server/root/:/root
    - /etc/eb8/freeIPA/server/var/cache/ipa:/var/cache/ipa
    - /etc/eb8/freeIPA/server/var/lib/dirsrv/:/var/lib/dirsrv
    - /etc/eb8/freeIPA/server/var/lib/ipa-client/:/var/lib/ipa-client
    - /etc/eb8/freeIPA/server/var/lib/ipa/:/var/lib/ipa
    - /etc/eb8/freeIPA/server/var/log/:/var/log

``

arevolumes kinbug

Komentar yang paling membantu

@tokopedia

Jika file atau direktori yang Anda coba bind-mount tidak ada, pekerja galangan tidak memiliki cara untuk menentukan apakah Anda mengharapkan file atau direktori, dalam hal itu (jika /usr/src/app/app.conf tidak tidak ada), daemon buruh pelabuhan membuat direktori di lokasi itu, dan bind-mount di container.
Perhatikan bahwa kami mencoba menghentikan / menghapus pembuatan jalur otomatis (dan malah menghasilkan kesalahan), tetapi ini terlalu banyak perubahan yang tidak kompatibel dengan versi sebelumnya (beberapa orang bergantung pada perilaku ini), jadi kami harus mempertahankan perilaku ini.

Saya cukup frustrasi setelah enam jam mencoba kasus penggunaan ini dan sekarang menemukan itu tidak mungkin.
Mengapa tidak menambahkan sesuatu seperti "file flag" ke deklarasi volume, mengingat kita dapat menentukan opsi pemasangan tambahan seperti :ro dan :rw ?

volumes:
  - "./config.json:/app/config.json:rwf"

Ketika saya memetakan file kontainer ke file host, saya berharap file host akan dibuat (disalin dari kontainer) pada inisialisasi kontainer.
Sayangnya, cukup umum untuk menemukan container yang memiliki file konfigurasi dimasukkan langsung ke direktori root aplikasi, dan jelas Anda tidak ingin "memperbesar" seluruh root. Dalam hal ini akan sangat berguna jika ini berhasil.

Semua 94 komentar

Ya, ini membuatku kembali!

Apakah ini berfungsi setelah Anda fig kill dan fig rm ? Saya curiga itu bug Docker dengan VolumesFrom : https://github.com/docker/fig/issues/328#issuecomment -50926263

Apakah ini berfungsi setelah Anda fig kill dan fig rm ? Saya curiga itu bug Docker dengan VolumesFrom : https://github.com/docker/fig/issues/328#issuecomment -50926263

tidak terlalu,

Kesalahan yang sama di sini saat mencoba menggunakan volume dengan file ...

Tidak berfungsi pada VFS di sini:

Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
Execution Driver: native-0.2
Kernel Version: 3.10.42-xenU-12-e888729-x86_64
Operating System: Ubuntu 14.04 LTS

Tetapi berfungsi, itu berfungsi dengan baik di komputer pribadi saya:

$ docker info
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
Execution Driver: native-0.2
Kernel Version: 3.13.0-35-generic
Operating System: Ubuntu 14.04.1 LTS

Sebagai catatan, keluaran versi buruh pelabuhan adalah sama, tapi saya cukup yakin itu tidak begitu penting karena saya ingat itu bekerja dengan sempurna juga di 1.2 ...

Client version: 1.3.0
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): c78088f
OS/Arch (client): linux/amd64
Server version: 1.3.0
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): c78088f

Jadi satu-satunya perbedaan yang dapat saya temukan adalah versi kernel. Yang pertama (yang tidak berfungsi) adalah VFS, yang kedua adalah komputer saya. Apakah itu membantu untuk memahami apa yang terjadi?

Humm, maaf untuk polusi. Salah ketik sederhana. Sepertinya bukan aku yang pertama tertangkap oleh ini.

Jika "-v" dipanggil di lokasi yang tidak ada di sisi host (karena salah ketik), ini akan membuat direktori kosong dan semua direktori induk jika perlu. Kemudian ketika mencoba untuk memasang direktori kosong ini pada penampung dan bahwa sebuah file sudah ada di lokasi target, pesan ini akan muncul.

Saya tidak berpikir buruh pelabuhan harus diizinkan untuk membuat direktori di sisi host. Haruskah saya menghapus komentar saya sebelumnya (dan yang ini?) Untuk menghindari mencemari utas ini?

Saya akan menambahkan dua sen saya / benjolan utas ini. Akan sangat membantu jika dapat menambahkan satu file di docker-compose . Saat ini saya harus memiliki direktori terpisah untuk masing-masing container saya, tetapi kebanyakan hanya memiliki 1 atau 2 file di dalamnya. Akan sangat bagus untuk meletakkan semuanya di folder yang sama dan kemudian mereferensikannya satu per satu.

Saya pikir ada bug di beberapa titik seputar melakukan volume-dari yang termasuk file yang dipasang di bind.
Saya tidak berpikir ini menjadi masalah hari ini.

Tampaknya ini adalah masalah yang berulang.

Sesuai dengan referensi @ md5 dan komentar lainnya, saya dengan setia dapat mereproduksi perilaku ini dalam kondisi berikut:

  • CentOS 7
  • Docker 1.5.0 (paket yum docker-1.5.0-28.el7.centos)
  • buruh pelabuhan-menulis 1.1.0

Perilaku ini tidak ada dalam paket yum docker-1.5.0-1.el7 .

Contoh:

Menggunakan deklarasi layanan sederhana:

test:
  image: nginx
  ports:
    - "80:80"
  volumes:
    - sites/test.conf:/etc/nginx/conf.d/default.conf

Dalam upaya untuk mengikat mount file daripada direktori, docker-compose menghasilkan yang berikut:

docker create_container <- (name=u'webcluster_test_1', image=u'nginx:latest', environment={}, volumes={u'/etc/nginx/conf.d/default.conf': {}}, detach=True, ports=[u'80'])
file exists at %!s(MISSING), can't create volume there

Namun, perintah setara docker run akan berhasil:

docker run --name test -d -p "80:80" \
  -v ${PWD}/sites/test.conf:/etc/nginx/conf.d/default.conf \
  nginx

@dayglojesus Anda tampaknya menggunakan versi pengembangan dari Docker.
Dapatkah Anda memberikan hasil dari docker version ?
Pesan kesalahan yang Anda miliki di sini berasal dari komit ini: https://github.com/docker/docker/commit/b0ed2da4418d62d2d7b940b49e0e89bdcd264569

Komit ini tidak dalam versi rilis Docker dan memiliki perbaikan di master, dan merupakan bagian dari seri 1.6 RC.

@ cpuguy83 Ini melaporkan ini adalah versi 1.5.0, bukan 1.6 RC:

Docker version 1.5.0-dev, build fc0329b/1.5.0

Ini adalah build "resmi" yang tersedia di CentOS 7 yum repo, tidak ada tweak untuk dev repo.

Mengapa docker-compose menunjukkan perilaku ini dan docker run tidak? Apakah ini bug di Docker atau docker-compose ?

Beritahu saya jika Anda membutuhkan info lebih lanjut.

@dayglojesus Ya, ini bukan versi rilis buruh pelabuhan 1.5.0-dev dibangun beberapa saat setelah buruh pelabuhan 1.5.0 terputus.
Bug tidak ada dalam versi docker yang dirilis.

@ cpuguy83 Saya mengerti. Aneh, saya bertanya-tanya bagaimana paket ini bisa masuk ke repo? Apakah Anda mengetahui paket yum mana yang berkorelasi dengan rilis Docker 1.5.0 aktual untuk CentOS 7?

Saya tidak yakin ... ping @ lsm5

@dayglojesus jadi yang Anda instal adalah buruh pelabuhan yang dikompilasi ulang RHEL yang memiliki beberapa patch redhat di atas buruh pelabuhan hulu. Jika itu adalah sesuatu yang tidak Anda pedulikan dan hanya menginginkan sebuah rpm dengan buruh pelabuhan upstream, silakan lihat: http://wiki.centos.org/Cloud/Docker . Ini menyebutkan repo tambahan yang berisi rpm yang saya buat secara terpisah sebagai bagian dari SIG CentOS virt.

Jika Anda benar-benar peduli dengan hal-hal rhel di sana, harap laporkan bug di https://bugzilla.redhat.com . HTH

Mengajukan tiket RHEL untuk masalah ini. https://bugzilla.redhat.com/show_bug.cgi?id=1209625
Terima kasih, @ lsm5.

Mmm, dapatkan hal yang sama di ubuntu 14.04lts dengan docker 1.5

kebetulan saya di linux mint / ubuntu, file tidak dipasang sama sekali (mereka seharusnya menimpa wadah tetapi tidak)

Saya memiliki masalah yang sama dengan etc-localtime di

  • Linux guest.vm 3.13.0-49-generik # 81-Ubuntu
  • x86_64 x86_64 x86_64 GNU / Linux
  • Deskripsi: Ubuntu 14.04.2 LTS
  • Rilis: 14.04.0
  • Codename: terpercaya
  • buruh pelabuhan versi 1.5

Jika Anda mengalami masalah, +1 tidak akan membantu, terutama karena kemungkinan besar tidak ada hubungannya sama sekali dengan masalah OP.

Harap sertakan perintah buruh pelabuhan apa yang Anda jalankan, apa yang ingin Anda lihat, dan apa yang sebenarnya Anda lihat.
Juga termasuk keluaran dari docker info dan docker version .
Terima kasih.

@ cpuguy83 ok, ini kasus saya:

perintah:

docker run -d --name webserver -p 80:80 -v ~/www/:/home/site/www/ -v ~/docker/share/apache_logs/:/home/site/logs -v ~/.gitconfig:/home/site/.gitconfig ...

situasi: ~ / .gitconfig tidak ada di host sebelum menjalankan perintah itu

apa yang terjadi: ~ / .gitconfig dibuat sebagai dir, dimiliki oleh root (bukan pengguna saat ini), dan container tidak berjalan, berhenti dengan pesan tentang tidak dapat me-mount ~ / .gitconfig (menggunakan path lengkap di teks, bukan singkatan tilde)

apa yang saya harapkan untuk dilihat: baik buruh pelabuhan harus membuat ~ / .gitconfig sebagai file kosong, dimiliki oleh pengguna saat ini, dan memulai penampung dengan sukses, atau menolak untuk memulai dengan pesan kesalahan yang lebih baik dan tanpa membuat ~ / .gitconfig sama sekali

info buruh pelabuhan:

user<strong i="14">@ubuntu14server</strong>:~$ docker info
Containers: 5
Images: 153
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 163
Execution Driver: native-0.2
Kernel Version: 3.16.0-30-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 1
Total Memory: 3.847 GiB
Name: ubuntu14server
ID: D52N:QLNG:UE33:N7F3:LZJP:NCF4:6OUS:COOJ:ISL3:2CRK:ZX3U:L3DW
WARNING: No swap limit support
user<strong i="15">@ubuntu14server</strong>:~$ docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef

@gggeek Masalahnya di sini adalah tidak ada cara bagi kami untuk mendeteksi bahwa Anda menginginkan file (ini telah dibahas sebelumnya).
Dalam skrip awal Anda, saya akan merekomendasikan menambahkan touch ~/.gitconfig sebelum perintah docker run .

:-D itulah yang akhirnya saya lakukan.
Bagaimana dengan mengambil rute 2 dan tidak membuat folder?

@gggeek Kapal itu telah berlayar dan akan menjadi perubahan besar, sayangnya.

;-( Baiklah

Saya memiliki bug ini dengan Docker version 1.6.0, build 4749651

Saya rasa saya menemukan satu hal terkait untuk menyelesaikan masalah ini. Saya menggunakan docker-compose (1.20) / docker (1.6.0) terbaru di AWS. Dan mendapatkan kesalahan ini setiap kali saya mencoba memulai nginx:

Cannot start container e9586e9e936c9b3991283c676bd071abb92a7b6b3bc0b667cf77a68fa4cc9222: [8] System error: mounting into / is prohibited

Karena putus asa saya melihat ke nginx Dockerfile dan melihat bahwa itu mengekspos satu volume. Jadi saya menambahkan volume ini ke daftar yang saya pasang dan tiba-tiba semuanya bekerja!

Jadi perbedaan antara docker-compose dan docker seams menjadi nilai default untuk volume.

Masalah telah ditutup tetapi apa solusinya?
Kami memiliki masalah yang sama yaitu kami tidak dapat memasang file ke kontainer buruh pelabuhan.
Versi Docker Toolbox terbaru (docker 1.9) di Windows
Memulai wadah berakhir di

Cannot start container XXX: [8] System error: not a directory

Sama seperti Sascha-Egeria, solusinya?

Masalah yang Anda laporkan tidak sama dengan masalah ini. Masalah ini adalah bug di versi Docker sebelumnya, yang telah diperbaiki sejak lama.

Masalah Anda mungkin terkait dengan # 2268? Jika Anda dapat memposting dalam terbitan itu dengan keluaran lengkap docker-compose version , docker info , konten docker-compose.yml , dan perintah yang Anda jalankan, kami mungkin dapat melakukan debug lebih lanjut masalah.

Saya akhirnya menyelesaikan masalah saya menggunakan Git Bash dan perintah "docker-machine ssh [MACHINE]" untuk bekerja dengan Docker.
Shell baru dari Docker Quickstart Terminal (1.9d) pada Windows bekerja sangat buruk.

Saya mengalami masalah yang sama.
Docker-compose: 1.5.1
Docker: 1.9.1

nginx:
  image: nginx
  links:
   - web
  volumes:
   - .:/code
   - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf <------
  ports:
   - "80:80"

@ jordi12100 Jika Anda mendapatkan direktori, maka file tidak dapat ditemukan.

Direproduksi di buruh pelabuhan 1.9.1 mencoba memasang dengan server.conf:/etc/server.conf mana file /etc/server.conf ada dalam sebuah gambar.

Menggunakan jalur relatif tampaknya membuat buruh pelabuhan menganggap file host sebagai nama folder. Karena ini adalah file dalam wadah dan kami tidak dapat memasang folder ke file yang ada /etc/server.conf , gagal.

Menggunakan path absolut ke server.conf memperbaiki masalah saya docker run -v /absolute/path/to/server.conf:/etc/server.conf ... dan buruh pelabuhan memperlakukan server.conf sebagai file biasa.

Jalur relatif harus dimulai dengan . , jadi coba ./server.config .

Tanpanya, itu dianggap volume bernama.

Saya memiliki masalah yang sama dan tidak dapat memasang file bahkan dengan . . Docker (atau docker-compose?) Menganggap file sebagai folder kecuali saya menyediakan jalur file absolut.

Docker: 1.9.1
Docker-compose: 1.5.2

Gunakan ./server.conf:/etc/server.conf dengan karya docker-compose. Tetapi opsi -v buruh pelabuhan CLI mengeluh tentang jalur ilegal, hanya menerima jalur absolut ke file yang akan dipasang.

@kirisets benar; docker-compose menerima jalur relatif (yang relatif terhadap file docker-compose.yml ); Tulis akan menangani konversi jalur relatif ke jalur absolut. Saat menggunakan buruh pelabuhan (bukan menulis), Anda harus menentukan jalur absolut. Anda dapat menggunakan -v $(pwd)/server.conf:/etc/server.conf jika Anda tidak ingin mengetikkan seluruh path

Saya mengonfirmasi, saya memiliki masalah yang sama dengan:
Mac OS X.10.11.3
Docker version 1.9.1, build a34a1d5
docker-compose version 1.5.2, build 7240ff3
Bahkan jika saya menentukan jalur host absolut atau relatif, saya memiliki respons yang sama:
ERROR: Cannot start container a9ed08a3ee639f61ff2720745011c940a5fff5b9b98bda6a45156a80381c5328: [8] System error: not a directory
FYI:

nginx:
  image: nginx
  ports:
    - 8080:80
    - 8443:443
  volumes_from:
    - application
  volumes:
    - ./SCM/Data/Etc/Configuration/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    - ./LOGS/nginx:/var/log/nginx:rw
  links:
    - fpm

Saya juga mengalami masalah ini

composer:
    image: php7-composer:latest
    working_dir: /data/application
    volumes:
      - ./.composer/cache:/var/composer/cache:rw
      - ./.composer/auth.json:/var/composer/auth.json:rw

Dalam contoh ini auth.json dibuat sebagai direktori di mesin host dan harus berupa file. Jika saya pertama kali meletakkan auth.json di mesin host daripada mengeluh bahwa itu bukan direktori.

Untuk saya juga ketika saya mencoba:

volume:
- ./docker/default.conf:/etc/nginx/conf.d/default.conf

Saya mendapatkan kesalahan: ERROR: Tidak dapat memulai kontainer 9f ...... f1e: [9] Kesalahan sistem: bukan direktori

Jika saya mengubah conf.d menjadi sesuatu yang lain itu berfungsi tetapi itu me-mount default.conf sebagai direktori, bukan file

Windows 10
Versi buruh pelabuhan: 1.10.1
docker-compose versi 1.6.0, buat cdb920a

Bisakah bug ini dibuka kembali, karena ditutup tanpa resolusi? Ini masih terjadi. Kasus saya sama dengan kasus lainnya, mencoba memasang file nginx.conf ke gambar nginx di bawah /etc/nginx/nginx.conf.

Di docker-compose.yml:

nginx:
  image: "nginx:1.9.7"
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - "./config/nginx.conf:/etc/nginx/nginx.conf:ro"
    - "./config/development-cert.pem:/etc/nginx/cert.pem:ro"
    - "./config/development-key.pem:/etc/nginx/key.pem:ro"

Keluaran:

$ docker-compose up -d nginx
Starting example_nginx_1
ERROR: Cannot start container 81f4237f3f0e962d8861ca30744bfd78c3b61b4ea5891a19c712c682ecc5142c: [9] System error: not a directory

Saya menjalankan Docker di OS X (10.11.3) menggunakan VM Vagrant dengan plugin VMware Fusion (VMware Fusion 8.1.0) dan host CoreOS. Informasi versi yang relevan:

$ vagrant -v
Vagrant 1.8.1

$ vagrant plugin list
vagrant-vmware-fusion (4.0.8)

$ docker-compose -v
docker-compose version 1.6.0, build unknown

$ docker info
Containers: 6
 Running: 5
 Paused: 0
 Stopped: 1
Images: 6
Server Version: 1.10.1
Storage Driver: overlay
 Backing Filesystem: extfs
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 4.4.1-coreos
Operating System: CoreOS 970.1.0 (Coeur Rouge)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 2.391 GiB
Name: localhost
ID: 73NW:JIK2:PTGX:3JVG:JZM4:NON4:DXOD:NAUU:UN7Q:T3F5:ZMZG:UWGR
Username: redacted
Registry: https://index.docker.io/v1/

$ docker version
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Fri Feb 12 22:11:40 UTC 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.4.3
 Git commit:   88b8b3a
 Built:
 OS/Arch:      linux/amd64

Silakan lihat komentar saya di sini: https://github.com/docker/compose/issues/424#issuecomment -157751229

Kesalahannya mungkin tampak sama, tetapi kemungkinan besar disebabkan oleh masalah yang berbeda.

Lihat juga https://github.com/docker/docker/issues/13670 dan https://github.com/docker/docker/issues/19304.

Saya juga mendengar laporan bahwa Anda bisa mendapatkan ini jika workdir yang Anda setel tidak ada sebagai direktori. Saya yakin Anda mengalami salah satu dari masalah ini.

Saya mengalami masalah ini dan setelah menarik semua rambut saya menemukan folder itu adalah symlink ke folder milik root.

Memindahkan semua konten ke folder milik pengguna (saya) dan berfungsi dengan baik.

Docker-1.12.0-rc2
Docker-machine 0.8.0-rc1
Docker-compose 1.8.0-rc1

Menemukan utas ini melalui Google. Saya juga mengalami masalah ini. Saya tidak dapat mengikat ke satu file, OSX.

Docker version 1.12.0-rc4, build e4a0dbc, experimental
docker-compose version 1.8.0-rc2, build c72c966

Docker baru saja diperbarui hari ini.

Pembaruan: Tangkapan layar menunjukkan upaya untuk memasang sebagai direktori, bukan file.

screen shot 2016-07-19 at 5 25 35 pm

Saya memiliki masalah yang sama :-( tidak dapat memasang file tunggal

Client:
 Version:      1.12.0-rc4
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   e4a0dbc
 Built:        Wed Jul 13 03:28:51 2016
 OS/Arch:      darwin/amd64
 Experimental: true

Server:
 Version:      1.12.0-rc4
 API version:  1.24
 Go version:   go1.6.2
 Git commit:   e4a0dbc
 Built:        Wed Jul 13 03:28:51 2016
 OS/Arch:      linux/amd64
 Experimental: true

juga mengonfirmasi masalah tersebut

Pembaruan hari ini di OSX telah memperbaikinya. Saya berhasil memasang satu file menggunakan docker-compose.

Docker version 1.12.0, build 8eab29e, experimental
docker-compose version 1.8.0, build f3628c7

Mencoba memasang file dengan docker-compose

// docker-compose.yml
version: '2'
services:
  web:
    build: .
    privileged: true
    volumes:
      - "/usr/src/app/app.conf:/etc/app.conf"
    entrypoint: /run.sh

Di mesin host

ls /usr/src/app/ -la
total 12
drwxr-xr-x   3 root root 4096 Aug  9 11:08 .
drwxr-xr-x 101 root root 4096 Aug  8 14:16 ..
drwxr-xr-x   2 root root 4096 Aug  9 11:08 app.conf

Docker-compose membuat dir: drwxr-xr-x app.conf
bukannya file.

Apakah ini perilaku normal? Saya kira file tersebut akan dibuat dan dipasang.

Saya akan sangat berterima kasih jika seseorang memberi saya klarifikasi.

# lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

Docker version 1.12.0, build 8eab29e
docker-compose version 1.8.0, build f3628c7

@bogulean jika file atau direktori yang Anda coba bind-mount tidak ada, pekerja galangan tidak memiliki cara untuk menentukan apakah Anda mengharapkan _file_ atau _directory_, dalam kasus itu (jika /usr/src/app/app.conf tidak ada), daemon buruh pelabuhan membuat direktori di lokasi itu, dan bind-mount di container.

Perhatikan bahwa kami mencoba menghentikan / menghapus pembuatan jalur otomatis (dan malah menghasilkan kesalahan), tetapi ini terlalu banyak perubahan yang tidak kompatibel dengan versi sebelumnya (beberapa orang bergantung pada perilaku ini), jadi kami harus mempertahankan perilaku ini.

@thaJeztah Terima kasih untuk balasan cepat!
Saya mencoba membuat file "/usr/src/app/app.conf" secara manual sebelum memulai docker-compose dan hasilnya di bawah ini:

ERROR: for web  Cannot start service web: oci runtime error: rootfs_linux.go:53: mounting "/var/lib/docker/aufs/mnt/dc65b60b56bae344412f8c23a35f6a19d897b0cad0673bcb9316267ed02a44fe/etc/app.conf" to rootfs "/var/lib/docker/aufs/mnt/dc65b60b56bae344412f8c23a35f6a19d897b0cad0673bcb9316267ed02a44fe" caused "not a directory"
ERROR: Encountered errors while bringing up the project.

@bogulean apa pengaturan Anda? Apakah daemon dan klien berjalan di komputer yang sama, atau Anda bekerja dengan daemon jarak jauh (atau daemon berjalan di mesin virtual?)

@thaJeztah Saya menggunakan host DO, Ubuntu 16.04 LTS,
docker-compose dan docker diinstal di atasnya, temukan versi di bawah ini:

# lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

Docker version 1.12.0, build 8eab29e
docker-compose version 1.8.0, build f3628c7

semuanya berjalan di mesin ini ke sana saya terhubung menggunakan ssh

Mencoba mengeluarkan komposisi buruh pelabuhan dari persamaan, dapatkah Anda mencoba mereproduksi dengan;

docker run --rm -v /usr/src/app/app.conf:/test/app.conf alpine cat /test/app.conf

yang harus mengikat-mount file konfigurasi dan mencetak isinya

docker run -it --rm -v /usr/src/app/app.conf:/test/app.conf alpine sh -c 'cat /test/app.conf'
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
e110a4a17941: Pull complete
Digest: sha256:3dcdb92d7432d56604d4545cbd324b14e647b313626d99b889d0626de158f73a
Status: Downloaded newer image for alpine:latest
Hello from /usr/src/app/app.conf

@thaJeztah Saya juga bisa menjalankan beberapa docker-compose.yml jika Anda akan memberikannya kepada saya untuk tujuan pengujian

@bogulean benar, jadi tampaknya ada masalah dengan docker-compose, atau dengan gambar yang sedang Anda buat / jalankan. Ini akan menjadi setara dengan pengujian sebelumnya, tetapi kemudian melalui docker-compose;

version: '2'
services:
  web:
    image: "alpine:latest"
    volumes:
      - "/usr/src/app/app.conf:/test/app.conf"
    command: "cat /test/app.conf"

Dan untuk mencoba jika berhasil;

docker-compose run web

(yang juga harus mencetak Hello from /usr/src/app/app.conf )

@thaJeztah , Terima kasih banyak! Docker-compose.yml Anda mengembalikan Hello from /usr/src/app/app.conf
Sehingga membuat saya menyadari bahwa saya melakukan sesuatu yang salah di tempat lain dan saya menemukan bahwa ada baris di Dockerfile saya:
VOLUME ["/usr/src/app.conf"]
menghapusnya dan file mulai mengikat seperti yang diharapkan.

Terima kasih atas waktunya.

Senang mendengarnya, dan senang membantu!

Masalah dalam kasus Anda, adalah bahwa VOLUME juga mengharapkan direktori, jadi buat volume, dan coba pasang pada /usr/src/app.conf . Cara terbaik untuk bekerja dengan file tunggal dari host biasanya dengan mempertimbangkan situasi ini, misalnya, dengan memiliki direktori /usr/src/config/ ; Anda kemudian akan mengikat-mount (atau menggunakan volume) untuk direktori itu, alih-alih file. Jelas tidak selalu memungkinkan

@thaJeztah , saya memiliki masalah yang sama saat menjalankan ini:

docker run -v $(pwd)/filebeat.yml:/filebeat.yml prima/filebeat:1.2 cat filebeat.yml
cat: filebeat.yml: Is a directory

/ pasti ada di dalam gambar / container:

docker run -v $(pwd)/filebeat.yml:/filebeat.yml prima/filebeat:1.2 ls -al
drwxr-xr-x   2 root root   40 Aug  9 20:46 filebeat.yml

Tampaknya merupakan bug Docker secara umum, tidak terkait dengan Docker Compose.
Tidak yakin mengapa Docker membuat direktori dalam kasus ini.

Ada ide? Terima kasih banyak!

Saya juga mencoba contoh Anda dengan gambar alpine. Sama. cat: read error: Is a directory

@thasmo Anda mendapatkan kesalahan ini karena filebeat.yml adalah direktori, bukan file.
Anda harus memastikan bahwa file tersebut ada di host sebelum mencoba memasangnya ke dalam penampung, jika tidak, pekerja galangan akan membuat direktori untuk Anda.

@ cpuguy83 , saya rasa saya baru saja menemukan masalahnya. Saya menggunakan Docker di Windows melalui Mesin Docker dan VirtualBox dan mungkin tidak dapat memasang file lokal melalui VirtualBox ke dalam wadah.
https://docs.docker.com/docker-for-windows/troubleshoot/#/host -filesystem-sharing

Saya telah menemukan masalah itu pada clean install docker pada Windows 10 anniversary Update.
Padahal, masalah ini solusinya sangat sederhana

Perlu berbagi drive dalam opsi buruh pelabuhan http://www.awesomescreenshot.com/image/1510321/0f1a81d7a8883df5a61bcdf04b3994cf
Tampak menemukan dan memecahkan masalah.

Masih mengalami masalah di ubuntu 16.10

➜  gi_proxy git:(master) ✗ docker -v
Docker version 1.12.3, build 6b644ec

buruh pelabuhan menjalankan --name hap ... -v /home/cverbinnen/src/unisporkal/gi_proxy/dev-resolv.conf:/etc/resolv.conf

docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"process_linux.go:359: container init caused \\\"rootfs_linux.go:53: mounting \\\\\\\"/home/cverbinnen/src/unisporkal/gi_proxy/dev-resolv.conf\\\\\\\" to rootfs \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/34ee49dcff906310df08b5a0bdf02ebafd302c1c7bf8b81ecd2778757fdb5713\\\\\\\" at \\\\\\\"/mnt/sda1/var/lib/docker/aufs/mnt/34ee49dcff906310df08b5a0bdf02ebafd302c1c7bf8b81ecd2778757fdb5713/etc/resolv.conf\\\\\\\" caused \\\\\\\"not a directory\\\\\\\"\\\"\"\n".

Jika saya mengubah proses buruh pelabuhan untuk me-mount ke file yang tidak ada seperti / tmp / foo itu berfungsi tetapi me-mount direktori.

@djpate adalah daemon buruh pelabuhan Anda berjalan di host yang sama (dan bukan di mesin virtual?). Jika /home/cverbinnen/src/unisporkal/gi_proxy/dev-resolv.conf tidak ada pada mesin yang menjalankan daemon buruh pelabuhan, maka daemon akan membuat _directory_ dengan nama itu, dan mencoba untuk mengikat-mount pada /etc/resolv.conf di dalam kontainer. Karena /etc/resolv.conf adalah _file_, maka pemasangan bind pada direktori di atas file akan gagal.

Karena itu, saya sangat tidak menyarankan untuk mengganti /etc/resolv.conf dengan file lokal; /etc/resolv.conf dikelola oleh buruh pelabuhan untuk mengatur server DNS yang benar untuk digunakan. Docker memiliki server DNS tertanam untuk penemuan layanan, jadi menimpa file itu akan mengakibatkan penemuan layanan tidak berfungsi.

Jika Anda ingin menyetel opsi DNS, gunakan opsi --dns , --dns-opt dan --dns-search pada docker run ;

--dns value                   Set custom DNS servers (default [])
--dns-opt value               Set DNS options (default [])
--dns-search value            Set custom DNS search domains (default [])

Ini akan mengatur opsi tersebut tanpa menyebabkan hasil yang tidak terduga. Perhatikan bahwa DNS di dalam penampung akan selalu 127.0.0.11 (server DNS tertanam), tetapi server tersebut secara otomatis meneruskan permintaan ke server DNS yang Anda tentukan dengan --dns

@thaJeztah Saya baru

Saya akan mengubahnya ke opsi DNS seperti yang Anda sebutkan, saya tidak menyadarinya. Terima kasih! Tapi menurutku bug itu masih ada.

Ini tidak berfungsi untuk saya baik di docker-compose v1.6.2 dan docker v1.10.2 :(

Menggunakan jalur absolut berfungsi, tetapi sayangnya untuk kasus penggunaan saya, jalur absolut sama sekali tidak berfungsi :(. Saya sudah mencoba setiap kombinasi ./ dan ../ yang terpikir oleh saya.

EDIT: Saya juga menjalankan Linux tanpa VM, jadi solusi @thaJeztah tidak berfungsi untuk saya

OS adalah Ubuntu 14.04

Docker hingga 1.13.1 sekarang. Harap tingkatkan versi Docker Anda. Sudah bekerja, sejak 1.12.x.

Terima kasih. Akan memutakhirkan buruh pelabuhan & memperbarui jika / saat diperbaiki :)

EDIT: Berhasil! Terima kasih @guice

@tokopedia

Jika file atau direktori yang Anda coba bind-mount tidak ada, pekerja galangan tidak memiliki cara untuk menentukan apakah Anda mengharapkan file atau direktori, dalam hal itu (jika /usr/src/app/app.conf tidak tidak ada), daemon buruh pelabuhan membuat direktori di lokasi itu, dan bind-mount di container.
Perhatikan bahwa kami mencoba menghentikan / menghapus pembuatan jalur otomatis (dan malah menghasilkan kesalahan), tetapi ini terlalu banyak perubahan yang tidak kompatibel dengan versi sebelumnya (beberapa orang bergantung pada perilaku ini), jadi kami harus mempertahankan perilaku ini.

Saya cukup frustrasi setelah enam jam mencoba kasus penggunaan ini dan sekarang menemukan itu tidak mungkin.
Mengapa tidak menambahkan sesuatu seperti "file flag" ke deklarasi volume, mengingat kita dapat menentukan opsi pemasangan tambahan seperti :ro dan :rw ?

volumes:
  - "./config.json:/app/config.json:rwf"

Ketika saya memetakan file kontainer ke file host, saya berharap file host akan dibuat (disalin dari kontainer) pada inisialisasi kontainer.
Sayangnya, cukup umum untuk menemukan container yang memiliki file konfigurasi dimasukkan langsung ke direktori root aplikasi, dan jelas Anda tidak ingin "memperbesar" seluruh root. Dalam hal ini akan sangat berguna jika ini berhasil.

@malyzeli Anda mungkin ingin melihat rahasia sebagai cara untuk memasukkan konfigurasi seperti ini, atau membuat template saat memulai.
Volume benar-benar dirancang untuk ketekunan, bukan konfigurasi.
Benar-benar pekerja galangan seharusnya tidak membuat jalur host secara otomatis sama sekali, dan perilaku ini telah dihapus pada API yang lebih baru.

@ cpuguy83

Saya tidak mengerti maksud Anda, jadi tolong jelaskan atau perbaiki asumsi saya, karena saya cukup baru mengenal ekosistem Docker.

Anda mungkin ingin melihat rahasia sebagai cara untuk memasukkan konfigurasi seperti ini, atau membuat template saat memulai.

Bagaimana jika saya tidak tahu bagaimana file konfigurasi akan terlihat, karena dibuat oleh beberapa wizard penginstalan langsung dari aplikasi (dan akhirnya berubah dari versi ke versi)?
Banyak aplikasi yang memiliki penyiapan kali pertama seperti ini, misalnya Limesurvey dan NodeBB.

Volume benar-benar dirancang untuk ketekunan, bukan konfigurasi.

Apakah Anda menyiratkan bahwa konfigurasi penampung yang ada tidak boleh persisten?
Lalu bagaimana jika saya ingin mencadangkan beberapa bagian dari infrastruktur multi-container saya?
Saya ingin memiliki data dan konfigurasi dalam volume sehingga saya dapat memulihkannya dengan cepat jika terjadi sesuatu yang salah.

Benar-benar pekerja galangan seharusnya tidak membuat jalur host secara otomatis sama sekali, dan perilaku ini telah dihapus pada API yang lebih baru.

Sebenarnya saya tidak memerlukannya untuk membuat jalur host, tetapi untuk menginisialisasi volume yang diberikan dengan data gambar yang ada (misalnya "mengeksternalisasi" beberapa template html, yang saya ingin agar dapat diedit dari sistem host dan / atau wadah lain), dan masih berfungsi persis seperti yang dinyatakan dalam referensi Dockerfile :

Perintah docker run menginisialisasi volume yang baru dibuat dengan data apa pun yang ada di lokasi yang ditentukan dalam gambar dasar.

Bagaimana jika saya tidak tahu bagaimana file konfigurasi akan terlihat, karena dibuat oleh beberapa wizard penginstalan langsung dari aplikasi (dan akhirnya berubah dari versi ke versi)?

Biarkan dibuat, ekstrak dari image / container, buat rahasia darinya

Saya ingin memiliki data dan konfigurasi dalam volume sehingga saya dapat memulihkannya dengan cepat jika terjadi sesuatu yang salah.

Gunakan rahasia. Kami juga melihat objek config yang mirip dengan rahasia, hanya saja tidak begitu dibatasi ... tetapi hari ini rahasia adalah apa yang tersedia.

Sebenarnya saya tidak membutuhkannya untuk membuat jalur host, tetapi untuk menginisialisasi volume yang diberikan dengan data gambar yang ada (misalnya "mengeksternalisasi" beberapa template html, yang ingin saya edit dari sistem host dan / atau wadah lain), dan masih berfungsi persis seperti yang dinyatakan dalam referensi Dockerfile:

Bind mount bukanlah volume. Referensi Dockerfile berbicara tentang volume. Sayangnya docker run -v digunakan untuk keduanya.

Saya jelas tidak mengatakan untuk tidak menggunakan volume untuk menyimpan konfigurasi, saya mengatakan Anda harus mengevaluasi jika ada solusi yang lebih baik (dan rahasia IMO jauh lebih baik untuk ini).

Pengikatan host adalah solusi yang buruk untuk apa pun selain mengambil sesuatu yang sudah ada sebelumnya di host dan memasukkannya ke dalam wadah ... dan bahkan kemudian secara umum tidak bisa diterapkan ketika Anda berbicara tentang lingkungan berkerumun.

@ cpuguy83

Biarkan dibuat, ekstrak dari image / container, buat rahasia darinya

Ya, itulah yang saya lakukan, tapi sepertinya rumit juga .. :-)

Gunakan rahasia. Kami juga melihat objek config yang mirip dengan rahasia, hanya saja tidak begitu dibatasi ... tetapi hari ini rahasia adalah apa yang tersedia.

Saya akan memeriksanya, tidak tahu tentang rahasia, terima kasih!

Bind mount bukanlah volume. Referensi Dockerfile berbicara tentang volume. Sayangnya docker run -v digunakan untuk keduanya.

Oke, itu sepertinya penjelasan mengapa itu tidak berfungsi seperti yang saya harapkan. Saya pikir binding dan volume hanyalah penamaan yang berbeda untuk hal yang sama, mengingat itu dilakukan melalui parameter -v .

Bagi mereka yang melihat bug ini di Windows ... bahkan jika Anda memiliki Drive Bersama ...

Ada masalah jika Anda menggunakan Docker Windows (dengan docker-compose) dan menggunakan kredensial tertentu untuk "Berbagi Drive" seperti C: \ atau D: \ dll., Anda mungkin harus membatalkan berbagi, membagikan drive lagi, memasukkan kembali kredensial, jika tidak, itu memberi Anda kesalahan terkait seperti:

"ERROR: untuk ... Tidak dapat memulai layanan layanan Anda: oci runtime error: container_linux.go: 262: memulai proses penampung yang disebabkan" process_linux.go: 339: container "menyebabkan \" rootfs_linux.go: 57: pemasangan \

"\\" menyebabkan \\ "bukan direktori \\" ""
: Apakah Anda mencoba memasang direktori ke file (atau sebaliknya)? Periksa apakah jalur host yang ditentukan ada dan merupakan tipe yang diharapkan "

BaranOrnarli bagaimana menjadi orang yang memiliki DockerToolbox?

Masalah yang sama di sini seperti kebanyakan orang di sini. Tapi saya membuatnya berfungsi kembali hanya dengan memulai ulang VM.

Pendidikan Windows 10
Docker Toolbox, 17.10.0-ce
VirtualBox 5.2.2

Menjalankan ini melalui pekerja galangan CLI bekerja:
docker run -d -p 8080:80 -v $(pwd)/src/vhost.conf:/etc/nginx/sites-enabled/vhost.conf tutorial / nginx

Menjalankan hal yang sama melalui docker-compose, tidak:
menggunting
volumes: - ./src/vhost.conf:/etc/nginx/sites-enabled/vhost.conf
Artinya, sampai saya mematikan VM melalui VirtualBox GUI dan memulai Terminal Quickstart Docker lagi.

Sejak itu, berulang kali menghancurkan container dan docker-compose tidak membuat error muncul kembali.

Semoga ini bisa membantu seseorang.

Saya memiliki masalah yang sama. Sementara itu, saya menggunakan folder buruh pelabuhan volume nyata di docker-compose.yml. Ini adalah /var/lib/docker/volumes..../file.ext sebagai solusi sementara
(Docker versi 17.12.0-ce, build c97c6d6)

Jika Anda memiliki masalah seperti itu, periksa juga apakah Anda membagikan direktori Anda di Windows.

Saya menggunakan ubuntu 14.04. Ketika saya menjalankan perintah docker-compose up -d , saya mengalami kesalahan berikut:

ERROR: for frontend Cannot start service frontend: OCI runtime create failed: container_linux.go:296: starting container process caused "process_linux.go:398: container init caused \"rootfs_linux.go:58: mounting \\\"/home/curso-docker/email-worker-compose/nginx/default.conf\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/ffc214cd493c376554125473ba95e8cd918cd3ad73b6aa8292f51ce84beca8a6\\\" at \\\"/var/lib/docker/aufs/mnt/ffc214cd493c376554125473ba95e8cd918cd3ad73b6aa8292f51ce84beca8a6/etc/nginx/conf.d/default.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

Saya menggunakan jalur absolut untuk memetakan volume /home/curso-docker/email-worker-compose/nginx/default.conf dari host saya.

Ada yang tahu tentang masalah ini?

@AzeredoGabriel untuk saya, melakukan apa yang @BaranOrnarli sebutkan sebelumnya bekerja seperti pesona. Setel ulang kredensial untuk drive bersama Anda, bagikan lagi, dan seharusnya berfungsi. Tidak tahu mengapa itu tiba-tiba berhenti bekerja di tempat pertama, tapi sekarang sudah kembali.

ada berita tentang ini? Sepertinya masih tidak mungkin untuk memasang satu file

@Karlinzniebuhr Ini tidak pernah menjadi masalah. Docker memungkinkan pemasangan file ke dalam wadah, tetapi Anda tidak dapat memasang file ke direktori atau sebaliknya.

ada berita tentang ini? Sepertinya masih tidak mungkin untuk memasang satu file

coba petakan file dengan direktori yang ada. Docker mencoba membuat direktori selalu jika tidak ada.

@ cpuguy83 Tentu saja itu masalah. Kami tidak mencoba memasang file ke direktori. Kami mencoba memasang satu file yang dibuat oleh penampung ke host sebagai file.

Bisakah kita membuka kembali masalah ini? Masih belum berfungsi pada 2019. Di Docker terbaru dan docker-compose terbaru yang berjalan di Debian terbaru.

Anda tidak dapat memasang dari wadah ke host, hanya dengan cara lain.
Ini adalah perilaku yang sama untuk direktori dan file.

Masalah yang sama, menggunakan docker 19.03.1 dan docker-compose 1.24.1, saat mencoba menimpa file konfigurasi di store/elastic/filebeat:7.3.0 image dengan volume binding di docker-compose.yml:

    volumes:
      - ${PWD}/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro

ERROR: for docker_filebeat_1 Cannot start service filebeat: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/filebeat.yml\\\" to rootfs \\\"/var/lib/docker/overlay2/f49a0ae0ec6646c818dcf05dbcbbdd79fc7c42561f3684fbb1fc5d2b9d3ad192/merged\\\" at \\\"/var/lib/docker/overlay2/f49a0ae0ec6646c818dcf05dbcbbdd79fc7c42561f3684fbb1fc5d2b9d3ad192/merged/usr/share/filebeat/filebeat.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

Awalnya saya mencoba menggunakan "configs" tetapi ternyata fitur ini hanya untuk swarm.
Saya mencoba menemukan cara untuk menyediakan file konfigurasi ke gambar default tanpa membuat yang khusus dengan file konfigurasi COPY.

Masalah yang sama

$ ls -l logstash.conf
-rw-r--r--  1 lubumbax  staff  164 Apr 30 18:01 logstash.conf
$ pwd
/Users/lubumbax/Src/Java/elk
$ docker run -it --name logstash -p 5000:5000 \
             -v "$(pwd)/logstash.conf:/usr/share/logstash/pipeline/logstash.conf" \
             docker.elastic.co/logstash/logstash:7.6.2

Hasil:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go:58: mounting \\\"/Users/lubumbax/Src/Java/elk/logstash.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/bad85f1a2984bed23619fdf401cc9655573bb1799a8b681d371f5964201b9a82/merged\\\" at \\\"/var/lib/docker/overlay2/bad85f1a2984bed23619fdf401cc9655573bb1799a8b681d371f5964201b9a82/merged/usr/share/logstash/pipeline/logstash.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

$ docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.14
 Git commit:        afacb8b
 Built:             Thu Mar 12 02:45:41 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b7f0
  Built:            Wed Mar 11 01:30:32 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Adakah kesempatan untuk memperbaikinya?

Masalah yang mengganggu.

Rekan-rekan, periksa arah mount di docker-compose.
Saya mendapat masalah yang sama sampai saya menyadari bahwa saya salah, harus seperti itu:

...
    volumes:
      - /host/file:/docker/file:ro
...
Apakah halaman ini membantu?
0 / 5 - 0 peringkat