Saya memiliki gambar docker yang ditandai me/my-image
, dan saya memiliki repo pribadi di dockerhub bernama me-private
.
Ketika saya mendorong sayame/my-image
, saya selalu memukul repo publik.
Apa sintaks yang tepat untuk secara spesifik mendorong gambar saya ke repo pribadi saya?
docker
docker-registry
Eugene Goldberg
sumber
sumber
Jawaban:
Anda harus menandai gambar Anda dengan benar terlebih dahulu dengan
registryhost
:Kemudian buruh pelabuhan mendorong menggunakan tag yang sama.
Contoh:
sumber
docker tag 518a41981a6a me-private.com/myPrivateImage && docker push me-private.com/myPrivateImage
docker login
pertama, kemudiandocker tag 518a41981a6a me-private/myPrivateImage
docker push me-private/myPrivateImage
Hanya tiga langkah sederhana:
docker login --username username
--password
yang direkomendasikan karena tidak menyimpannya dalam riwayat perintah Andadocker tag my-image username/my-repo
docker push username/my-repo
sumber
--password
bendera jika Anda tidak ingin kata sandi Anda muncul di riwayat. itu akan meminta Anda.Pertama pergi ke akun Docker Hub Anda dan buat repo. Berikut ini adalah tangkapan layar akun Docker Hub saya:
Dari gambar, Anda dapat melihat repo saya adalah "chuangg"
Sekarang masuklah ke repo dan jadikan pribadi dengan mengklik nama gambar Anda. Jadi bagi saya, saya mengklik "chuangg / gene_commited_image", lalu saya pergi ke Pengaturan -> Jadikan Privat. Kemudian saya mengikuti instruksi di layar
BAGAIMANA CARA MENGAPA GAMBAR DOCKER ANDA KEPADA DUBER HUB
Metode # 1 = Mendorong gambar Anda melalui baris perintah (cli)
1)
docker commit <container ID> <repo name>/<Name you want to give the image>
Ya, saya pikir itu harus menjadi ID wadah. Mungkin bukan ID gambar.
Misalnya =
docker commit 99e078826312 chuangg/gene_commited_image
2)
docker run -it chaung/gene_commited_image
3)
docker login --username=<user username> --password=<user password>
Misalnya =
docker login --username=chuangg [email protected]
Ya, Anda harus masuk terlebih dahulu. Logout menggunakan "docker logout"
4)
docker push chuangg/gene_commited_image
Metode # 2 = Mendorong gambar Anda menggunakan pom.xml dan baris perintah.
Catatan, saya menggunakan Profil Maven yang disebut "build-docker". Jika Anda tidak ingin menggunakan profil, hapus saja
<profiles>, <profile>, and <id>build-docker</id>
elemen - elemennya.Di dalam pom.xml induk:
Docker Terminal Command untuk menggunakan Docker Image (dari direktori tempat pom.xml Anda berada) =
mvn clean deploy -Pbuild-docker docker:push
Catatan, perbedaan antara Metode # 2 dan # 3 adalah bahwa Metode # 3 memiliki tambahan
<execution>
untuk penyebaran.Metode # 3 = Menggunakan Maven untuk secara otomatis digunakan ke Docker Hub
Tambahkan barang ini ke pom.xml induk Anda:
Buka direktori C: \ Users \ Gene.docker \ dan tambahkan ini ke file config.json Anda:
Sekarang di Docker Quickstart Terminal Anda type =
mvn clean install -Pbuild-docker
Bagi Anda yang tidak menggunakan Profil Maven, cukup ketik
mvn clean install
Ini screenshot dari pesan sukses:
Ini pom.xml lengkap saya dan tangkapan layar dari struktur direktori saya:
Inilah Direktori Eclipse saya:
Ini Dockerfile saya:
Kesalahan Umum # 1:
Solusi untuk Kesalahan # 1 = Jangan menyinkronkan
<execution>
fase dengan maven deploy karena kemudian maven mencoba untuk menyebarkan gambar 2x dan menempatkan cap waktu pada jar. Itu sebabnya saya menggunakan<phase>install</phase>
.sumber
Jika Anda docker registry adalah pribadi dan di-host sendiri Anda harus melakukan hal berikut:
Contoh:
sumber
Ada dua opsi:
Pergilah ke hub, dan buat repositori terlebih dahulu, dan tandai sebagai pribadi. Kemudian ketika Anda mendorong repo itu, itu akan menjadi pribadi. Ini adalah pendekatan yang paling umum.
masuk ke akun hub docker Anda, dan pergi ke pengaturan global Anda . Ada pengaturan yang memungkinkan Anda untuk mengatur apa visibilitas default Anda untuk repositori yang Anda dorong. Secara default itu diatur ke publik, tetapi jika Anda mengubahnya ke pribadi, semua repositori yang Anda tekan akan ditandai sebagai pribadi secara default. Penting untuk dicatat bahwa Anda perlu memiliki cukup repo pribadi yang tersedia di akun Anda, atau repo itu akan dikunci sampai Anda meningkatkan rencana Anda.
sumber
docker push
perintah. Tetapi jika saya telah memahami pertanyaan dengan benar, tidak ada jawaban yang benar dan yang diposting di atas oleh Ken Cochrane adalah satu-satunya yang harus diterima.Buat repositori di dockerhub:
$docker tag IMAGE_ID UsernameOnDockerhub/repoNameOnDockerhub:latest
$docker push UsernameOnDockerhub/repoNameOnDockerhub:latest
Catatan : di sini "repoNameOnDockerhub": repositori dengan nama yang Anda sebutkan harus ada di dockerhub
"terbaru": hanya tag
sumber
Ref: dock.docker.com
Topik ini memberikan informasi dasar tentang penggunaan dan konfigurasi registri
Jalankan registri lokal
Sebelum Anda dapat menggunakan registri, Anda harus menginstal Docker di host.
Gunakan perintah seperti berikut untuk memulai wadah registri:
start_registry.sh
Salin gambar dari Docker Hub ke registri Anda
Tarik
ubuntu:16.04
gambar dari Docker Hub.Tandai gambar sebagai
localhost:5000/my-ubuntu
. Ini membuat tag tambahan untuk gambar yang ada. Ketika bagian pertama dari tag adalah nama host dan port, Docker menafsirkan ini sebagai lokasi registri, ketika mendorong.Dorong gambar ke registri lokal yang berjalan di
localhost:5000
:Hapus gambar yang di-cache secara lokal. Ini tidak menghapus
localhost:5000/my-ubuntu
gambar dari registri Anda.Tarik
localhost:5000/my-ubuntu
gambar dari registri lokal Anda.Menurut docs.docker.com , ini sangat tidak aman dan tidak aman tidak direkomendasikan .
Edit
daemon.json
file, yang lokasi default-nya ada/etc/docker/daemon.json
di Linux atauC:\ProgramData\docker\config\daemon.json
di Windows Server. Jika Anda menggunakanDocker for Mac
atauDocker for Windows
, klikDocker icon -> Preferences -> Daemon
, tambahkaninsecure registry
.Jika
daemon.json
file tidak ada, buatlah. Dengan asumsi tidak ada pengaturan lain dalam file, itu harus memiliki konten berikut:Dengan pendaftaran yang tidak aman diaktifkan, Docker melewati langkah-langkah berikut:
Mulai ulang Docker agar perubahan diterapkan.
sumber
Login terlebih dahulu repositori pribadi Anda.
misalnya:
Dan kemudian beri tag pada gambar Anda untuk repositori pribadi Anda
misalnya:
Akhirnya dorong gambar yang Anda tandai ke repositori pribadi Anda
misalnya:
Referensi
sumber
Solusi kerja sederhana:
Buka di sini
https://hub.docker.com/
untuk membuat repositori PRIVATE dengan nama misalnyajohnsmith/private-repository
ini adalah yangNAME/REPOSITORY
akan Anda gunakan untuk gambar Anda saat membangun gambar.Pertama,
docker login
Kedua, saya menggunakan "
docker build -t johnsmith/private-repository:01 .
" (di mana 01 adalah nama versi saya) untuk membuat gambar, dan saya menggunakan "docker images
" untuk mengonfirmasi gambar yang dibuat seperti dalam kotak kuning di bawah ini: (maaf saya tidak bisa menempelkan format tabel tetapi hanya string teks saja )docker push johnsmith/private-repository:01
(Repo pribadi Anda akan ada di sini contoh https://hub.docker.com/r/johnsmith/private-repository/ )Selesai!
sumber