Les images de base incluent : 1. Images d'application (nginx, redis, mongo, mysql, httpd, php, tomcat, etc.) ; 2. Images de langage de programmation (node, oraclejdk, openjdk, python, golang, etc.) ; . Images vierges « scratch ».
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version docker-1.13.1, ordinateur Dell G3.
Nous utilisons généralement une image comme base et la personnalisons, qui est l'image de base.
C'est comme exécuter un conteneur d'images nginx
puis apporter des modifications. L'image de base doit être spécifiée dans DockerFile (FROM consiste à spécifier l'image de base, donc FROM est une instruction nécessaire dans un Dockerfile et doit être la première instruction)nginx
镜像的容器,再进行修改一样。在DockerFile中基础镜像是必须指定的 (FROM 就是指定 基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令)
比如构建一个Java应用的镜像,选择一个Oracle JDK的镜像作为基础镜像比选择一个alpine镜像作为基础镜像更方便。
在 Docker Hub 上有非常多的高质量的官方镜像,可以在其中寻找一个最符合我们最终目标的镜像为基础镜像进行定制。
有应用镜像,如 nginx
、redis
、mongo
、mysql
、httpd
、php
、tomcat
等;
有方便开发、构建、运行各种语言应用的编程语言镜像,如 node
、oraclejdk
,openjdk
、python
、ruby
、golang
等。
还有更为基础的操作系统镜像,如 ubuntu
、debian
、centos
、fedora
、alpine
等,这些操作系统的软件库为我们提供了更广阔的扩展空间。
除了选择现有镜像为基础镜像外,Docker 还存在一个特殊的镜像,名为 scratch
。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
如果你在DockerFIle中以 scratch
为基础镜像的话(FROM scratch
),意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一层开始存在。不以任何系统为基础,直接将可执行文件复制进镜像的做法并不罕见,比如 swarm
、coreos/etcd
。对于 Linux 下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接 FROM scratch
Par exemple, pour créer une image d'application Java, choisissez une mise en miroir Oracle JDK comme image de base est plus pratique que de choisir une image alpine comme image de base.
nginx
, redis
, mongo
, mysql code> , <code>httpd
, php
, tomcat
, etc. ; 🎜🎜Il existe des images de langage de programmation, tels que node
, oraclejdk
, openjdk
, python
. , rubis
, golang
etc. 🎜🎜Il existe également des images de système d'exploitation plus basiques, telles que ubuntu
, debian
, centos
, fedora
, alpine
, etc. Les bibliothèques logicielles de ces systèmes d'exploitation nous offrent un espace d'extension plus large. 🎜🎜En plus de sélectionner une image existante comme image de base, Docker dispose également d'une image spéciale nommée scratch
. Cette image est un concept virtuel et n'existe pas réellement. Elle représente une image vierge. 🎜🎜Si vous utilisez scratch
comme image de base dans DockerFIle (FROM scratch
), cela signifie que vous n'êtes basé sur aucune image, et les instructions écrites ensuite seront les mêmes La première couche de l'image commence à exister. Il n'est pas rare de copier directement des fichiers exécutables dans des images sans s'appuyer sur aucun système, comme swarm
, coreos/etcd
. Pour les programmes compilés statiquement sous Linux, il n'est pas nécessaire qu'un système d'exploitation fournisse un support d'exécution. Toutes les bibliothèques requises sont déjà dans le fichier exécutable, donc directement FROM scratch
augmentera la taille de l'image. compact. 🎜De nombreuses applications développées à l'aide du langage Go utilisent cette méthode pour créer des images🎜, c'est une des raisons pour lesquelles certains pensent que Go est un langage particulièrement adapté à l'architecture de microservices de conteneurs. 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo 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!