Docker 容器的本质是一个特殊的进程,而 Docker 镜像则是容器运行所需的文件系统。可以说Docker容器是Docker镜像的实例,镜像是容器的模板。容器是在镜像的基础上运行的,当我们修改原镜像时,并不会对正在运行的容器产生影响。
那么Docker镜像里面到底包含哪些东西那?要想知道Docker镜像里面含有什么东西,我们需要先看看Docker镜像是怎么来的,最常见的构建Docker镜像的方式是通过编写Dockerfile。
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
- 如上是一个简单的Dockerfile文件,其中FROM指定基础镜像为 nginx
- RUN命令执行shell命令向index.html 文件中写入Hello, Docker!
编写好Dockerfile后,我们可以执行命令:docker build -t nginx:v1 . 来构建镜像:
C02D9251MD6R :: ~/Downloads » docker build -t nginx:v1 . 1 ↵
[+] Building 9.3s (6/6) FINISHED
...
=> [internal] load metadata for docker.io/library/nginx:latest 3.8s
=> [1/2] FROM docker.io/library/nginx@sha256:b8f2383a95879e1ae064940d9a2 4.9s
...
=> [2/2] RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/inde 0.4s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:e8b2a9dd1015eb395f7f18d3b4502050d9c4ab919d253 0.0s
=> => naming to docker.io/library/nginx:v1 0.0s
如上可知,第一步是下载基础镜像nginx,第二步是执行echo命令修改ngnix镜像里面的index.html文件的内容
执行完毕build命令后,我们的docker镜像nginx:v1就在本地构建好嘞,我们可使用docker images查看:
C02D9251MD6R :: ~/Downloads » docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1 e8b2a9dd1015 9 minutes ago 142MB
httpd latest 6e794a483258 5 days ago 145MB