Saya memiliki buruh pelabuhan dengan versi 17.06.0-ce
. Ketika saya mencoba menginstal NGINX menggunakan buruh pelabuhan dengan perintah:
docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest
Itu menunjukkan bahwa
buruh pelabuhan: Tanggapan kesalahan dari daemon: oci runtime error: container_linux.go: 262: memulai proses penampung menyebabkan "process_linux.go: 339: init container menyebabkan \" rootfs_linux.go: 57: mount \\ "/ appdata / nginx / conf / nginx.conf \\ "untuk rootfs \\ "/ var / lib / buruh pelabuhan / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\" di \\" / var / lib / buruh pelabuhan / aufs / mnt / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 / etc / nginx / nginx.conf \\ "menyebabkan \\" bukan direktori \\ "\" ": Apakah Anda mencoba memasang direktori ke file (atau sebaliknya)? Periksa apakah jalur host yang ditentukan ada dan merupakan tipe yang diharapkan.
Jika tidak me-mount nginx.conf
file tersebut, semuanya baik-baik saja. Jadi, bagaimana cara memasang file konfigurasi?
ls -al .
? Ingin melihat seperti apa pwd Anda.docker rm …
), lalu membuatnya kembali.Jawaban:
Karena buruh pelabuhan akan mengenali
$PWD/conf/nginx.conf
sebagai folder dan bukan sebagai file. Periksa apakah$PWD/conf/
direktori tersebut berisinginx.conf
sebagai direktori .Uji dengan
Jika tidak, buka masalah Docker .
Ini berfungsi dengan baik untuk saya dengan konfigurasi yang sama.
sumber
-v
nginx.conf
sebelumnya sudah ada di jalur itu Linux akan mengenalinya sebagai file, bukan?Ini seharusnya tidak lagi terjadi (sejak v2.2.0.0), lihat di sini
Jika Anda menggunakan Docker untuk Windows , kesalahan ini dapat terjadi jika Anda baru saja mengubah kata sandi.
Bagaimana cara memperbaiki:
docker rm -v <container_name>
: Langkah-langkah di bawah ini dapat berfungsi tanpa perlu menghapus volume terlebih dahulu.
Kredit diberikan kepada BaranOrnarli di GitHub untuk solusinya.
sumber
TL; DR : Hapus volume yang terkait dengan wadah.
Temukan nama penampung menggunakan
docker ps -a
kemudian hapus penampung itu menggunakan:Masalah:
Kesalahan yang Anda hadapi mungkin terjadi jika Anda sebelumnya mencoba menjalankan
docker run
perintah saat file tidak ada di lokasi yang seharusnya ada di direktori host.Dalam hal ini daemon buruh pelabuhan akan membuat direktori di dalam wadah sebagai gantinya, yang kemudian gagal untuk memetakan ke file yang tepat ketika file yang benar dimasukkan ke dalam direktori host dan perintah buruh pelabuhan dijalankan lagi.
Larutan:
Hapus volume yang terkait dengan wadah. Jika Anda tidak mengkhawatirkan volume kontainer lainnya, Anda juga dapat menggunakan:
sumber
docker volume
perintah / interface hanya untuk anonim dan bernama volume, yang bukan bagian dari pertanyaan awal./var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"
saya: Ini sudah memiliki folder karena proses sebelumnya, jadi jika Anda mencoba memetakan file ke folder itu, itu akan gagal.Jawaban untuk orang-orang yang menggunakan Docker Toolbox
Setidaknya sudah ada 3 jawaban disini yang menyentuh masalah tersebut, namun tidak menjelaskannya dengan benar dan tidak memberikan solusi yang lengkap. Ini hanya masalah pemasangan folder .
Deskripsi masalah:
Docker Toolbox melewati persyaratan Hyper-V dari Docker dengan membuat mesin virtual (di VirtualBox, yang dibundel). Docker diinstal dan dijalankan di dalam VM. Agar Docker berfungsi dengan baik, Docker harus memiliki akses ke dari mesin host. Yang mana di sini tidak.
Setelah saya menginstal Docker Toolbox, itu membuat VM VirtualBox dan hanya dipasang
C:\Users
ke mesin, sebagai\c\Users\
. Proyek saya tidak ada diC:\projects
mana-mana pada volume yang terpasang. Ketika saya mengirim jalur ke VM, itu tidak akan ada, karenaC:\projects
tidak dipasang. Makanya, kesalahan di atas.Katakanlah saya memiliki proyek saya yang berisi konfigurasi ngnix saya
C:/projects/project_name/
Memperbaiki itu:
Buka VirtualBox, klik kanan pada Default (VM dari Docker)> Pengaturan> Folder Bersama
Mengklik ikon kecil dengan plus di sisi kanan, Tambahkan share baru. Saya menggunakan pengaturan berikut:
C:\projects
ke/projects
(ROOT/projects
) di VM, artinya sekarang Anda dapat mereferensikan jalur mana pun dalam proyek seperti ini:/projects/project_name
- karenaproject_name
fromC:\projects\project_name
sekarang sudah terpasang.Di file buruh pelabuhan saya, sekarang saya mereferensikan
nginx.conf
seperti ini:Di mana nginx.conf sebenarnya berada
C:\projects\project_name\docker_config\nginx\nginx.conf
sumber
Penjelasan yang diberikan oleh @Ayushya adalah alasan saya mendapatkan pesan kesalahan yang agak membingungkan ini dan pembersihan yang diperlukan dapat dilakukan dengan mudah seperti ini:
sumber
Saya memiliki masalah yang sama. Saya menggunakan Docker Desktop dengan WSL di Windows 10 17.09.
Penyebab masalah:
Masalahnya adalah Docker untuk Windows mengharapkan Anda untuk menyediakan jalur volume Anda dalam format yang cocok dengan ini:
/c/Users/username/app
TAPI, WSL malah menggunakan format:
/mnt/c/Users/username/app
Ini membingungkan karena ketika memeriksa file di konsol saya melihatnya, dan bagi saya semuanya sudah benar. Saya tidak mengetahui ekspektasi Docker untuk Windows tentang jalur volume .
Solusi untuk masalah ini:
Saya mengikat titik pemasangan khusus untuk memperbaiki perbedaan Docker untuk Windows dan WSL:
sudo mount --bind /mnt/c /c
Seperti yang disarankan dalam panduan luar biasa ini: Menyiapkan Docker untuk Windows dan WSL agar Bekerja dengan Sempurna dan semuanya bekerja dengan sempurna sekarang.
Sebelum saya mulai menggunakan WSL, saya menggunakan Git Bash dan saya juga mengalami masalah ini.
sumber
Saya menggunakan Docker ToolBox untuk Windows. Secara default, Drive C dipasang secara otomatis, jadi untuk memasang file, pastikan file dan folder Anda berada di dalam C DRIVE .
Contoh:
C:\Users\%USERNAME%\Desktop
sumber
Mungkin seseorang menganggap ini berguna. File tulis saya memiliki volume berikut yang dipasang
Karena ./file tidak ada, itu dipasang ke ABC (secara default sebagai folder).
Dalam kasus saya, saya memiliki wadah yang dihasilkan dari
Ketika saya kemudian membuat ./file dan menjalankan
docker-compose up
, saya mengalami kesalahan:Kontainer muncul dari
cool_image
ingat bahwa/dir/file
itu adalah direktori dan itu bertentangan dengan yang baru-baru ini dibuat dan dipasang./file
.Solusinya adalah:
sumber
Di Windows 10, saya hanya mendapatkan kesalahan ini tanpa mengubah apa pun di
docker-compose.yml
file saya atau konfigurasi Docker secara umum.Dalam kasus saya, saya menggunakan VPN dengan kebijakan firewall yang memblokir port 445.
Setelah memutuskan sambungan dari VPN, masalah tersebut hilang.
Jadi saya sarankan untuk memeriksa firewall Anda dan tidak menggunakan proxy atau VPN saat menjalankan Desktop Docker.
Periksa Docker untuk windows - Aturan firewall untuk drive bersama untuk detail selengkapnya.
Saya harap ini akan membantu orang lain.
sumber
Bisakah Anda menggunakan jalur absolut / lengkap daripada
$PWD/conf/nginx.conf
? Maka itu akan berhasil.EX:docker run --name nginx-container5 --rm -v /home/sree/html/nginx.conf:/etc/nginx/nginx.conf -d -p 90:80 nginx b9ead15988a93bf8593c013b6c27294d38a2a40f4ac75b1c1ee362de4723765b root@sree-VirtualBox:/home/sree/html# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b9ead15988a9 nginx "nginx -g 'daemon of…" 7 seconds ago Up 6 seconds 0.0.0.0:90->80/tcp nginx-container5 e2b195a691a4 nginx "/bin/bash" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp test-nginx
sumber
Saya mengalami masalah yang sama menggunakan Docker melalui WSL1 di Windows 10 dengan baris perintah ini:
Saya menyelesaikannya dengan mengubah jalur untuk file di sistem host ke jalur absolut gaya UNIX:
atau menggunakan jalur absolut gaya Windows dengan
/
alih - alih\
sebagai pemisah jalur:sumber
Memperbarui Virtual Box ke 6.0.10 memperbaiki masalah ini untuk Docker Toolbox
https://github.com/docker/toolbox/issues/844
Saya mengalami kesalahan seperti ini:
Setelah memperbarui VitualBox semua perintah berfungsi dengan baik 🎉
sumber
Memiliki goresan kepala yang sama karena saya tidak memiliki file secara lokal sehingga membuatnya sebagai folder.
sumber
Saya mengalami kesalahan serupa pada niginx di lingkungan Mac. Docker tidak mengenali file default.conf dengan benar. Setelah mengubah jalur relatif ke jalur absolut, kesalahan diperbaiki.
sumber
Bagi saya, ini tidak berhasil:
Tapi ini, berfungsi dengan baik (jelas memindahkan file konfigurasi saya ke dalam direktori baru juga:
sumber
Saya akan membagikan kasus saya di sini karena ini dapat menghemat banyak waktu untuk orang lain di masa mendatang.
Saya memiliki docker-compose yang berfungsi dengan sempurna di macos saya, sampai saya mulai menggunakan buruh pelabuhan-dalam-buruh pelabuhan di Gitlab CI. Saya hanya diberi izin untuk bekerja sebagai Master di repositori, dan Gitlab CI dihosting sendiri dan disiapkan oleh orang lain dan tidak ada info lain yang dibagikan, tentang cara penyiapannya, dll.
Hal berikut menyebabkan masalah:
Hanya ketika saya perhatikan bahwa ini mungkin berjalan di bawah windows (berjam-jam menggaruk kepala), saya mencoba mengganti nama wodpress.conf menjadi default.conf dan hanya mengatur nama path dir:
Ini memecahkan masalah!
sumber
Saya mengalami masalah ini di bawah Windows 7 karena dockerfile saya berada di drive yang berbeda.
Inilah yang saya lakukan untuk memperbaiki masalah:
Pada titik ini,
docker-compose up
harus bekerja.sumber
Saya mendapat kesalahan yang sama di Windows10 setelah pembaruan Docker: 2.3.0.2 (45183).
Saya menggunakan jalur absolut seperti ini
//C/workspace/nginx/nginx.conf
dan semuanya bekerja seperti pesona.Pembaruan merusak penulisan buruh pelabuhan saya, dan saya harus mengubah jalur ke
/C/workspace/nginx/nginx.conf
dengan satu/
untuk root.sumber
Perhatikan bahwa situasi ini juga akan terjadi jika Anda mencoba memasang volume dari host yang belum ditambahkan ke bagian Sumber Daya> Berbagi File di Preferensi Docker.
Menambahkan jalur root sebagai sumber daya berbagi file sekarang akan mengizinkan Docker mengakses sumber daya untuk memasangnya ke penampung. Perhatikan bahwa Anda mungkin perlu menghapus konten di kontainer Docker Anda untuk mencoba memasang ulang volume.
Misalnya, jika aplikasi Anda terletak di
/mysites/myapp
, Anda akan ingin menambahkan/mysites
sebagai lokasi sumber daya berbagi file.sumber
Saya memiliki masalah yang sama, docker-compose membuat direktori alih-alih file, lalu mogok di tengah jalan.
Apa yang saya lakukan:
Jalankan wadah tanpa pemetaan apa pun.
Salin
.conf
file ke lokasi host:docker cp containername:/etc/nginx/nginx.conf ./nginx.conf
Hapus wadah (
docker-compose down
).Kembalikan pemetaan.
Pasang kembali wadah.
Docker Compose akan menemukan
.conf
file dan memetakannya , alih-alih mencoba membuat direktori .sumber
Aku telah memecahkan masalah pemasangan. Saya menggunakan lingkungan Win 7, dan masalah yang sama terjadi pada saya.
Penampung memiliki direktori sinkronisasi default di
C:\Users\
, jadi saya memindahkan proyek saya keC:\Users\
, lalu membuat ulang proyek tersebut. Sekarang berhasil.sumber