Terdapat dua cara untuk mencipta imej Docker: 1. Gunakan arahan "docker commit" untuk membina imej secara manual berdasarkan bekas sedia ada 2. Gunakan Dockerfile untuk membina imej secara automatik baca arahan dalam fail binaan Dockerfile secara automatik.
Persekitaran pengendalian tutorial ini: sistem linux5.9.8, versi docker-1.13.1, komputer Dell G3.
Kadangkala imej yang dimuat turun dari gudang imej Docker tidak dapat memenuhi keperluan Kami boleh membina imej sendiri berdasarkan imej asas.
Dalam apa. situasi Jadi kita perlu membina imej itu sendiri?
(1) Apabila kita tidak dapat mencari imej sedia ada, seperti aplikasi yang dibangunkan oleh kita sendiri
(2) Kita perlu menambah fungsi tertentu pada imej
binaan docker Terdapat dua cara untuk imej: docker commit
arahan dan Dockerfile
bina fail
Membina imej berdasarkan bekas sedia ada terutamanya menggunakan docker commit
arahan untuk membina imej baharu.
Terdapat tiga langkah utama dalam binaan dockercommit:
Sebagai contoh, pasang editor vim dalam imej centos dan simpan sebagai imej baharu
(1) Jalankan bekas
[root@ken1 docker]# docker run -it centos Unable to find image 'centos:latest' locally latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest
(2 ) Pasang editor vim
Editor vim mengesahkan bahawa ia tidak dipasang
[root@69f501e858a6 /]# vim bash: vim: command not found
Pasangkannya
[root@69f501e858a6 /]# yum install vim -y
(3) Simpan sebagai imej baharu
Semak dahulu imej yang sedang dijalankan
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69f501e858a6 centos "/bin/bash" 2 minutes ago Up 2 minutes quizzical_torvalds
Gunakan komit untuk menyimpan sebagai imej baharu
[root@ken1 ~]# docker commit 69f501e858a6 centos-vim sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
69f501e858a6 ialah ID bekas yang sedang berjalan, anda juga boleh menggunakan nama di bawah nama
centos-vim ialah nama imej baharu
Semak sama ada terdapat imej centos-vim
Mulakan semula imej baharu dan sahkan sama ada ia boleh ditemui menggunakan editor vim
Imej baharu boleh menggunakan editor vim
[root@ken1 ~]# docker run -it centos-vim [root@61d090898bad /]# vim [root@61d090898bad /]# vim test
Di atas menunjukkan cara menggunakan commit untuk mencipta imej baharu , tetapi docker tidak mengesyorkan menggunakan kaedah ini untuk mencipta imej atas sebab-sebab berikut:
Fail Docker ialah fail yang terdiri daripada satu set arahan program membaca Dockerfile Arahan dalam akhirnya menjana imej.
Langkah 1: Buat direktori baharu
[root@ken1 ~]# mkdir /test
Langkah 2: Tulis Dockerfile
Nama Dockerfile , dan D pertama perlu menggunakan huruf besar
[root@ken1 ~]# cat Dockerfile FROM centos RUN yum install vim -y
FROMcentos bermaksud menggunakan imej asas centos
RUN bermaksud memasang editor vim pada centos
Langkah 3: Bina Cermin
[root@ken1 ~]# docker build -t centos-vim2 .
-t diikuti dengan menyatakan nama tag (tag) bagi imej baharu
Titik terakhir menunjukkan bahawa konteks docker ialah direktori semasa. Docker akan mencari fail Dockerfile daripada konteks binaan secara lalai Kami juga boleh menentukan lokasi Dockerfile melalui parameter -f
Langkah 4: Lihat imej
<.>
Lihat struktur hierarki imej sejarah docker akan memaparkan sejarah pembinaan imej, iaitu proses pelaksanaan fail Docker . Arahan biasa fail Dcoker 1.DARINyatakan imej asas 2. PENYELENGGARATetapkan pengarang imej. Boleh jadi sebarang aksara 3.COPYSalin fail daripada konteks binaan ke imej COPY menyokong dua format: COPY src dest dan COPY ["src", "dest"]Nota: src hanya boleh membrek fail atau direktori dalam konteks binaan, iaitu, dalam direktori yang sama dengan Dockerfile 4.ADD dan COPY Begitu juga, salin fail dari konteks binaan ke imej. Perbezaannya ialah jika src ialah fail arkib (tar, zip, tgz, xz), fail tersebut akan dipindahkan secara automatik ke dest 5.ENVSet persekitaran Pembolehubah dan pembolehubah persekitaran boleh digunakan dengan arahan seterusnya, contohnya: ENV name ken RUN echo $name 6.EXPOSEProses dalam bekas yang ditentukan akan memantau Port tertentu, Docker boleh mendedahkan port 7.VOLUME mengisytiharkan fail atau direktori sebagai volum 8.WORKDIR ialah arahan RUN ,ENTRYPINT,ADD,COPY seterusnya tetapkan direktori kerja semasa dalam imej 9.RUNJalankan arahan yang ditentukan dalam bekas容器启动时运行指定的命令
dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换
设置容器启东市的命令
dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。
CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.
下面演示一个比较全面的dockerfile
[root@ken1 test]# cat Dockerfile #my Dockerfile FROM busybox MAINTAINER ken WORKDIR /ken RUN touch test COPY ["ken1","."] ADD ["wordpress.tar.gz","."] ENV name "ken"
注意:Dockerfile支持以#开头的注释
构建镜像
[root@ken1 test]# docker build -t myimage . Sending build context to Docker daemon 4.281MB Step 1/7 : FROM busybox ---> 3a093384ac30 Step 2/7 : MAINTAINER ken ---> Running in 2a73a83507ce Removing intermediate container 2a73a83507ce ---> 8c3df9b3d823 Step 3/7 : WORKDIR /ken ---> Running in 31c6f9fe2195 Removing intermediate container 31c6f9fe2195 ---> a458cf986072 Step 4/7 : RUN touch test ---> Running in e1b08ebd363c Removing intermediate container e1b08ebd363c ---> 41601920009a Step 5/7 : COPY ["ken1","."] ---> 2ebfa0933fca Step 6/7 : ADD ["wordpress.tar.gz","."] ---> d0ad29d3aa34 Step 7/7 : ENV name "ken" ---> Running in fceae6e20e63 Removing intermediate container fceae6e20e63 ---> 7efe0600e48f Successfully built 7efe0600e48f Successfully tagged myimage:latest
查看镜像
运行该镜像
[root@ken1 test]# docker run -it myimage /ken # ls ken1 test wordpress /ken # echo $name ken
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci Terdapat beberapa cara untuk mencipta imej Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!