Bagaimana cara menjalankan instance buruh pelabuhan dari DockerFile?


100

Saya akhirnya menemukan cara untuk membangun dan menjalankan buruh pelabuhan.

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

Saya menautkannya ke instance redis, keren.

Ini dari awal dan saya berasumsi bahwa ketika saya membuat instance redis

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

itu menarik gambar dari repo jarak jauh?

NodeBB menawarkan Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile. Saya tidak begitu yakin bagaimana cara menggunakannya. Saya berasumsi bahwa saya entah bagaimana dapat membuat lingkungan lokal dengan memanggil Dockerfile ini di remote saya.

Apakah ini benar? Jika demikian, bagaimana cara membuat instance lokal yang mengarah ke remote?


Anda dapat membangun citra buruh pelabuhan di lingkungan lokal Anda dan menariknya secara lokal
BMW

$ cat Dockerfile | buruh pelabuhan membangun -t <image_name> - # mind the hyphen
jbobbylopez

Jawaban:


103

Unduh file dan jalankan dari direktori yang sama docker build -t nodebb .

Ini akan memberi Anda gambar di mesin lokal Anda yang bernama nodebb yang dapat Anda gunakan untuk meluncurkan wadah docker run -d nodebb(Anda dapat mengubah nodebb ke nama Anda sendiri).


1
Bagaimana cara kerjanya? Jika saya hanya memiliki dockerfile, bagaimana ia mengetahui tentang proyek saya? Apakah ada link di dockerfile tersebut? Kemudian saya berasumsi jika ada buruh pelabuhan menangani pengemasan gambar baru yang kemudian dapat saya migrasikan ke server saya. Dalam kemasan ini apakah menyerap semua aset proyek saya? Maaf jika saya terdengar cuek, buruh pelabuhan adalah konsep baru bagi saya tapi saya menikmati belajar.
Michael Joseph Aubry

2
Omong-omong, terima kasih dan apa yang <> wakili dalam contoh Anda mengapa Anda memilih <nodebb>?
Michael Joseph Aubry

Tidak ada kontainer buruh pelabuhan yang tahu tentang proyek "Anda", mereka sangat umum.
Andreas Wederbrand

3
Perintah yang Anda berikan tidak berfungsi jadi saya mencoba `docker build .` dan berhasil, tetapi karena tidak bernama saya tidak dapat menjalankannya. docker build -t <nodebb> .berikan padaku file exists: .. Saya memiliki proyek yang sudah ada yang datang dengan Dockerfilejadi saya hanya menjalankannya di dalam direktori itu.
Michael Joseph Aubry

2
Ini menjawab banyak pertanyaan saya melalui docs.docker.com/engine/reference/builder
Michael Joseph Aubry

48

Anda tidak dapat memulai container dari Dockerfile.

Prosesnya berjalan seperti ini:

Dockerfile = [ docker build] => Docker image = [ docker run] => Container Docker

Untuk memulai (atau menjalankan) container, Anda memerlukan gambar. Untuk membuat gambar Anda perlu membangun Dockerfile [1].

[1]: Anda juga bisa docker importgambar dari tarball atau lagi docker load.


29

Meskipun jawaban di atas dapat digunakan, ini sangat membantu saya, jadi saya juga menaruhnya di sini.

Dari dokumentasi :

Alih-alih menentukan konteks, Anda dapat meneruskan satu Dockerfile di URL atau menyalurkan file melalui STDIN. Untuk menyalurkan Dockerfile dari STDIN:

$ docker build - < Dockerfile

Dengan Powershell di Windows, Anda dapat menjalankan:

Get-Content Dockerfile | docker build -

Saat build selesai, jalankan perintah:

docker image ls

Anda akan melihat sesuatu seperti ini:

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

Salin ID GAMBAR Anda yang sebenarnya dan kemudian jalankan

docker run 123456789

Dimana angka di akhir adalah Image ID yang sebenarnya dari langkah sebelumnya

Jika Anda tidak ingin mengingat id gambar, Anda dapat menandai gambar Anda dengan

docker tag 123456789 pavel/pavel-build

Yang akan menandai gambar Anda sebagai pavel/pavel-build


Luar biasa bahwa pada tahun 2020 cuplikan pertama butuh waktu lama untuk ditemukan.
fullStackChris

Ini hanya jawaban yang diterima dengan lebih banyak upacara.
Michail

21

Solusi langsung dan mudah adalah:

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 - bisa menjadi port manapun

a3e628814c68 - hasil hash yang diberikan oleh perintah build sukses

CATATAN : Anda harus berada dalam direktori yang berisi Dockerfile .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.