cari
RumahOperasi dan penyelenggaraanDockerMembawa anda ke pemahaman yang mendalam tentang arahan DockerFile

Artikel ini membawakan anda pengetahuan yang berkaitan tentang perintah dockerFile Perintah ini mengandungi arahan Setiap arahan membina lapisan fail pengeluaran imej.

Membawa anda ke pemahaman yang mendalam tentang arahan DockerFile

Kajian yang disyorkan: "tutorial video docker"

Penjelasan terperinci tentang arahan DockerFile

Dockerfile mengandungi arahan satu dengan satu , setiap arahan membina lapisan fail pengeluaran imej.

Bina imej

docker build [选项] 

docker build -t nginx:v3 .           # . 表示Dockerfile在当前目录

FROM menentukan imej asas

Menentukan imej asas melalui FROM, jadi a Dockerfile dalam FROM ialah arahan yang diperlukan dan mestilah arahan pertama.

DARI awal, imej ini adalah konsep maya dan ia sebenarnya tidak wujud. Arahan berikut akan mula wujud sebagai lapisan pertama imej.

Arahan pelaksanaan RUN

RUN digunakan untuk melaksanakan arahan baris arahan Terdapat dua format:

format shell:

RUN 

RUN echo '<h1 id="Hello-Docker">Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
.

format exec:

RUN ["可执行文件", "参数1", "参数2"]

Union FS mempunyai had bilangan maksimum lapisan Sebagai contoh, AUFS dahulu mempunyai had maksimum 42 lapisan, tetapi kini tidak boleh melebihi 127 lapisan fungsi yang sama, && harus digunakan untuk memisahkan setiap Perintah yang diperlukan digabungkan untuk memudahkan bilangan lapisan imej

SALIN Salin fail

COPY [--chown=<user>:<group>]  
COPY [--chown=<user>:<group>] ["",... ""]</group></user></group></user>
# 把当前目录的a.txt文件复制到镜像的根目录
COPY a.txt /a.txt

TAMBAH Salin fail (muat turun fail atau nyahzip fail)

ADD [--chown=<user>:<group>] http://xxx        # 下载文件到镜像的目标路径
ADD [--chown=<user>:<group>] ./a.tar.gz        # 复制压缩包,并自动解压到目标路径</group></user></group></user>

CMD menentukan arahan permulaan lalai bagi proses utama kontena

CMD ["可执行文件", "参数1", "参数2"...]
# 指定进入容器马上指定 cat /a.txt

CMD ["sh","-c", "cat /a.txt"]

Apabila melaksanakan imej docker run -it, jika Jika arahan tidak dinyatakan, ia akan serupa dengan /bin/bash, dan sh -c cat /a.txt akan dilaksanakan secara automatik proses utama kontena akan ditentukan mengikut CMD yang ditentukan pengguna

ENTRYPOINT, serupa dengan CMD

Formatnya konsisten dengan CMD, perbezaannya

1. Gunakan ENTRYPOINT untuk menghantar parameter

Tentukan ENTRYPOINT dalam Dockerfile [ "curl", "-s", "http ://myip.ipip.net" ], apabila baris arahan melepasi docker run myip -i, parameter -i akan dihantar ke arahan ENTRYPOINT Akhirnya, apabila memasuki bekas
, bekas akan melaksanakan curl -s http:// myip.ipip.net -i

. 2. Lakukan beberapa kerja permulaan yang tiada kaitan dengan CMD Ia tiada kaitan dengan CMD bekas Tidak kira apa pun CMD itu, kerja prapemprosesan perlu dilakukan terlebih dahulu.

Serupa dengan ENTRYPOINT ["docker-entrypoint.sh"] Skrip ini menyemak sama ada identiti pengguna adalah sah, dsb.

ENV menetapkan pembolehubah persekitaran

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...</value2></key2></value1></key1></value></key>

Parameter binaan ARG

ARG [=]

Arahan ARG mempunyai julat yang sah Jika dinyatakan sebelum arahan FROM, ia hanya boleh digunakan dalam arahan FROM.

ARG DOCKER_USERNAME=library

FROM ${DOCKER_USERNAME}/alpine

Jika dinyatakan selepas FROM, pembolehubah yang digunakan dalam setiap peringkat mesti dinyatakan secara berasingan dalam setiap peringkat

FROM ${DOCKER_USERNAME}/alpine

# 在FROM 之后使用变量,必须在每个阶段分别指定
ARG DOCKER_USERNAME=library

RUN set -x ; echo ${DOCKER_USERNAME}

JILID tanpa nama kelantangan

VOLUME ["", ""...]
VOLUME 

Untuk mengelakkan pengguna daripada terlupa untuk melekapkan direktori di mana fail dinamik disimpan sebagai volum semasa masa jalan, dalam Dockerfile, anda boleh menentukan direktori tertentu untuk dipasang sebagai volum tanpa nama terlebih dahulu, supaya jika pengguna tidak menyatakan pelekap pada masa jalan, Apabila dimuatkan, aplikasinya boleh berjalan seperti biasa tanpa menulis sejumlah besar data ke lapisan storan bekas

Direktori /data di sini akan dipasang secara automatik sebagai volum tanpa nama apabila bekas sedang berjalan.

EXPOSE port terdedah

EXPOSE  [...]

Arahan EXPOSE mengisytiharkan port bahawa kontena menyediakan perkhidmatan semasa EXPOSE hanya mengisytiharkan port yang ingin digunakan oleh bekas itu dan tidak melakukan pemetaan port secara automatik pada hos.

Menulis pernyataan sedemikian dalam Dockerfile mempunyai dua faedah Satu adalah untuk membantu pengguna imej memahami port pengawal perkhidmatan imej ini untuk memudahkan pemetaan konfigurasi; pemetaan semasa runtime, iaitu, apabila docker run -P digunakan, port EXPOSE akan dipetakan secara automatik dan rawak.

Untuk membezakan EXPOSE daripada menggunakan -p :

-p ialah untuk memetakan pelabuhan hos dan pelabuhan kontena Dalam erti kata lain, ia mendedahkan perkhidmatan pelabuhan kontena yang sepadan kepada dunia luar.

WORKDIR menentukan direktori kerja Jika direktori itu tidak wujud, WORKDIR akan mencipta direktori

Contoh 1:
WORKDIR 

Contoh 2 :
WORKDIR /app

RUN echo "hello" > world.txt

WORKDIR /a
WORKDIR b
WORKDIR c

RUN pwd

## RUN pwd 的工作目录为 /a/b/c
USER menentukan pengguna semasa

Jika skrip dilaksanakan sebagai root dan anda ingin menukar identiti semasa pelaksanaan, sebagai contoh, anda ingin menggunakan pengguna yang mantap Gunakan pengguna yang baik untuk menjalankan proses perkhidmatan Jangan gunakan su atau sudo Ini memerlukan konfigurasi yang lebih menyusahkan dan sering menyebabkan ralat dalam persekitaran yang tiada TTY. Adalah disyorkan untuk menggunakan gosu.
USER [:]

# 建立 redis 用户,并使用 gosu 换另一个用户执行命令
RUN groupadd -r redis && useradd -r -g redis redis

# 下载 gosu
RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.12/gosu-amd64" \
    && chmod +x /usr/local/bin/gosu \
    && gosu nobody true
    
# 设置 CMD,并切换到redis用户执行
CMD [ "exec", "gosu", "redis", "redis-server" ]
HEALTHCHECK memberitahu Docker cara menentukan sama ada status kontena adalah normal

Pilihan:
HEALTHCHECK [选项] CMD :设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令

Bila dalam cermin Selepas menyatakan arahan HEALTHCHECK, gunakannya untuk memulakan bekas Keadaan awal akan bermula Selepas arahan HEALTHCHECK berjaya, ia akan menjadi sihat beberapa kali berturut-turut .
--interval=:两次健康检查的间隔,默认为 30 秒;
--timeout=:健康检查命令运行超时时间,如果超过这个时间,本次健康检查就被视为失败,默认 30 秒;
--retries=:当连续失败指定次数后,则将容器状态视为 unhealthy,默认 3 次

SEMAK KESIHATAN hanya boleh muncul sekali Jika berbilang ditulis, hanya yang terakhir akan berkuat kuasa

CMD 命令的返回值决定了该次健康检查的成功与否:0:成功;1:失败

ONBUILD 指定某些命令只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行

ONBUILD 
# 举例如下Dockerfile,初次构建为镜像my-node时,ONBUILD的三行命令不会执行

FROM node:slim
RUN mkdir /app
WORKDIR /app
ONBUILD COPY ./package.json /app
ONBUILD RUN [ "npm", "install" ]
ONBUILD COPY . /app/
CMD [ "npm", "start" ]

# 只要当其他镜像 FROM my-node 从上面镜像作为基础镜像进行构建时,ONBUILD 的命令开始执行

LABEL 为镜像添加元数据

LABEL <key>=<value> <key>=<value> <key>=<value> ...</value></key></value></key></value></key>
# 标注镜像的作者

LABEL org.opencontainers.image.authors="yeasy"

SHELL 指定执行shell命令的参数

SHELL ["可执行程序", "参数"]
SHELL ["/bin/sh", "-c"]

RUN lll ; ls             # 这里的shell命令将通过 /bin/sh -c 的方式执行

推荐学习:《docker视频教程

Atas ialah kandungan terperinci Membawa anda ke pemahaman yang mendalam tentang arahan DockerFile. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:CSDN. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Menguasai Docker: Panduan untuk Pengguna LinuxMenguasai Docker: Panduan untuk Pengguna LinuxApr 18, 2025 am 12:08 AM

Menggunakan Docker di Linux dapat meningkatkan kecekapan pembangunan dan memudahkan penggunaan aplikasi. 1) Tarik Ubuntu Imej: dockerpullubuntu. 2) Jalankan Ubuntu Container: Dockerrun-itubuntu/bin/bash. 3) Buat dockerfile yang mengandungi nginx: fromubuntu; runapt-getupdate && apt-getinstall-ynginx; dedoman80. 4) Bina imej: dockerbuild-tmy-nginx. 5) Jalankan bekas: Dockerrun-D-P8080: 80

Docker on Linux: Aplikasi dan Kes GunakanDocker on Linux: Aplikasi dan Kes GunakanApr 17, 2025 am 12:10 AM

Docker memudahkan penggunaan aplikasi dan pengurusan di Linux. 1) Docker adalah platform kontena yang membungkus aplikasi dan kebergantungan mereka ke dalam bekas ringan dan mudah alih. 2) Pada Linux, Docker menggunakan cgroup dan ruang nama untuk melaksanakan pengasingan kontena dan pengurusan sumber. 3) Penggunaan asas termasuk menarik imej dan bekas yang berjalan. Penggunaan lanjutan seperti DockerCompose boleh menentukan aplikasi multi-kontainer. 4) Debug biasa digunakan dockerlogs dan arahan dockerexec. 5) Pengoptimuman prestasi dapat mengurangkan saiz imej melalui pembinaan pelbagai peringkat, dan menjaga mudah dockerfile adalah amalan terbaik.

Docker: Aplikasi Containerizing untuk Mudah Alih dan SkalaDocker: Aplikasi Containerizing untuk Mudah Alih dan SkalaApr 16, 2025 am 12:09 AM

Docker adalah alat berasaskan teknologi kontena Linux yang digunakan untuk membungkus, mengedarkan dan menjalankan aplikasi untuk meningkatkan mudah alih aplikasi dan skalabiliti. 1) Perintah DockerBuild dan Dockerrun boleh digunakan untuk membina dan menjalankan bekas Docker. 2) DockerCompose digunakan untuk menentukan dan menjalankan aplikasi Docker Multi-Container untuk memudahkan pengurusan microservice. 3) Menggunakan pembinaan pelbagai peringkat dapat mengoptimumkan saiz imej dan meningkatkan kelajuan permulaan aplikasi. 4) Melihat log kontena adalah cara yang berkesan untuk masalah kontena debug.

Cara Memulakan Bekas oleh DockerCara Memulakan Bekas oleh DockerApr 15, 2025 pm 12:27 PM

Docker Container Startup Langkah: Tarik Imej Bekas: Run "Docker Pull [Mirror Name]". Buat bekas: Gunakan "Docker Buat [Pilihan] [Nama Mirror] [Perintah dan Parameter]". Mulakan bekas: Jalankan "Docker Start [Nama Container atau ID]". Semak Status Kontena: Sahkan bahawa bekas sedang berjalan dengan "Docker PS".

Cara Melihat Log dari DockerCara Melihat Log dari DockerApr 15, 2025 pm 12:24 PM

Kaedah untuk melihat log Docker termasuk: Menggunakan arahan Log Docker, contohnya: Log Docker Container_Name Gunakan arahan docker exec untuk menjalankan /bin /sh dan lihat fail log, contohnya: docker exec -it container_name /bin /sh; Cat /var/log/container_name.log Gunakan arahan log docker-compose compose, contohnya: docker-compose -f docker-com

Cara memeriksa nama bekas DockerCara memeriksa nama bekas DockerApr 15, 2025 pm 12:21 PM

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

Cara membuat bekas untuk DockerCara membuat bekas untuk DockerApr 15, 2025 pm 12:18 PM

Buat bekas di Docker: 1. Tarik Imej: Docker Pull [Nama Cermin] 2. Buat bekas: Docker Run [Options] [Mirror Name] [Command] 3. Mulailah bekas: Docker Start [Nama Container]

Cara keluar dari bekas dengan DockerCara keluar dari bekas dengan DockerApr 15, 2025 pm 12:15 PM

Empat cara untuk keluar dari Docker Container: Gunakan Ctrl D di terminal kontena masukkan perintah keluar di terminal kontena Gunakan Docker Stop & lt; container_name & gt; Perintah Gunakan Docker Kill & lt; container_name & gt; Perintah di terminal tuan rumah (keluar kuasa)

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).