Dockerfile 制作镜像|学习笔记

简介: 快速学习 Dockerfile 制作镜像

开发者学堂课程【深入解析 Docker 容器化技术Dockerfile 制作镜像】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/659/detail/10951


Dockerfile 制作镜像

 

内容介绍

一、操作步骤

二、案例操作

 

一、操作步骤

在上一章节中介绍了 DSL 语法,也就是如何通过 docker build 去构建镜像。这节课将讲解通过 Dockerfile 制作镜像,构建镜像步骤如下:

1创建一个目录

创建目录原因:因为后期可能会制作很多的镜像,那么制作不同的镜像肯定要制作不同的 Dockerfile 文件,而在这样的过程中可以通过这个目录去区分目录里面制作或者运行的是那个镜像。

2、在目录下创建 Dockerfile 文件以及其他文件,文件创建完成后要进行编写编写相关的指令,这个指令则必须严格参考 DSL 语法。

3、紧接着通过 docker builder 构建镜像

4、通过构建的镜像启动容器

 

二、案例操作

下面参考上述步骤进行演示:

1、新建文件夹

首先创建一个文件夹 rw_test,然后进入到文件夹当中创建文件 Dockerfile,注意在这过程中D必须大写,如:

[root@localhost ~]# mkdir rw_ test

[root@localhost ~]# cd rw_test/

2、编辑 Dockerfile 文件

[root@localhost rw_test]# vim Dockerfile

3、编辑内容

然后在文件中写入内容如下:

#pull down centos image

FROM docker. io/centos

MAINTAINER ruanwen onlien033_login@126. com

#install nginx

RUN yum install -y pcre pcre-devel openssl openssl-devel gcc gcc+ wget vim net-tools

RUN useradd www -M -s /sbin/nologin

RUN cd /usr/local/src && wget http://nginx .org/download/nginx-1.8.0.tar.gz && tar -zxvf nginx-1.8.0.tar.gz

RUN cd /usr/local/src/nginx-1.8.0 && ./configure -- prefix=/usr/local/nginx --user=www --group=www --with-http_ stub_ status_module --with-http_ ssl_ module && make && make install

ENTRYPOINT /usr/ local /nginx/sbin/nginx && tail -f /usr/ local/nginx/logs/access.log

以上脚本中 FROM 为指定基础镜像,MAINTAINER 为指定镜像的创建者,就是镜像维护的作者,RUN 命令为安装一些软件,在这里指令安装的是 nginx,在 ENTRYPOINT 指令下可以看到 nginx/sbin/下有一个 nginx,代表启动nginx,相当于之前要一步步的做,而现在是全部写到脚本当中。

4、在 rw_test 目录下构建镜像

拷贝过来后再在 rw_test 目录下通过 docker build 去构建镜像。命令格式为

docker build -t rw_nginx --rm=true

docker build 指令加上-t 选项,-t 代表生成镜像的名字,表示选择指定生成镜像的用户名,仓库名和 tag-- rm=true 表示指定在生成镜像过程中会删除中间产生的临时文件或临时容器,--rm为remove 的意思,.表示当前目录,也就是要通过当前 Dockerfile 文件去构建。

注意:上面构建命令中最后的.符号不要漏了,表示使用当前目录下的 Dockerfile 构建镜像

进行查看本地镜像,如:

[root@localhost ~]# docker images

REPOSITORY  TAG  IMAGE ID       CRATED      SIZE

mytomcat   latest  505be517d555 4 seconds ago 797MB

centos      latest  67fa590cfc1c   4 weeks ago  202MB

可以看到现在的本地镜像只有 mytomcat 和 centos 镜像,并没有其他镜像,此时再次执行构建镜像,如:

[root@localhost rw_test]# docker build -t rw_nginx --rm=true

可以看到一共分为7步,按照这里面的指令运行每一个步骤。那么由于在这个过程中要下载安装一些环境,所以运行是需要一点时间的。如果制作完成后能在本地看到镜像的名字。在安装过程中编译需要 JCC 工具,所以脚本中 RUN命令指定了要安装 JCC。运行完成后显示 Successfully 即安装完成。完成后查看本地有没有镜像 rw_nginx,如:

[root@localhost rw_test]# docker images

REPOSITORY  TAG  IMAGE ID       CRATED      SIZE

rw_nginx    latest  cbd149510b76 13 seconds ago 440MB

结果如上说明成功构建了 rw_nginx 镜像。以上过程就是通过 Dockerfile 去构建镜像,整个过程中也是用到的Dockerfile 里面指定的语法规则。

5、测试

接下来创建好镜像后是可以进行访问的,如:

[root@localhost rw_test]# docker run -ti -d --name test_nginx -p 8899:80 rw_nginx /bin/bash

命令表示 docker run 创建了一个容器名为 test_nginx,同样做了一个端口映射,rw_nginx 为本地的镜像,然后回车,结果为:

00elc91f4a969a397a552d6e8ac569a3577df2efe5681ea4165c02e3b511ce5a

即容器创建成功。创建完成后进行启动 test_nginx,如:

[root@localhost rw_test]# docker exec test_nginx /bin/bash

因为本机默认是80端口,映射到宿主机是8899,所以通过浏览器访问: http://ip:8899,访问网页界面如下:

image.png

访问界面如上,说明通过 Dockerfile 构建的镜像是没问题的,因为已经基于这个构架创建了容器,并且是可以直接访问的。

相关文章
|
Java Linux Docker
利用jar包制作docker镜像
本文是博主学习docker制作镜像的记录,希望对大家有所帮助。
485 0
|
24天前
|
Kubernetes 搜索推荐 应用服务中间件
制作KubeVirt镜像
制作KubeVirt镜像
60 13
|
3月前
|
应用服务中间件 Shell nginx
制作docker镜像的dockerfile编写规则汇总
制作docker镜像的dockerfile编写规则汇总
|
3月前
|
Docker 容器
Docker使用Dockerfile制作镜像
Docker使用Dockerfile制作镜像
41 0
|
Linux Shell Go
如何制作docker镜像
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
如何制作docker镜像
|
Kubernetes 测试技术 Docker
通过Dockerfile制作docker镜像
通过Dockerfile制作docker镜像
169 0
通过Dockerfile制作docker镜像
|
Ubuntu 应用服务中间件 Linux
Docker | 镜像浅析,以及制作自己的镜像
Docker | 镜像浅析,以及制作自己的镜像
180 0
Docker | 镜像浅析,以及制作自己的镜像
|
Java 应用服务中间件 Shell
Docker commit 制作镜像|学习笔记
快速学习Docker commit 制作镜像
354 0
Docker commit 制作镜像|学习笔记
|
Linux 开发工具
8、使用dockerfile制作镜像出错的问题解决
8、使用dockerfile制作镜像出错的问题解决
8、使用dockerfile制作镜像出错的问题解决
|
应用服务中间件 开发工具 nginx
如何制作一个简单的Dockerfile?
一、什么是 Dockerfile? Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了Dockerfile之后,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成镜像即可,省去了敲命令的麻烦。 二、Dockerfile文件格式