Dockerfile的FROM 和 ARG指令

一 FROM三种格式
FROM <image> [AS <name>]
FROM <image>[:<tag>] [AS <name>]
FROM <image>[@<digest>] [AS <name>]

二 ARG是唯一一个可用于FROM前的指令
1 示例
ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD  /code/run-app
FROM extras:${CODE_VERSION}
CMD  /code/run-extras

2 示例
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version

三 实战1
1 Dockerfile
ARG  CODE_VERSION=latest
FROM busybox:${CODE_VERSION}
RUN echo "hello"
FROM alpine:${CODE_VERSION}
RUN echo "world"
2 测试
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost ~]# cd df
[root@localhost df]# ll
total 4
-rw-r--r--. 1 root root 228 Nov 11 16:48 Dockerfile
[root@localhost df]# ls
Dockerfile
[root@localhost df]# vim Dockerfile
[root@localhost df]# docker build -t vker/arg .
Sending build context to Docker daemon  2.048kB
Step 1/5 : ARG CODE_VERSION=latest
--->
Step 2/5 : FROM busybox:${CODE_VERSION}
---> 6ad733544a63
Step 3/5 : RUN echo "hello"
---> Running in f7fa327289a3
hello
---> b841c0328a0c
Removing intermediate container f7fa327289a3
Step 4/5 : FROM alpine:${CODE_VERSION}
---> 053cde6e8953
Step 5/5 : RUN echo "world"
---> Running in f214d3bed25f
world
---> 3a10f9de8220
Removing intermediate container f214d3bed25f
Successfully built 3a10f9de8220
Successfully tagged vker/arg:latest
[root@localhost df]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vker/arg            latest              3a10f9de8220        6 seconds ago       3.96MB
<none>              <none>              b841c0328a0c        8 seconds ago       1.13MB
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost df]# docker inspect b8
[
    {
        "Id": "sha256:b841c0328a0c0754eec7f5b6a137e3df85273993803dea0bcd108c40495d3797",
        "RepoTags": [],
        "RepoDigests": [],
        "Parent": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
        "Comment": "",
        "Created": "2017-11-11T09:56:05.183037956Z",
        "Container": "f7fa327289a3c33e3a4409bfd05e6d531057242c220ade341074170dcf9e8a8c",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "echo \"hello\""
            ],
            "ArgsEscaped": true,
            "Image": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": [],
            "Labels": null
        },
        "DockerVersion": "17.09.0-ce",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "sh"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:6ad733544a6317992a6fac4eb19fe1df577d4dec7529efec28a5bd0edad0fd30",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": [],
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 1129289,
        "VirtualSize": 1129289,
        "GraphDriver": {
            "Data": {
                "RootDir": "/var/lib/docker/overlay/ed5d277761174e507cead0c30199fcfcf1e19e1cc476bbf70ea401fffda8a0ca/root"
            },
            "Name": "overlay"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:0271b8eebde3fa9a6126b1f2335e170f902731ab4942f9f1914e77016540c7bb"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
四 实战2
[root@localhost df]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vker/arg            latest              3a10f9de8220        6 minutes ago       3.96MB
<none>              <none>              b841c0328a0c        6 minutes ago       1.13MB
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost df]# docker rmi 3a b8
Untagged: vker/arg:latest
Deleted: sha256:3a10f9de822086cc0f880a0cc09b88528eda7656687e9d9c066f3b294e321f5e
Deleted: sha256:b841c0328a0c0754eec7f5b6a137e3df85273993803dea0bcd108c40495d3797
[root@localhost df]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost df]# vim Dockerfile
[root@localhost df]# cat Dockerfile
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
[root@localhost df]# docker build -t vker/arg .
Sending build context to Docker daemon  2.048kB
Step 1/4 : ARG VERSION=latest
--->
Step 2/4 : FROM busybox:$VERSION
---> 6ad733544a63
Step 3/4 : ARG VERSION
---> Running in 8939dbe998e2
---> ac5b7017cdf9
Removing intermediate container 8939dbe998e2
Step 4/4 : RUN echo $VERSION > image_version
---> Running in 9c6f12bad08d
---> 1cda70c9bb58
Removing intermediate container 9c6f12bad08d
Successfully built 1cda70c9bb58
Successfully tagged vker/arg:latest
[root@localhost df]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vker/arg            latest              1cda70c9bb58        7 seconds ago       1.13MB
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost df]# docker run -it 1c
/ # ls
bin            etc            image_version  root           tmp            var
dev            home           proc           sys            usr
/ # cat image_version
latest
/ # [root@localhost df]# vim Dockerfile
[root@localhost df]# docker build -t vker/arg:0.1 .
Sending build context to Docker daemon  2.048kB
Step 1/3 : ARG VERSION=latest
--->
Step 2/3 : FROM busybox:$VERSION
---> 6ad733544a63
Step 3/3 : RUN echo $VERSION > image_version
---> Running in 854528ede093
---> 7821096bf139
Removing intermediate container 854528ede093
Successfully built 7821096bf139
Successfully tagged vker/arg:0.1
[root@localhost df]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
vker/arg            0.1                 7821096bf139        11 seconds ago      1.13MB
vker/arg            latest              1cda70c9bb58        3 minutes ago       1.13MB
busybox             latest              6ad733544a63        7 days ago          1.13MB
alpine              latest              053cde6e8953        7 days ago          3.96MB
[root@localhost df]# docker run -it 78
/ # ls
bin            etc            image_version  root           tmp            var
dev            home           proc           sys            usr
/ # cat image_version
/ # [root@localhost df]# vim Dockerfile
[root@localhost df]# cat Dockerfile
ARG VERSION=latest
FROM busybox:$VERSION
RUN echo $VERSION > image_version


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值