美文网首页
第六节、Docker file制作镜像文件

第六节、Docker file制作镜像文件

作者: 妄语莫言 | 来源:发表于2019-04-17 02:58 被阅读0次

容器镜像文件的制作一般分为两种:
1、基于运行中容器制作的镜像,如开启一个容器后安装一系列软件包后利用docker commit命令将容器运行中的最上层的可写层(镜像的多层挂载下面层都是只读层)打包形成新的镜像image.
2、基于Dockerfile制作镜像,一个Dockerfile文件是一个文本文件,里面是一堆指令调用的集合

Dockerfile Format (语法格式)

一般分成两种语句注释语句及指令语句,一般不区分大小写,但是约定俗成指令用大写
指令自上而下依次执行
制作镜像时先创建专用的工作目录(自定义),然后创建Dockerfile文件,Dockerfile引用的文件都需要放到该工作目录下,也可以创建一个子目录将所有引用文件都放在该子目录下,如果有不需要打包进去的文件,可以创建一个.dockeringore文件(文件排除列表),将不需要打包文件的路径逐行添加到该文件中,这样制作镜像时会自动忽略这些文件
Dockerfile文件编辑完成后使用docker build命令生成新的镜像打好标签推送到对应的仓库

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              4ab4c602aa5e        2 weeks ago         1.84kB
nginx               latest              06144b287844        3 weeks ago         109MB
busybox             latest              e1ddd7948a1c        8 weeks ago         1.16MB
[root@localhost ~]# cd /
[root@localhost /]# mkdir mkimages
[root@localhost /]# cd /mkimages/
[root@localhost mkimages]# echo "helloworld">>index.html
[root@localhost mkimages]# vim Dockerfile
#第一行指定基础镜像,默认下从本地找,再从dockerhub上寻找,标签tag默认是最新latest,也可以用仓库@哈希码的格式
FROM   busybox:latest
#添加维护者信息,MAINTAINER(旧版本使用),现在使用标签LABLE
MAINTAINER "allan<345654857@qq.com>"
#LABLE  maintainer= "allan<345654857@qq.com>"
#COPY将宿主机上工作目录中的文件拷贝到容器中对应的目录下
COPY  index.html   /data/web/html/
基于以上3行命令可以制作一个最简单的镜像,并打上标签tag
[root@localhost mkimages]# docker  build  -t  b1test:v1.1  ./
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM busybox:latest
 ---> e1ddd7948a1c
Step 2/3 : MAINTAINER "allan <345654857@qq.com>"
 ---> Running in 75315e147fd3
Removing intermediate container 75315e147fd3
 ---> c0555949d74b
Step 3/3 : COPY index.html /data/web/html/
 ---> 382c7e0f6ce5
Successfully built 382c7e0f6ce5
Successfully tagged b1test:v1.1
[root@localhost mkimages]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
b1test              v1.1                382c7e0f6ce5        17 seconds ago      1.16MB
hello-world         latest              4ab4c602aa5e        2 weeks ago         1.84kB
nginx               latest              06144b287844        3 weeks ago         109MB
busybox             latest              e1ddd7948a1c        8 weeks ago         1.16MB
#运行一个容器检查镜像可以发现文件已经拷贝到对应目录下
[root@localhost mkimages]# docker container run --name b1 --rm  b1test:v1.1 cat /data/web/html/index.html
helloworld

继续添加其他语句

FROM busybox:latest
MAINTAINER "allan <345654857@qq.com>"
#指定镜像的工作目录,ADD命令将软件包拷贝进去
WORKDIR /usr/local/src/
#ADD支持URL可以直接网上下载软件包
ADD nginx-1.15.2.tar.gz ./
#ADD http://nginx.org/download/nginx-1.15.4.tar.gz   /usr/local/src/
#镜像指定数据卷
VOLUME /data/mysql/
#指定默认暴露的端口,动态绑定宿主机上空闲的端口,运行容器数加参数P可以暴露
EXPOSE 80/tcp


相关文章

  • 第六节、Docker file制作镜像文件

    容器镜像文件的制作一般分为两种:1、基于运行中容器制作的镜像,如开启一个容器后安装一系列软件包后利用docker ...

  • 使用 docker for Windows 打包运行Spring

    使用 Gradle 构建的SpringBoot 项目,使用 docker desktop 制作镜像文件,然后运行的...

  • docker-- cobra

    *查看docker镜像仓库 *搜索docker镜像 *拉取docker镜像文件 *运行镜像文件,并进入root终端...

  • docker常用命令

    docker images [options] (列举本地所有镜像文件) docker search [optio...

  • docker安装jenkins

    1. 启动docker,下载Jenkins镜像文件 docker pull jenkins/jenkins 2. ...

  • Docker基本概念(五)-仓库

    Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的场所。 Docker仓库和...

  • Dockerfile简介+使用

    一、Dockerfile概述: Dockerfile是docker中镜像文件的的描述文件,说的直白点就是镜像文件到...

  • 3、docker疑问篇(常见问题)

    一、镜像相关 1、如何批量清理临时镜像文件 答:可以使用 docker rmi $(docker images -...

  • Docker 的使用

    接着 Docker 入门 我们来看看 Docker 的一些常见命令。 win10上修改 docker 的镜像文件存...

  • docker面试题

    镜像相关 1、如何批量清理临时镜像文件?可以使用sudo docker rmi $(sudo docker ima...

网友评论

      本文标题:第六节、Docker file制作镜像文件

      本文链接:https://www.haomeiwen.com/subject/phdloftx.html