Il existe deux façons de créer une image Docker : 1. Utilisez la commande "docker commit" pour créer manuellement l'image basée sur le conteneur existant ; 2. Utilisez Dockerfile pour créer automatiquement l'image. Le programme Docker générera automatiquement l'image. en lisant les instructions dans le fichier de construction Dockerfile.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version docker-1.13.1, ordinateur Dell G3.
Parfois, l'image téléchargée depuis l'entrepôt d'images Docker ne peut pas répondre aux exigences. Nous pouvons créer notre propre image basée sur une image de base.
Dans quelles circonstances devons-nous créer l'image nous-mêmes ?
(1) Lorsque nous ne trouvons pas une image existante, comme une application développée par nous-mêmes
(2) Nous devons ajouter des fonctions spécifiques à l'image
Il existe deux façons pour Docker de créer une image : docker commit et fichier de build Dockerfile
docker commit
命令与Dockerfile
构建文件
基于已有容器构建镜像主要是通过docker commit
docker commit
commande pour créer une nouvelle image. Enregistrer le conteneur en tant que nouvelle image
Par exemple, installez l'éditeur vim dans l'image centos et enregistrez-le en tant que nouvelle image (1) Exécutez le conteneur[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
[root@69f501e858a6 /]# vim bash: vim: command not found
[root@69f501e858a6 /]# yum install vim -y
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69f501e858a6 centos "/bin/bash" 2 minutes ago Up 2 minutes quizzical_torvalds
[root@ken1 ~]# docker commit 69f501e858a6 centos-vim sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
69f501e858a6 est l'ID du conteneur en cours d'exécution Vous pouvez également utiliser le nom ci-dessous
centos-vim est le nom de la nouvelle image.Vérifiez s'il existe une image centos-vim
Redémarrez la nouvelle image, vérifiez si vous pouvez utiliser l'éditeur vim
Vous pouvez découvrir de nouvelles images en utilisant l'éditeur vim
[root@ken1 ~]# docker run -it centos-vim [root@61d090898bad /]# vim [root@61d090898bad /]# vim test
Dockerfile pour construire l'image
Le premier Dockerfike
Étape 1 : Créer un nouveau répertoire
[root@ken1 ~]# mkdir /test
Étape 2 : Écrire un Dockerfile
Le nom s'appelle Dockerfile, et le premier D doit être en majuscule
[root@ken1 ~]# cat Dockerfile FROM centos RUN yum install vim -y
FROM centos signifie utiliser centos comme base image
RUN signifie installer l'éditeur vim sur centos
Étape 3 : Construire l'image
[root@ken1 ~]# docker build -t centos-vim2 .
Spécifiez le nom de la balise (tag) de la nouvelle image après -t
Le dernier point indique que le contexte du docker est le contexte actuel. annuaire. Docker recherchera le fichier Dockerfile à partir du contexte de construction par défaut. Nous pouvons également spécifier l'emplacement du Dockerfile via le paramètre -f : Afficher l'image Afficher la hiérarchie des images. l'historique de construction de l'image, qui est le processus d'exécution du Dockerfile.
Instructions communes de Dcokerfile 1.FROM
2. MAINTAINERDéfinissez l'auteur de l'image. Il peut s'agir de n'importe quel caractère
3.COPY
Remarque : src ne peut que être copié Les fichiers ou répertoires dans le contexte de construction dynamique ne peuvent se trouver que dans le même répertoire que le Dockerfile
est similaire à COPY, copiant les fichiers du contexte de construction vers l'image.
5.ENV
Définissez les variables d'environnement, qui peuvent être utilisées par des instructions ultérieures, telles que Comme:
ENV nameken RUN echo $name
Le processus dans le conteneur spécifié écoutera un certain port et Docker peut exposer le port
7.VOLUME
8.WORKDIR
Définissez le répertoire de travail actuel dans l'image pour les instructions RUN, ENTRYPINT, ADD, COPY suivantes
Exécutez la commande spécifiée dans le conteneur
容器启动时运行指定的命令
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视频教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!