Docker file рецепт для Docker images. Как рождается Docker контейнер c помощью Docker build.
Talaan ng mga Nilalaman:
- Ano ang Dockerfile
- Lumikha ng isang Dockerfile
- Pagbuo ng Imahe
- Pagpapatakbo ng isang lalagyan
- Konklusyon
Ang isang imahe ng Docker ay ang blueprint ng mga lalagyan ng Docker na naglalaman ng application at lahat ng kailangan mo upang patakbuhin ang application. Ang isang lalagyan ay isang runtime halimbawa ng isang imahe.
Sa tutorial na ito, ipapaliwanag namin kung ano ang Dockerfile, kung paano lumikha ng isa, at kung paano bumuo ng isang imahe ng Docker na may Dockerfile.
Ano ang Dockerfile
Ang Dockerfile ay isang text file na naglalaman ng lahat ng mga utos na maaaring tumakbo ang isang gumagamit sa linya ng command upang lumikha ng isang imahe. Kasama dito ang lahat ng mga tagubilin na kailangan ni Docker upang mabuo ang imahe.
Ang mga imahe ng docker ay binubuo ng isang serye ng mga layer ng filesystem na kumakatawan sa mga tagubilin sa Dockerfile ng imahe na bumubuo ng isang maipapatupad na application ng software.
Kinukuha ng file ng Docker ang sumusunod na form:
# Comment INSTRUCTION arguments
INSTRUCTION
ay hindi sensitibo sa kaso, ngunit ang kombensyon ay ang paggamit ng UPPERCASE para sa mga pangalan nito.
Nasa ibaba ang listahan na may isang maikling paglalarawan ng ilan sa mga ginagamit na tagubilin sa Dockerfile:
- ARG - Ang tagubiling ito ay nagbibigay-daan sa iyo upang tukuyin ang mga variable na maaaring maipasa sa build-time. Maaari ka ring magtakda ng isang default na halaga. MULA - Ang batayang imahe para sa pagbuo ng isang bagong imahe. Ang tagubiling ito ay dapat ang unang pagtuturo sa di-komento sa Dockerfile. Ang tanging pagbubukod mula sa panuntunang ito ay kung nais mong gumamit ng isang variable sa argumento
FROM. Sa kasong ito,FROMay maaaring masundan ng isa o higit pang mga tagubilin saARG. LABEL - Ginamit upang magdagdag ng metadata sa isang imahe, tulad ng paglalarawan, bersyon, may-akda..etc. Maaari mong tukuyin ang higit sa isangLABEL, at ang bawat pagtuturo saLABELay isang pares na may halaga na key. RUN - Ang mga utos na tinukoy sa tagubiling ito ay isasagawa sa panahon ng proseso ng pagtatayo. Ang bawat pagtuturo ngRUNlumilikha ng isang bagong layer sa tuktok ng kasalukuyang imahe. ADD - Ginamit upang kopyahin ang mga file at direktoryo mula sa tinukoy na mapagkukunan hanggang sa tinukoy na patutunguhan sa imahe ng docker. Ang mapagkukunan ay maaaring mga lokal na file o direktoryo o isang URL. Kung ang mapagkukunan ay isang lokal na ark archive, pagkatapos ito ay awtomatikong mai-unpack sa imahe ng Docker. COPY - Katulad saADDngunit ang mapagkukunan ay maaaring lamang isang lokal na file o direktoryo. ENV - Ang tagubiling ito ay nagbibigay-daan sa iyo upang tukuyin ang isang variable ng kapaligiran. CMD - Ginamit upang tukuyin ang isang utos na naisasagawa kapag nagpatakbo ka ng isang lalagyan. Maaari ka lamang gumamit ng isang pagtuturo saCMDsa iyong Dockerfile. ENTRYPOINT - Katulad saCMD, tinutukoy ng tagubiling ito kung anong utos ang isasagawa kapag nagpapatakbo ng isang lalagyan. WORKDIR - Itinatakda ng direktiba na ito ang kasalukuyang direktoryo ng pagtatrabaho para sa mga tagubilin saRUN,CMD,ENTRYPOINT,COPY, atADD. USER - Itakda ang username oUIDna gagamitin kapag nagpapatakbo ng anumang mga sumusunod na tagubilin saRUN,CMD,ENTRYPOINT,COPY, atADD. VOLUME - Pinapagana kang mag-mount ng direktoryo ng host machine sa lalagyan. HALIMBAWA - Ginamit upang tukuyin ang port kung saan nakikinig ang lalagyan sa runtime.
Upang, ibukod ang mga file at direktoryo mula sa pagdaragdag sa imahe, lumikha ng isang
.dockerignore
file sa direktoryo ng konteksto. Ang syntax ng
.dockerignore
ay katulad sa isa sa Git's
.gitignore
file.
Para sa isang kumpletong sanggunian at detalyadong paliwanag ng mga tagubilin sa Dockerfile tingnan ang opisyal na pahina ng sangguniang Dockerfile.
Lumikha ng isang Dockerfile
Ang pinaka-karaniwang senaryo kapag lumilikha ng mga imahe ng Docker ay upang hilahin ang isang umiiral na imahe mula sa isang pagpapatala (karaniwang mula sa Docker Hub) at tukuyin ang mga pagbabagong nais mong gawin sa base na imahe. Ang pinaka-karaniwang ginagamit na imahe ng base kapag lumilikha ng mga imahe ng Docker ay Alpine dahil maliit ito at na-optimize na tatakbo sa RAM.
Sa halimbawang ito, gagawa kami ng isang imahe ng Docker para sa server ng Redis. Gagamitin namin ang pinakabagong ubuntu 18.04 bilang isang imahe ng base.
Una, lumikha ng isang direktoryo na naglalaman ng Dockerfile at lahat ng kinakailangang mga file:
mkdir ~/redis_docker
Mag-navigate sa direktoryo at lumikha ng mga sumusunod na Dockerfile:
cd ~/redis_docker
nano Dockerfile
Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD
Ipaliwanag natin ang kahulugan ng bawat linya sa Dockerfile:
- Sa linya
1tinukoy namin ang base image.Ang pagtuturo ngRUNna nagsisimula sa linya3ay i-update ang index ng apt, i-install ang package na "redis-server" at linisin ang apt cache. Ang mga utos na ginamit sa mga tagubilin ay kapareho ng mga utos na gagamitin mo upang mai-install ang redis sa server ng Ubuntu. Ang pagtuturo ng LAYUNIN ay tumutukoy sa port kung saan nakikinig ang redis server. Sa huling linya, ginagamit namin ang pagtuturo ngCMDupang itakda ang default na utos. ipapatupad iyon kapag tumatakbo ang lalagyan.
I-save ang file at isara ang editor.
Pagbuo ng Imahe
Ang susunod na hakbang ay ang pagbuo ng imahe. Upang gawin ito patakbuhin ang sumusunod na utos mula sa direktoryo kung saan matatagpuan ang Dockerfile:
docker build -t linuxize/redis.
Ang opsyon
-t
tumutukoy sa pangalan ng imahe at opsyonal na isang username at tag sa format na 'username / imagename: tag'.
Ang output ng proseso ng pagtatayo ay magmukhang katulad nito:
Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest
Kapag ang proseso ng build ay nakumpleto ang bagong imahe ay nakalista sa listahan ng imahe:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB
Pagpapatakbo ng isang lalagyan
Ngayon na ang imahe ay nilikha na nagpapatakbo ka ng isang lalagyan mula dito sa pamamagitan ng pagpapatakbo:
docker run -d -p 6379:6379 --name redis linuxize/redis
Ang mga pagpipilian na
-d
nagsasabi sa Docker na patakbuhin ang lalagyan sa hiwalay na mode, ang pagpipilian na
-p 6379:6379
ay ilalathala ang port 6379 sa host machine at ang pagpipilian ng
--name redis
tinukoy ang pangalan ng lalagyan. Ang huling argument na
linuxize/redis
ay ang pangalan ng imahe, na ginagamit upang patakbuhin ang lalagyan.
Kapag nagsimula ang lalagyan, gamitin ang sumusunod na utos upang ilista ang lahat ng mga lalagyan na tumatakbo:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis
Upang mapatunayan na gumagana ang lahat dahil dapat itong gamitin ang
redis-cli
upang kumonekta sa lalagyan ng
redis-cli
:
redis-cli ping
Ang redis server ay dapat tumugon sa
PONG
.
Konklusyon
Sakop lamang ng tutorial na ito ang mga pangunahing kaalaman sa paggamit ng Dockerfiles upang makabuo ng mga imahe. Upang malaman ang higit pa tungkol sa kung paano sumulat ng Dockerfiles at ang inirekumendang pinakamahusay na kasanayan makita ang Pinakamahusay na kasanayan para sa pagsusulat ng Dockerfiles.
Sa halip ng pagpasok ng mga linya ng code, pinapayagan ka ng App Inventor bumuo ng isang buong application sa pamamagitan ng pag-drag at pag-drop ng mga item tulad ng mga pindutan, mga kahon ng entry ng teksto, at mga larawan papunta sa tagabuo ng application. Ang Inventor ng App ay nagbibigay din sa iyo ng access sa iba't ibang mga tampok ng telepono na maaari mong isama sa iyong app tulad ng GPS, accelerometers, at pagsasama sa mga serbisyo na batay sa Web tulad ng Twitter.
[Karagdagang pagbabasa: Ang pinakamahusay na mga teleponong Android para sa bawat badyet. ]
Maramihang baguhin ang laki ng mga imahe, baguhin ang mga resolusyon nang sabay-sabay na may imahe ng kidlat ...
Paano Malaking Baguhin ang laki ng mga Imahe, Baguhin ang kanilang mga Resolusyon Sa Isang Pumunta Sa Lightning Image Resizer.
Paano alisin ang mga lalagyan ng docker, mga imahe, volume, at network
Ang patnubay na ito ay nagsisilbing isang sheet ng impostor upang matulungan ang mga gumagamit ng Docker na mapanatili ang kanilang sistema, at upang palayain ang puwang ng disk sa pamamagitan ng pag-alis ng mga hindi nagamit na mga lalagyan ng Docker, mga imahe, volume, at mga network.







