Mohammad Jawad Barati
Mohammad Jawad Barati
خواندن ۲ دقیقه·۴ سال پیش

ساختن ایمیج از طریق docker API

برای ساختن ایمیج به اندپوینت زیر درخواست POST ارسال میکنیم. ایمیج از روی یه tar و Dockerfile ساخته میشه. نکته اینه که میتونی اسم Dockerfile رو هر چیزی بزاری و بعدش با ست کردن کوئری استرینگ بگی Dockerfile کیه.

/build

قبل از ساختن ایمیج از روی داکر فایل daemon داکر میاد یه ولیدیشن روی Dockerfile میره. اگه اشتباهی داشته باشه ارور میده.

ست کردن کوئری استرینگ ها

ست کردن dockerfile

مسیر Dockerfile رو بهش میدی. ولی اگه remote رو مشخص کرده باشی میاد توی اون دنبال Dockerfile میگرده. مسیر رو چجوری باید بهش داد؟


ست کردن t

تگی که به ایمیج داده میشه

ست extrahosts

ست کردن remote

If the URI points to a single text file, the file’s contents are placed into a file called Dockerfile and the image is built from that file.

If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build.

If the URI points to a tarball and the dockerfile parameter is also specified, there must be a file with the corresponding path inside the tarball.

برای دادن URI ریپوزیتوری:

  1. اون URI به یه Dockerfile اشاره بکنه، ایمیج از روی اون داکر فایل ساخته میشه. البته تا جایی که من تست کردم مشکلی حل نشد. یعنی آدرس گیت هاب رو دادم ولی بهم گفت: error fetching: fatal: Couldn't find remote ref master\n: exit status 128
  2. اون URI به یه tar اشاره بکنه، اون فایل دانلود میشه و بعدش توی ایمیج قرار میگیره.
  3. اون URI به یه tar اشاره بکنه و توی کوئری استرینگ مسیر dockerfile هم داده شده باشه.


https://forums.docker.com/t/how-to-build-an-image-using-docker-api/31807

https://forums.docker.com/t/how-to-build-an-image-using-docker-api/31807/2

https://medium.com/better-programming/docker-tips-about-the-build-context-dbc76505e178#:~:text=What%20Is%20the%20Build%20Context%3F&text=The%20build%20context%20is%20the,the%20filesystem%20of%20the%20image.



نکته: وقتی داری توی terminal برای ساخت ایمیج از روی یه داکر فایل اقدام میکنی حتما شده که به این ارور برخورد بکنی Docker build error, archive/tar: sockets not supported. یعنی چی؟ میدونی داستان اینجا هست که چونکه دستورات اجرا شده از طریق ترمینال هم برای docker API درخواست رو ارسال میکنه و این یعنی اینکه قبل از اینکه Dockerfile رو برای daemon داکر بفرسته اونو tar میکنه.

و چونکه توی اون دایرکتوری که دستور docker build . رو زدی یه فایل socket وجود داره این ارور رو داده.

dockerfiledocker apidocker builddocker
برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
شاید از این پست‌ها خوشتان بیاید