0
点赞
收藏
分享

微信扫一扫

docker入门-构建新镜像-dockerfiles

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

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

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


容器与镜像的关系


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


通过镜像创建一个容器


通过命令启动一个新容器


docker ps -a 查看所有容器

docker run < 容器ID >


docker入门-构建新镜像-dockerfiles_docker


可以看到该ubuntu系统


docker入门-构建新镜像-dockerfiles_docker入门_02


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


docker入门-构建新镜像-dockerfiles_docker入门_03


目前该容器已启动


更新容器


我们进入该容器


docker exec -it f03b00737af7 /bin/bash


进入交互界面


docker入门-构建新镜像-dockerfiles_docker入门_04


执行


apt-get update


退出容器终端


exit


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


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


docker入门-构建新镜像-dockerfiles_docker入门_05


执行成功


参数说明:

-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入门_06


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


docker入门-构建新镜像-dockerfiles_docker入门_07


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


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


进入该容器看看


docker run -it 7ddb91f00874 /bin/bash


docker入门-构建新镜像-dockerfiles_docker_08


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


docker入门-构建新镜像-dockerfiles_docker_09


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


从零创建新镜像


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


dockerfile


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


docker入门-构建新镜像-dockerfiles_docker_10


完整的镜像


docker入门-构建新镜像-dockerfiles_docker_11


执行过程


docker入门-构建新镜像-dockerfiles_docker入门_12


参数解析


docker入门-构建新镜像-dockerfiles_docker_13


参数分析


构建文件


我们先来看网上的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_14


正在执行


docker入门-构建新镜像-dockerfiles_docker入门_15


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


docker入门-构建新镜像-dockerfiles_docker入门_16


不能安装yum、vim等工具。


这不影响我们生成镜像


docker images       查看docker所有镜像


docker入门-构建新镜像-dockerfiles_docker入门_17


生成的镜像有204M


docker入门-构建新镜像-dockerfiles_docker入门_18


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


docker run -it 260ab087f6e6 /bin/bash


docker入门-构建新镜像-dockerfiles_docker入门_19


看到可以正常操作


docker入门-构建新镜像-dockerfiles_docker_20


我们来验证下系统版本


docker入门-构建新镜像-dockerfiles_docker入门_21


主机为7.6.1819版本


docker入门-构建新镜像-dockerfiles_docker_22


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


举报

相关推荐

0 条评论