语法详解

是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

基于构建镜像可以使用 build命令。 build命令中使用-f可以指定具体的文件。

1.1 FROM

基础镜像,必须是可以下载下来的,定制的镜像都是基于 FROM 的镜像。

1.2

指定镜像的作者信息。

1.3 RUN

指定在当前镜像构建过程中要运行的命令。包含两种模式:

--Shell

1.4 指令

指定启动容器的端口。

作用:

格式:

[...]

1.5 CMD

类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

1.6

类似于 CMD 指令,但其不会被 run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 指令指定的程序。

但是, 如果运行 run 时使用了 -- 选项,将覆盖 指令指定的程序。

优点:在执行 run 的时候可以指定 运行所需的参数。

注意:如果 中如果存在多个 指令,仅最后一个生效。

1.7 COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

1.8 ADD

ADD 的优点:

在执行 为 tar 压缩文件的话,会自动复制并解压到 。

ADD 的缺点:

在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

1.9

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

作用:

在启动容器 run 的时候,我们可以通过 -v 参数修改挂载点。

VOLUME [“/data”]

1.10

指定工作目录。用 指定的工作目录,会在构建镜像的每一层中都存在。( 指定的工作目录镜像文件格式,必须是提前创建好的)。

build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 创建的目录才会一直存在。

1.11 ENV

设置环境变量:

ENV  
ENV =...

1.12 USER

用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。

格式:

USER user:group

1.13

用于延迟构建命令的执行。

简单的说,就是 里用 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 构建时候,会执行 test-build 的 里的 指定的命令。

构建nginx镜像

实验机器1台

10.0.0.7

web01

2.1 首先先准备一个的镜像镜像文件格式,第一步编写

三个文件要放在同一级目录。

2.2 构建镜像

docker build -t="nginx:v1" .

查看镜像是否构建成功:

docker images | grep nginx

如图所示镜像构建完成。

2.3 基于刚才的镜像启动容器

docker run -d -p 80 --name html2 xianchao/nginx:v1

查看容器里部署的nginx网站的内容:

curl 10.0.0.7:49154

注意:

ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

表示容器运行时,自动启动容器里的nginx服务。

构建镜像

3.1 首先准备构建镜像需要的文件

编写的:

3.2 开始构建镜像

docker build -t="tomcat8:v1" .

运行一个容器:

docker run --name tomcat8 -itd -p 8080 tomcat:v1

进入到容器:

docker exec -it tomcat8 /bin/bash

查看进程,看看是否启动成功。

ps -ef | grep tomcat

打开新的终端窗口,查看刚才创建的这个容器的详细信息:

docker ps | grep tomcat

显示如下信息:

4d4c91cff4b5 tomcat8:v1 
"/bin/bash"              About a minute ago Up About a
minute 0.0.0.0:32776->8080/tcp tomcat8

通过上面可以看到,在宿主机上映射的端口是49155。

这样我们请求节点的ip:49155,就可以访问到的内容了。

通过这些步骤可以实现通过构建镜像了。

的网络模式

run创建容器时,可以用--net选项指定容器的网络模式,有以下4种网络模式:

4.1 none模式

启动的容器没有ip地址可动态分配ip,网络none模式是指创建的容器没有网络地址,只有lo网卡。

我们使用以下命令做一个测试:

docker run -itd --name none --net=none --privileged=true centos
docker exec -it none /bin/bash
ip addr

可以发现只有一个lo网卡。

4.2 模式

指定一个容器,使用与其相同的网络。

网络模式是指,创建新容器的时候,通过--net 参数,指定其和已经存在的某个容器共享一个 。如下图所示,右方黄色新创建的,其网卡共享左边容器。因此就不会拥有自己独立的 IP,而是共享左边容器的 IP 172.17.0.2,端口范围等网络资源,两个容器的进程通过 lo 网卡设备通信。

使用以下命令进行测试:

docker run --name container2 --net=container:none  -it --privileged=true centos

可以看到新创建的容器共享前面一个none容器的网卡。

4.3 模式

默认模式,默认选择的情况下,容器启动后会通过DHCP获取一个地址。

#创建桥接网络。

docker run --name bridge -it --privileged=true centos bash

可以看到DHCP随机分配了一个172地址。

4.4 host模式

使用此模式的容器共享主机网络。

接下来进行一个测试:

docker run --name host -it --net=host --privileged=true centos bash

镜像格式文件怎么打开_镜像文件是_镜像文件格式


限时特惠:
本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情

站长微信:Jiucxh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注