Saya mencoba menyiapkan Mesin Docker dengan Docker Compose.
Skenario 1 (tanpa Mesin Docker)
Jika saya berjalan docker-compose up -d
tanpa Mesin Docker, ini membuat 3 wadah tertaut saya seperti yang diinginkan (nginx + mongodb + nodejs).
Skenario 2 (dengan Mesin Docker)
Lalu saya membuat VM menggunakan Mesin Docker dan memberi tahu Docker untuk berbicara dengan mesin itu denganeval $(docker-machine env streambacker-dev)
.
Pada titik ini, jika saya ssh ke mesin buruh pelabuhan saya dan menjalankan df -h
, saya mendapatkan:
Jika saya kemudian menjalankan docker-compose up -d
, saya mendapatkan pesan kesalahan "tidak ada ruang tersisa di perangkat" saat mengunduh penampung terakhir.
"tmpfs" sepertinya memang sedikit penuh setelah itu:
Memeriksa opsi --virtualbox-disk-size menunjukkan bahwa defaultnya adalah 20000 MB, yang menurut saya adalah apa yang dapat kita lihat sebagai "/ dev / sda1" pada kedua gambar. Jadi mengapa kontainer mengisi "tmpfs" n dan apa sebenarnya "tmpfs"? Apakah itu direktori unduhan sementara? Bagaimana cara membuat lebih banyak ruang untuk penampung saya?
Terima kasih!
Untuk informasi, saya menggunakan Docker Machine 0.4.0-rc2 dan Docker Compose 1.3.2 .
sumber
tmpfs
ada hubungannya dengan--virtualbox-disk-size
. Ini adalah sistem file (seperti RAM disk) yang dipasang di memori dan tidak ada yang mengakses disk Anda.docker rmi $(docker images -f dangling=true -q)
dandocker volume rm $(docker volume ls -f dangling=true -q)
Jawaban:
Seperti dikatakan di atas,
tmpfs
tidak ada hubungannya dengan--virtualbox-disk-size
. Sepertinya boot2docker terpasangtmpfs
ke memori, jadi Anda perlu mendedikasikan lebih banyak memori ke vm virtualbox Anda. Anda dapat melakukannya dengan menentukan--virtualbox-memory
parameter.Default:
Dengan
--virtualbox-memory
set ke8096
sumber
Saya mengalami kesalahan yang sama (
[ERROR] InnoDB: Error number 28 means 'No space left on device'
) dan menyelesaikannya dengan cara ini:1. Hapus volume yatim piatu di Docker, Anda dapat menggunakan perintah volume buruh pelabuhan bawaan. Perintah bawaan juga menghapus direktori apa pun di / var / lib / docker / volumes yang bukan volume jadi pastikan Anda tidak meletakkan apa pun di sana yang ingin Anda simpan.
Peringatan berhati-hatilah dengan ini jika Anda memiliki beberapa data yang ingin Anda simpan
Membersihkan:
Perintah tambahan:
Daftar volume yang menggantung:
Buat daftar semua volume:
2. Pertimbangkan juga untuk menghapus semua Gambar yang tidak digunakan.
Pertama-tama, singkirkan
<none>
gambar (yang terkadang dihasilkan saat membuat gambar dan jika karena alasan apa pun pembuatan gambar terputus, gambar tersebut tetap di sana).inilah skrip bagus yang saya gunakan untuk menghapusnya
Kemudian jika Anda menggunakan Docker Compose untuk membuat Gambar secara lokal untuk setiap proyek. Anda akan mendapatkan banyak gambar yang biasanya dinamai seperti folder Anda (contoh jika folder proyek Anda bernama Halo, Anda akan menemukan nama gambar
Hello_blablabla
). jadi pertimbangkan juga untuk menghapus semua gambar iniAnda dapat mengedit skrip di atas untuk menghapusnya atau menghapusnya secara manual dengan
docker rmi {image-name}
sumber
docker rmi $(docker images | grep '^<none>' | awk '{print $3}')
. Menghapus kontainer yang dihentikan dapat dilakukan dengandocker rm $(docker ps -qa --no-trunc --filter "status=exited")
seperti yang dijelaskan di sini: stackoverflow.com/a/32723127/619659 .docker images | grep "^<none>" | xargs docker rmi
.docker volume prune
Jika Anda menggunakan Docker Community Edition:
Jika Anda menggunakan boot2docker (docker-machine) hapus volume yang tidak aktif:
Hapus gambar yang tidak digunakan:
sumber
docker system prune
membantu sayadocker system prune
ftwdocker volume prune
untuk volume saja, pemangkasan sistem tidak akan menghapus volume yang menggantung.docker rmi $(docker images -q)
. Tambahkan--force
jika Anda harus ketika melewatkan sekelompok lapisan yang termasuk dalam beberapa wadah.A. HAPUS GAMBAR YANG TIDAK DIGUNAKAN
menggunakan perintah docker rm atau docker rmi Anda dapat menghapus gambar yang tidak Anda butuhkan. Sebenarnya ada gambar yang membantu dalam tugas ini (martin / docker-cleanup-volume). Dasarnya adalah memulai selectig dari gambar dan daftar container Anda:
B. MODIFIKASI DESKRIPSI JSON DOCKER
itu disebutkan di beberapa forum. Idenya adalah untuk menambah deskriptor yang terletak di ~ / .docker / machine / machines / default / config.json. Parameter tampaknya DiskSize tetapi saya tidak tahu apakah itu berfungsi di OS lain (bukan di windows).
C.Ukuran LINUX:
di OS Windows, mesin galangan atau boot2docker sebenarnya adalah virtualbox vm, maka Anda dapat mengikuti prosedur untuk mengubah ukuran disk. Berhati-hatilah saat membuat cadangan file. Prosedur umum adalah membuat perubahan ukuran di virtualbox dan kemudian menggunakan utilitas yang disebut gpartd untuk mengubah ruang yang dirasakan oleh linux di partisi-nya. Ada beberapa tautan untuk melakukan prosedur ini yang dirujuk di bawah ini:
D. MEREKREASI MESIN DOKTER / BOOT2DOCKER
Idenya adalah membuat ulang mesin buruh pelabuhan default. Perintah berikut dapat menggambarkan Anda. Perhatikan bahwa saat Anda membuat ulang boot2docker, Anda akan kehilangan gambar docker yang diunduh sebelumnya.
lalu Anda dapat pergi ke kotak virtual dan melihat ruang boot2docker dengan perintah "df -h"
sumber
Pada docker osx / saya bisa menekan tombol [ Move Disk Image ] dan itu berhasil memindahkan Docker.qcow2 (mungkin berisi kontainer / gambar)
awalnya - ketika mesin dimulai - saya masih mendapatkan Tidak ada ruang tersisa pada kesalahan perangkat tetapi segera teratasi setelah itu.
sumber
Saya mengalami masalah ini dan tidak dapat menambahkan ruang tambahan dengan UI buruh pelabuhan untuk mac, saya menginstal buruh pelabuhan dengan homebrew dan menjalankan perintah berikut saat membuat mesin saya:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
ini menambahkan dua kali lipat ruang untuk memori dan ukuran disk ke kotak virtual yang saya miliki sebelumnya dan Anda dapat menambahkan ukuran pengaturan di sini yang Anda butuhkan sesuai keinginan Anda
sumber