docker build 命令-建立一个新的image

build 主要用于建立一个新的image,也就是属于你自己的image

Usage: docker build [OPTIONS] PATH | URL |-Build a new image from the source code at PATH

  --force-rm=falseAlways remove intermediate containers, even after unsuccessful builds
  --no-cache=falseDonotuse cache when building the image
  -q,--quiet=falseSuppress the verbose output generated by the containers
  --rm=trueRemove intermediate containers after a successful build
  -t,--tag=""Repository name (and optionally a tag) to be applied to the resulting image incase of success

使用这个命令来搭配Dockerfile 创建一个image

 PATH or URL  在这2项中的文件被当作资源上下文. 创建image过程中,所有的文件都可能会被标记,比如说执行 ADD 项. 当一个Dockerfile只有 URL STDIN (docker build - < Dockerfile), 那么就没有上下文了.

如果 URL 中指定了一个git repo,那么这个git repo也会被使用。 这个git repo会被当作子目录 (git clone -recursive). A fresh git clone occurs in a temporary directory on your local host, and then this is sent to the Docker daemon as the context. 反正如果使用git你必须处理好git的凭证和假如需要的VPN设置.

 .dockerignore 在 PATH 项的根目录,这提供一种指定忽略的方式. 符合忽略规则的文件或目录将被忽略。

See also:

Dockerfile Reference.

Examples:

$ sudo docker build .Uploading context 10240 bytes
Step1: FROM busybox
Pulling repository busybox
 ---> e9aa60c60128MB/2.284 MB (100%) endpoint: https://cdn-registry-1.docker.io/v1/Step2: RUN ls -lh /--->Runningin9c9e81692ae9
total 24
drwxr-xr-x    2 root     root        4.0KMar122013 bin
drwxr-xr-x    5 root     root        4.0KOct1900:19 dev
drwxr-xr-x    2 root     root        4.0KOct1900:19 etc
drwxr-xr-x    2 root     root        4.0KNov1523:34 lib
lrwxrwxrwx    1 root     root           3Mar122013 lib64 -> lib
dr-xr-xr-x  116 root     root           0Nov1523:34 proc
lrwxrwxrwx    1 root     root           3Mar122013 sbin -> bin
dr-xr-xr-x   13 root     root           0Nov1523:34 sys
drwxr-xr-x    2 root     root        4.0KMar122013 tmp
drwxr-xr-x    2 root     root        4.0KNov1523:34 usr
 ---> b35f4035db3f
Step3: CMD echo Hello world
 --->Runningin02071fceb21b---> f52f38b7823e
Successfully built f52f38b7823e
Removing intermediate container 9c9e81692ae9Removing intermediate container 02071fceb21b

这个 PATH 是 .,也就是当前目录, 所以当期目录中的文件都被 tar.然后发送给了docker daemon。 要注意如果docker在远端服务器,那么发送文件将不会执行Dockerfile过滤, 也就是path中的所有巍峨见都可能被传输而不是ADD指定的文件。

 docker 接到发送的文件时会显示 "Sending build context" message.

如果你想保留生成过程中的中间文件就指定 --rm=false. 这个项不会影响到cache

$ docker build .Uploading context 18.829 MB
Uploading context
Step0: FROM busybox
 --->769b9341d937Step1: CMD echo Hello world
 --->Using cache
 --->99cc1ad10469Successfully built 99cc1ad10469
$ echo ".git">.dockerignore
$ docker build .Uploading context  6.76 MB
Uploading context
Step0: FROM busybox
 --->769b9341d937Step1: CMD echo Hello world
 --->Using cache
 --->99cc1ad10469Successfully built 99cc1ad10469

下面示例.dockerignore 基本上和git 的忽略文件设置一致。

$ sudo docker build -t vieux/apache:2.0.

这个命令和之前的差不多,只不过这个为image取名为vieux/apache 并标记为 2.0

$ sudo docker build -<Dockerfile

docker将stdin输入的指定文件打包进去

$ sudo docker build -< context.tar.gz

支持压缩格式 bzip2, gzip and xz.

$ sudo docker build github.com/creack/docker-firefox

将git repo中的文件指定个打包 使用git:// 

Note: docker build will return a no such file or directory 如果提示文件或目录不存在,那么就需要你仔细核实一下. 确认路径 权限或网络 这些都可能是问题的原因. This is also the reason whyADD ../file will not work.

New layer...
New layer...

转载请注明来自:简果网

转载请注明本文链接:docker build 命令-建立一个新的image[https://www.simapple.com/319.html]

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
英文数字验证码无力,唐诗来了
验证码
请输入下面的验证码
8 加 11 等于
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。