docker入门-构建新镜像-dockerfiles

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1、从已经创建的容器中更新镜像,并且提交这个镜像

2、使用 Dockerfile 指令来创建一个新的镜像

容器与镜像的关系

容器是镜像实例化而来,容器即进程,镜像即文件。一个镜像可以启动多个容器,镜像类似于虚拟机中的只读模板,属于一个独立的文件系统。

通过镜像创建一个容器

通过命令启动一个新容器

docker ps -a 查看所有容器

docker run < 容器ID >

docker入门-构建新镜像-dockerfiles

可以看到该ubuntu系统

docker入门-构建新镜像-dockerfiles

使用-d,表示不进入该容器,该容器后台运行

docker入门-构建新镜像-dockerfiles

目前该容器已启动

更新容器

我们进入该容器

docker exec -it f03b00737af7 /bin/bash

进入交互界面

docker入门-构建新镜像-dockerfiles

执行

apt-get update

退出容器终端

exit

通过命令 docker commit 来提交容器副本

docker commit -m="has update" -a="eve" f03b00737af7 eve/ubuntu:v2022-6-13

docker入门-构建新镜像-dockerfiles

执行成功

参数说明:

-m: 提交的描述信息

-a: 指定镜像作者

f03b00737af7:容器 ID

eve/ubuntu:v2022-6-13: 指定要创建的目标镜像名,后面是tag

文章参考:

https://blog.csdn.net/m0_46090675/article/details/121846718
https://www.runoob.com/docker/docker-image-usage.html

查看镜像

使用命令

docker images

docker入门-构建新镜像-dockerfiles

可以看到,我们本地仓库上有这个镜像。

docker入门-构建新镜像-dockerfiles

我们可以看到,该镜像虽然创立,但是没有开启一个容器实例。

docker run 7ddb91f00874    将镜像启动,创建一个容器

进入该容器看看

docker run -it 7ddb91f00874 /bin/bash

docker入门-构建新镜像-dockerfiles

成功进入,但是提示没有ipv4的地址

docker入门-构建新镜像-dockerfiles

输入pwd和ls,也确实可以使用。

从零创建新镜像

前面说过,镜像是一个文件。我们构建一个新的镜像,就是构建一个新文件。

dockerfile

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),用于构建镜像。每一条指令构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。

docker入门-构建新镜像-dockerfiles

完整的镜像

docker入门-构建新镜像-dockerfiles

执行过程

docker入门-构建新镜像-dockerfiles

参数解析

docker入门-构建新镜像-dockerfiles

参数分析

构建文件

我们先来看网上的dockerfile文件

Dockerfile
[root@localhost dockerfile]# cat Dockerfile

FROM centos:7
MAINTAINER ZYQ <714840265@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim net-tools
EXPOSE 80
CMD /bin/bash

参数解释

1、FROM centos:7 该image文件继承官方的centos7

2、ENV MYPATH /usr/local:设置环境变量MYPATH

3、WORKDIR $MYPATH:直接使用上面设置的环境变量,指定/usr/local为工作目录

4、RUN yum -y install vim && net-tools:在/usr/local目录下,运行yum -y install vim和yum -y install net-tools命令安装工具,注意安装后的所有依赖和工具都会打包到image文件中

5、EXPOSE 80:将容器80端口暴露出来,允许外部连接这个端口

6、CMD:指定容器启动的时候运行命令

执行build命令

docker build -t mycentos:1.0 .

docker入门-构建新镜像-dockerfiles

正在执行

docker入门-构建新镜像-dockerfiles

中途报错,我们来看看错误原因

docker入门-构建新镜像-dockerfiles

不能安装yum、vim等工具。

这不影响我们生成镜像

docker images       查看docker所有镜像

docker入门-构建新镜像-dockerfiles

生成的镜像有204M

docker入门-构建新镜像-dockerfiles

使用命令进入创建的新镜像

docker run -it 260ab087f6e6 /bin/bash

docker入门-构建新镜像-dockerfiles

看到可以正常操作

docker入门-构建新镜像-dockerfiles

我们来验证下系统版本

docker入门-构建新镜像-dockerfiles

主机为7.6.1819版本

docker入门-构建新镜像-dockerfiles

下节将进行容器之间的通讯。

发表评论

相关文章