docker入门-构建新镜像-dockerfiles

网友投稿 237 2022-10-19

docker入门-构建新镜像-dockerfiles

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

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

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

容器与镜像的关系

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

通过镜像创建一个容器

通过命令启动一个新容器

docker ps -a 查看所有容器docker run < 容器ID >

可以看到该ubuntu系统

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

目前该容器已启动

更新容器

我们进入该容器

docker exec -it f03b00737af7 /bin/bash

进入交互界面

执行

apt-get update

退出容器终端

exit

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

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

执行成功

参数说明:

-m: 提交的描述信息

-a: 指定镜像作者

f03b00737af7:容器 ID

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

文章参考:

images

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

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

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

进入该容器看看

docker run -it 7ddb91f00874 /bin/bash

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

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

从零创建新镜像

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

dockerfile

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

完整的镜像

执行过程

参数解析

参数分析

构建文件

我们先来看网上的dockerfile文件

Dockerfile[root@localhost dockerfile]# cat Dockerfile FROM centos:7MAINTAINER ZYQ <714840265@qq.com>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vim net-toolsEXPOSE 80CMD /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 .

正在执行

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

不能安装yum、vim等工具。

这不影响我们生成镜像

docker images 查看docker所有镜像

生成的镜像有204M

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

docker run -it 260ab087f6e6 /bin/bash

看到可以正常操作

我们来验证下系统版本

主机为7.6.1819版本

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于springboot
下一篇:Docker系列之基本概念与安装 (一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~