Docker命令-build

命令

docker build

描述

Build an image from a Dockerfile
通过Dockerfile文件构建镜像

用法

1
docker build [OPTIONS] PATH | URL | -

选项

1
2
3
4
5
6
7
8
Options:
--file , -f 指定Dockerfile文件 (Default is 'PATH/Dockerfile')
--label Set metadata for an image
--no-cache Do not use cache when building the image
--pull Always attempt to pull a newer version of the image
--quiet , -q 静默模式,不显示构建过程,只在构建成功后显示镜像ID
--rm Remove intermediate containers after a successful build, default is true
--tag , -t 指定tag标记,格式为name:tag

注意

1
2
3
4
5
6
7
8
9
10
# git仓库路径说明,格式为 git仓库地址#tag或branch分支名称:子目录
Build Syntax Suffix Commit Used Build Context Used
myrepo.git refs/heads/master /
myrepo.git#mytag refs/tags/mytag /
myrepo.git#mybranch refs/heads/mybranch /
myrepo.git#pull/42/head refs/pull/42/head /
myrepo.git#:myfolder refs/heads/master /myfolder
myrepo.git#master:myfolder refs/heads/master /myfolder
myrepo.git#mytag:myfolder refs/tags/mytag /myfolder
myrepo.git#mybranch:myfolder refs/heads/mybranch /myfolder

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 通过git仓库的URL构建
# 需要先安装最新版的git命令,原理是先通过git clone --recursive命令克隆项目,默认存储在/tmp目录,然后再构建镜像
$ docker build https://github.com/jessfraz/dockerfiles.git#master:ab
# 构建dockerfile.git仓库的master分支下的/nginx目录,nginx目录下必须有Dockerfile文件
$ docker build https://github.com/demo/dockerfile.git#master:nginx
# 构建本地git仓库的master和master下的/nginx目录,根目录和/nginx目录下必须有Dockerfile文件
$ docker build -t mynginx http://git.a.com/root/dockerdemo.git
$ docker build -t mynginx http://git.a.com/root/dockerdemo.git#master:nginx

# centos7默认的git版本不支持直接通过URL构建,需要使用ius源安装最新的git222
$ git version
git version 1.8.3.1
# centos7卸载默认的git,然后通过ius源安装新版git
$ git version
git version 2.22.5
# ubuntu20.04默认的git版本可以直接通过URL构建
# git version
git version 2.17.1

# 通过压缩包构建
$ docker build http://server/context.tar.gz

# 通过Dockerfile文件构建
$ more Dockerfile
FROM busybox
RUN echo "hello world"
$ docker build .

# -t 指定标签,可以指定多个
$ docker build -t vieux/apache:2.0 .
$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .
# -f 指定Dockerfile文件
$ docker build -f Dockerfile.debug .
$ docker build -f dockerfiles/Dockerfile.debug -t myapp_debug .
$ docker build -f dockerfiles/Dockerfile.prod -t myapp_prod .
$ docker build /home/www/myapp

# 给未知镜像添加tag
$ docker tag da1e8733091a demo:v1